SQLite-udviklerne arbejder på et projekt, der muliggør kompilering af biblioteket til WebAssembly-mellemkode, som kan køre i en webbrowser og er egnet til at organisere arbejde med databaser i webapplikationer skrevet i JavaScript. Koden til understøttelse af WebAssembly er tilføjet til projektets hovedrepository. I modsætning til WebSQL API, som er baseret på SQLite, er WASM SQLite fuldstændig isoleret fra browseren og påvirker dermed dens sikkerhed (Google har besluttet at droppe understøttelsen af WebSQL i Chrome efter flere sårbarheder i SQLite, der kunne udnyttes via WebSQL til at angribe browseren).
Projektets mål er at tilbyde en fungerende JavaScript-wrapper, der er funktionelt identisk med SQLite API. Webudviklere får et høj-niveau objektorienteret interface til at arbejde med data i stil med sql.js eller Node.js, en wrapper over det lav-niveau C API og et API baseret på Web Worker-mekanismer, som muliggør oprettelse af asynkrone håndtere, der kører i separate tråde. For at skjule detaljerne ved arbejdet med tråde over Web Worker-baserede API, udvikles der også en version af softwareinterfacet baseret på Promise-mekanismen.
Data, som webapplikationer gemmer i WASM-udgaven af SQLite, kan lokaliseres inden for den aktuelle session (mistes efter genindlæsning af sider) eller gemmes på klientens side (gemmes mellem sessioner). For permanent opbevaring er der forberedt backend-løsninger til opbevaring af data i det lokale filsystem ved hjælp af OPFS (Origin-Private FileSystem, en udvidelse til File System Access API, der kun er tilgængelig i browserversioner baseret på WebKit og Chromium) samt i lokale browserlagre baseret på window.localStorage og window.sessionStorage API. Ved brug af localStorage/sessionStorage afspejles dataene i de relevante lagre i nøgle/værdi-format, mens der ved brug af OPFS tilbydes to muligheder: simulering af virtuel filsystem ved hjælp af WASMFS og en særskilt implementering af sqlite3_vfs, der tilbyder et SQLite VFS-lag baseret på OPFS.
For at samle SQLite i en WASM-repræsentation bruges Emscripten-kompilatoren (det er tilstrækkeligt at samle udvidelsen ext/wasm: «./configure --enable-all; make sqlite3.c; cd ext/wasm; make»). Resultatet er filerne sqlite3.js og sqlite3.wasm, som kan inkluderes i dit JavaScript-projekt (eksempel på HTML og JavaScript).
Kilde: opennet.ru
