W SQLite dodano wsparcie dla WASM, aby umożliwić korzystanie z bazy danych w przeglądarce internetowej.

Programiści SQLite rozwijają projekt realizacji możliwości kompilacji biblioteki do pośredniego kodu WebAssembly, który można uruchomić w przeglądarce internetowej i który nadaje się do obsługi baz danych z aplikacji internetowych w języku JavaScript. Kod wspierający WebAssembly został dodany do głównego repozytorium projektu. W przeciwieństwie do API WebSQL, które opiera się na SQLite, WASM SQLite jest całkowicie izolowany od przeglądarki i nie wpływa na jej bezpieczeństwo (Google postanowił zaprzestać wsparcia dla WebSQL w Chrome po kilku lukach w SQLite, które można było wykorzystać przez WebSQL do ataków na przeglądarkę).

Celem projektu jest dostarczenie działającego opakowania JavaScript, które będzie identyczne pod względem funkcjonalności z API SQLite. Web-deweloperzy otrzymają wysokopoziomowy, obiektowo-orientowany interfejs do pracy z danymi w stylu sql.js lub Node.js, opakowanie nad niskopoziomowym API C oraz API oparte na mechanizmie Web Worker, który umożliwia tworzenie asynchronicznych obsługiwaczy uruchamianych w osobnych wątkach. Aby ukryć szczegóły dotyczące organizacji pracy z wątkami na bazie API Web Worker, rozwijana jest również wersja interfejsu programistycznego oparta na mechanizmie Promise.

Dane, które aplikacje internetowe przechowują w WASM-wersji SQLite, mogą być lokalizowane w ramach bieżącej sesji (utracone po przeładowaniu stron) lub przechowywane po stronie klienta (zapisywane między sesjami). W celu trwałego przechowywania przygotowane zostały backendy do umieszczania danych w lokalnym systemie plików przy użyciu OPFS (Origin-Private FileSystem, rozszerzenie do API dostępu do systemu plików, dostępne tylko w przeglądarkach opartych na WebKit i Chromium) oraz w lokalnych pamięciach przeglądarki opartych na API window.localStorage i window.sessionStorage. W przypadku korzystania z localStorage/sessionStorage dane są odzwierciedlane w odpowiednich magazynach w formacie klucz/wartość, a przy użyciu OPFS przewidziano dwa warianty: symulację wirtualnego systemu plików przy użyciu WASMFS oraz oddzielną implementację sqlite3_vfs, która oferuje warstwę SQLite VFS opartą na OPFS.

Do kompilacji SQLite do reprezentacji WASM użyto kompilatora Emscripten (wystarczy skompilować rozszerzenie ext/wasm: «./configure —enable-all; make sqlite3.c; cd ext/wasm; make»). Na wyjściu generowane są pliki sqlite3.js i sqlite3.wasm, które można uwzględnić w swoim projekcie JavaScript (przykład HTML i JavaScript).

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster