Programeri SQLite razvijaju projekt za implementaciju mogućnosti kompilacije biblioteke u međukod WebAssembly, koji može raditi u web pregledniku i pogodna je za organizaciju rada s bazama podataka iz web aplikacija napisanih u JavaScriptu. Kod za podršku WebAssembly dodan je u glavni repozitorij projekta. Za razliku od WebSQL API-a, koji se temelji na SQLite-u, WASM SQLite je potpuno izoliran od preglednika i ne utječe na njegovu sigurnost (Google je odlučio odustati od podrške za WebSQL u Chromeu nakon nekoliko ranjivosti u SQLite-u koje su se mogle iskoristiti putem WebSQL za napad na preglednik).
Cilj projekta je pružiti funkcionalnu JavaScript omotnicu identičnu API-ju SQLite. Web programerima se nudi visokonaponski objektno-orijentirani interfejs za rad s podacima u stilu sql.js ili Node.js, omotnica nad niskonaponskim C API-jem i API-jem temeljenim na mehanizmu Web Worker, što omogućuje stvaranje asinkronih obrtnika koji se izvršavaju u posebnim nitima. Kako bi se prikrile složenosti organizacije rada s nitima putem API-ja temeljenog na Web Worker-u, tako se razvija i opcija programsko sučelje temeljenog na mehanizmu Promise.
Podaci koje web aplikacije pohranjuju u WASM verziji SQLite mogu biti lokalizirani unutar trenutne sesije (gube se nakon ponovnog učitavanja stranica) ili pohranjeni na strani klijenta (ostaju između sesija). Za trajnu pohranu pripremljeni su backendovi za smještaj podataka u lokalni fajl sistem koristeći OPFS (Origin-Private FileSystem, proširenje API-ja File System Access, dostupno za sada samo u preglednicima temeljenim na WebKitu i Chromiumu) i u lokalnim pregledničkim skladištima temeljima na API-ju window.localStorage i window.sessionStorage. U slučaju korištenja localStorage/sessionStorage, podaci se odražavaju u odgovarajući skladišta u formatu ključ/vrijednost, dok su za OPFS predviđena dva rješenja: simulacija virtualnog fajl sistema pomoću WASMFS i odvojena implementacija sqlite3_vfs, koja nudi sloj SQLite VFS temeljen na OPFS.
Za izgradnju SQLite-a u WASM reprezentaciju koristi se Emscripten kompajler (s dovoljno je izgraditi proširenje ext/wasm: „./configure —enable-all; make sqlite3.c; cd ext/wasm; make”). Na izlazu se formiraju datoteke sqlite3.js i sqlite3.wasm, koje se mogu uključiti u svoj JavaScript projekt (primjer HTML i JavaScript).
Izvor: opennet.ru
