Utvecklarna av SQLite utvecklar ett projekt för att möjliggöra kompilering av biblioteket till WebAssembly-mellankod, som kan köras i webblÀsaren och Àr lÀmpligt för att hantera databaser frÄn webbapplikationer skrivna i JavaScript. Koden för att stödja WebAssembly har lagts till i det huvudsakliga projektlagret. Till skillnad frÄn WebSQL-API, som baseras pÄ SQLite, Àr WASM SQLite helt isolerad frÄn webblÀsaren och pÄverkar inte dess sÀkerhet (Google beslutade att avbryta stödet för WebSQL i Chrome efter flera sÄrbarheter i SQLite som kunde utnyttjas via WebSQL för att attackera webblÀsaren).
MÄlet med projektet Àr att tillhandahÄlla en fungerande JavaScript-bindning som Àr identisk i funktionalitet med SQLite-API. Webbutvecklare ges ett högre nivÄ objektorienterat grÀnssnitt för att arbeta med data i stil med sql.js eller Node.js, en bindning över det lÄgnivÄ C-API och API baserat pÄ Web Worker-mekanismer, som möjliggör skapandet av asynkrona hanterare som körs i separata trÄdar. För att dölja detaljerna i trÄdhantering ovanpÄ API baserat pÄ Web Worker utvecklas ocksÄ en version av grÀnssnittet baserat pÄ Promise-mekanismen.
Data som webbapplikationer sparar i WASM-versionen av SQLite kan lokaliseras inom ramen för den aktuella sessionen (förloras efter omstart av sidor) eller sparas pÄ klientsidan (sparas mellan sessioner). För bestÀndig lagring har backend-lösningar för att lagra data pÄ den lokala filsystemet via OPFS (Origin-Private FileSystem, en utvidgning av API för filsystemÄtkomst, som för nÀrvarande endast Àr tillgÀnglig i WebKit- och Chromium-baserade webblÀsare) och i lokala webblÀsartjÀnster baserade pÄ window.localStorage och window.sessionStorage förberetts. I fallet med localStorage/sessionStorage Äterspeglas data i respektive lagringsutrymmen i nyckel/vÀrde-format, medan OPFS erbjuder tvÄ alternativ: simulering av ett virtuellt filsystem med hjÀlp av WASMFS och en separat implementation av sqlite3_vfs som erbjuder ett SQLite VFS-lager baserat pÄ OPFS.
För att kompilera SQLite till WASM-representation anvÀnds Emscripten-kompilatorn (det Àr tillrÀckligt att kompilera tillÀgg ext/wasm: "./configure --enable-all; make sqlite3.c; cd ext/wasm; make"). Utdata blir filer sqlite3.js och sqlite3.wasm, som kan inkluderas i ditt JavaScript-projekt (exempel HTML och JavaScript).
KĂ€lla: opennet.ru
