Els desenvolupadors de SQLite estan desenvolupant un projecte per implementar la capacitat de compilar la biblioteca en codi intermedi WebAssembly, capaç d'executar-se en un navegador web i adequat per organitzar el treball amb la base de dades des d'aplicacions web en JavaScript. S'ha afegit codi per donar suport a WebAssembly al repositori principal del projecte. A diferència de l'API de WebSQL, que es basa en SQLite, WASM SQLite està completament aïllat del navegador i no afecta la seva seguretat (Google va decidir deixar de suportar WebSQL a Chrome després que diverses vulnerabilitats de SQLite poguessin ser explotades mitjançant WebSQL per atacar el navegador) .
L'objectiu del projecte és proporcionar un marc de treball JavaScript que sigui idèntic en funcionalitat a l'API SQLite. Els desenvolupadors web disposen d'una interfície d'alt nivell orientada a objectes per treballar amb dades a l'estil de sql.js o Node.js, una vinculació sobre l'API C de baix nivell i una API basada en el mecanisme Web Worker, que permet podeu crear controladors asíncrons executats en fils separats. Per amagar les complexitats d'organitzar el treball amb fluxos a la part superior de l'API basada en Web Worker, també s'està desenvolupant una versió de la interfície del programa basada en el mecanisme Promise.
Les dades que les aplicacions web emmagatzemen a la versió WASM de SQLite es poden localitzar dins de la sessió actual (perdre's després de recarregar la pàgina) o emmagatzemar-se al costat del client (desar-se entre sessions). Per a l'emmagatzematge permanent, s'han preparat backends per col·locar dades al sistema de fitxers local mitjançant OPFS (Origin-Private FileSystem, una extensió de l'API d'accés al sistema de fitxers, actualment només disponible en navegadors basats en WebKit i Chromium) i en emmagatzematge local basat en navegador. a l'API window.localStorage i window.sessionStorage. Quan s'utilitza localStorage/sessionStorage, les dades es reflecteixen als magatzems corresponents en un format clau/valor, i quan s'utilitza OPFS, hi ha dues opcions: simular un FS virtual mitjançant WASMFS i una implementació independent de sqlite3_vfs, que ofereix una capa SQLite VFS basada. a OPFS.
Per crear SQLite en una vista WASM, s'utilitza el compilador Emscripten (n'hi ha prou amb construir l'extensió ext/wasm: “./configure —enable-all; make sqlite3.c; cd ext/wasm; make”). La sortida són fitxers sqlite3.js i sqlite3.wasm, que es poden incloure al vostre projecte JavaScript (exemple d'HTML i JavaScript).
Font: opennet.ru