SQLite adiciona suporte WASM para usar o DBMS em um navegador web

Os desenvolvedores do SQLite estão desenvolvendo um projeto para implementar a capacidade de compilar a biblioteca em código intermediário WebAssembly, capaz de rodar em um navegador web e adequado para organizar o trabalho com o banco de dados de aplicações web em JavaScript. O código para suportar WebAssembly foi adicionado ao repositório principal do projeto. Ao contrário da API WebSQL, que é baseada em SQLite, o WASM SQLite é completamente isolado do navegador e não afeta sua segurança (o Google decidiu descontinuar o suporte para WebSQL no Chrome depois que várias vulnerabilidades no SQLite poderiam ser exploradas através do WebSQL para atacar o navegador) .

O objetivo do projeto é fornecer uma estrutura JavaScript funcional com funcionalidade idêntica à API SQLite. Os desenvolvedores da Web recebem uma interface orientada a objetos de alto nível para trabalhar com dados no estilo sql.js ou Node.js, uma ligação sobre a API C de baixo nível e uma API baseada no mecanismo Web Worker, que permite você cria manipuladores assíncronos executados em threads separados. Para ocultar as complexidades da organização do trabalho com fluxos na API baseada no Web Worker, uma versão da interface do programa baseada no mecanismo Promise também está sendo desenvolvida.

Os dados que os aplicativos web armazenam na versão WASM do SQLite podem ser localizados na sessão atual (perdidos após o recarregamento da página) ou armazenados no lado do cliente (salvos entre sessões). Para armazenamento permanente, foram preparados backends para colocação de dados no sistema de arquivos local usando OPFS (Origin-Private FileSystem, uma extensão da API File System Access, atualmente disponível apenas em navegadores baseados em WebKit e Chromium) e em armazenamento de navegador local baseado na API window.localStorage e window.sessionStorage. Ao usar localStorage/sessionStorage, os dados são refletidos nos armazenamentos correspondentes em um formato chave/valor, e ao usar OPFS, há duas opções: simular um FS virtual usando WASMFS e uma implementação separada de sqlite3_vfs, oferecendo uma camada SQLite VFS baseada no OPFS.

Para construir SQLite em uma visão WASM, o compilador Emscripten é usado (basta construir a extensão ext/wasm: “./configure —enable-all; make sqlite3.c; cd ext/wasm; make”). A saída são os arquivos sqlite3.js e sqlite3.wasm, que podem ser incluídos em seu projeto JavaScript (exemplo HTML e JavaScript).

Fonte: opennet.ru

Adicionar um comentário