Le projet libSQL tente de créer un fork de la base de données SQLite, axé sur l'ouverture à la participation des développeurs de la communauté et la promotion d'innovations qui dépassent l'objectif initial de SQLite. La raison de la création de ce fork est la politique plutÎt stricte de SQLite concernant l'acceptation du code externe de la communauté, en raison d'un besoin de promouvoir des améliorations. Le code du fork est distribué sous la licence MIT (SQLite est proposé comme domaine public).
Les crĂ©ateurs du fork ont l'intention de maintenir la compatibilitĂ© avec la version principale de SQLite et de respecter le mĂȘme niveau de qualitĂ©, en conservant l'ensemble des scĂ©narios de test et en l'Ă©largissant progressivement Ă mesure que de nouvelles fonctionnalitĂ©s sont ajoutĂ©es. Pour le dĂ©veloppement de nouvelles fonctionnalitĂ©s, il est proposĂ© d'utiliser le langage Rust tout en conservant la partie fondamentale en langage C. Si la politique du projet principal SQLite concernant l'acceptation des modifications change, les dĂ©veloppeurs de libSQL ont l'intention de transfĂ©rer les modifications accumulĂ©es vers le projet principal et de s'impliquer dans son dĂ©veloppement.
Parmi les idées pour l'expansion possible des fonctionnalités de SQLite, on mentionne :
- L'intĂ©gration d'outils pour construire des bases de donnĂ©es distribuĂ©es, fonctionnant au niveau mĂȘme de la bibliothĂšque, plutĂŽt que par la rĂ©plication des modifications dans le systĂšme de fichiers (LiteFS), et sans dĂ©velopper un produit sĂ©parĂ© (dqlite, rqlite, ChiselStore).
- L'optimisation pour l'utilisation d'API asynchrones, comme l'interface io_uring fournie par le noyau Linux.
- La possibilitĂ© d'utiliser SQLite dans le noyau Linux, similaire au support dans le noyau de la machine virtuelle eBPF, pour les situations oĂč il est nĂ©cessaire de conserver des ensembles de donnĂ©es Ă partir du noyau qui ne tiennent pas en mĂ©moire vive.
- Le support des fonctions définies par l'utilisateur, écrites dans n'importe quel langage de programmation et compilées en code intermédiaire WebAssembly.
Source : opennet.ru
