SQLite ajoute la prise en charge de WASM pour l'utilisation du SGBD dans un navigateur Web

Les développeurs SQLite développent un projet pour implémenter la possibilité de compiler la bibliothèque en code intermédiaire WebAssembly, capable de s'exécuter dans un navigateur Web et adapté à l'organisation du travail avec la base de données à partir d'applications Web en JavaScript. Le code pour prendre en charge WebAssembly a été ajouté au référentiel principal du projet. Contrairement à l'API WebSQL, qui est basée sur SQLite, WASM SQLite est complètement isolé du navigateur et n'affecte pas sa sécurité (Google a décidé de ne plus prendre en charge WebSQL dans Chrome après que plusieurs vulnérabilités de SQLite aient pu être exploitées via WebSQL pour attaquer le navigateur). .

L'objectif du projet est de fournir un framework JavaScript fonctionnel dont les fonctionnalités sont identiques à celles de l'API SQLite. Les développeurs Web disposent d'une interface orientée objet de haut niveau pour travailler avec des données dans le style de sql.js ou Node.js, d'une liaison sur l'API C de bas niveau et d'une API basée sur le mécanisme Web Worker, qui permet vous devez créer des gestionnaires asynchrones exécutés dans des threads séparés. Pour masquer les subtilités de l'organisation du travail avec des flux au-dessus de l'API basée sur Web Worker, une version de l'interface du programme basée sur le mécanisme Promise est également en cours de développement.

Les données que les applications Web stockent dans la version WASM de SQLite peuvent être localisées dans la session en cours (perdues après le rechargement de la page) ou stockées côté client (enregistrées entre les sessions). Pour le stockage permanent, les backends ont été préparés pour placer les données dans le système de fichiers local à l'aide d'OPFS (Origin-Private FileSystem, une extension de l'API File System Access, actuellement disponible uniquement dans les navigateurs basés sur WebKit et Chromium) et dans le stockage du navigateur local basé sur sur l'API window.localStorage et window.sessionStorage. Lors de l'utilisation de localStorage/sessionStorage, les données sont reflétées dans les magasins correspondants dans un format clé/valeur, et lors de l'utilisation d'OPFS, il existe deux options : simuler un FS virtuel à l'aide de WASMFS et une implémentation distincte de sqlite3_vfs, offrant une couche SQLite VFS basée sur OPFS.

Pour construire SQLite dans une vue WASM, le compilateur Emscripten est utilisé (il suffit de construire l'extension ext/wasm : « ./configure —enable-all ; make sqlite3.c ; cd ext/wasm ; make »). Le résultat est constitué de fichiers sqlite3.js et sqlite3.wasm, qui peuvent être inclus dans votre projet JavaScript (exemple HTML et JavaScript).

Source: opennet.ru

Ajouter un commentaire