SQLite arendajad töötavad välja projekti, mis lubab kompileerida teeki WebAssembly vahekaardiks, mis on võimeline töötama veebibrauseris ja sobib andmebaaside haldamiseks veebirakendustes JavaScripti keeles. WebAssembly toe kood on lisatud projekti pearepole. Erinevalt WebSQL API-st, mis põhineb SQLite'il, on WASM SQLite täielikult isoleeritud brauserist ja ei mõjuta selle turvalisust (Google otsustas Chrome'is loobuda WebSQL kätkest pärast mitmeid SQLite'i haavatavusi, mida oli võimalik ära kasutada WebSQL kaudu brauseri ründamiseks).
Projekti eesmärk on pakkuda töötavat JavaScripti seotud teeki, mis on funktsionaalsuses võrreldav SQLite API-ga. Veebiarendajatele pakutakse kõrgetasemelist objekt-orienteeritud liidest andmete töötlemiseks sql.js või Node.js stiilis, madalat C API-d ning Web Workeri mehhanismiga põhinevat API-d, mis võimaldab luua asünkrone töötlejaid, mis töötavad eraldi lõimedes. Ajutise töötlemise varjamine Web Workeri põhiste API-de taustal eeldab ka lubava Promise mehhanismi põhjalise API arendamist.
Andmed, mida veebirakendused salvestavad WASM-i versioonis SQLite, võivad olla lokaalsed hetke sessioonis (kaovad pärast lehe uuesti laadimist) või salvestatud kliendi poole (salvestatakse sessioonide vahel). Püsivaks salvestamiseks on ette valmistatud tagaplaanid andmete salvestamiseks kohalikku failisüsteemi OPFS (Origin-Private FileSystem, laienemine File System Access API-le, mis on hetkel saadaval vaid WebKit ja Chromiumile põhinevates brauserites) ja kohalikes veebibrauseri salvestustes, mis põhinevad API-l window.localStorage ja window.sessionStorage. Kui kasutatakse localStorage/sessionStorage, peegelduvad andmed vastavates salvestustes võtme/väärtuse formaadis, ning OPFS-i puhul on kavandatud kaks varianti: virtuaalse failisüsteemi simuleerimine WASMFS-i abil ja eraldi rakendus sqlite3_vfs, mis pakub SQLite VFS-kiht OPFS-i põhjal.
SQLite kogumiseks WASM-esitluses kasutatakse Emscripteni kompilaatorit (ainult on vajalik kompileerida laiendus ext/wasm: «./configure --enable-all; make sqlite3.c; cd ext/wasm; make»). Väljundiks on failid sqlite3.js ja sqlite3.wasm, mida saab lisada oma JavaScripti projekti (HTML ja JavaScripti näide).
Allikas: opennet.ru
