Das Projekt libSQL versucht, einen Fork der SQLite-Datenbank zu erstellen, der auf Offenheit für die Beteiligung von Entwicklern aus der Community und die Förderung von Innovationen abzielt, die über die ursprüngliche Bestimmung von SQLite hinausgehen. Als Grund für die Schaffung des Forks wird die recht rigorose Politik von SQLite bezüglich der Annahme von Fremdcode aus der Community genannt, obwohl es Bedarf an der Förderung von Verbesserungen gibt. Der Code des Forks wird unter der MIT-Lizenz verbreitet (SQLite wird als gemeinfreies Gut bereitgestellt).
Die Ersteller des Forks beabsichtigen, die Kompatibilität mit der Hauptversion von SQLite zu wahren und das gleiche Qualitätsniveau beizubehalten, indem sie den Satz von Testfällen beibehalten und ihn schrittweise erweitern, während Innovationen hinzugefügt werden. Für die Entwicklung neuer Funktionen wird vorgeschlagen, die Verwendung der Programmiersprache Rust zu ermöglichen, während der Basiscode weiterhin in C bleibt. Sollten sich die Richtlinien des Hauptprojekts SQLite hinsichtlich der Annahme von Änderungen ändern, beabsichtigen die Entwickler von libSQL, die gesammelten Änderungen in das Hauptprojekt zu übertragen und an dessen Entwicklung teilzunehmen.
Zu den Ideen für eine mögliche Erweiterung der Funktionen von SQLite werden folgende Punkte genannt:
- Integration von Mitteln zum Aufbau verteilter Datenbanken, die auf Ebene der Bibliothek arbeiten, anstatt Änderungen über die Dateisystemreplikation zu implementieren (LiteFS), ohne ein separates Produkt zu entwickeln (dqlite, rqlite, ChiselStore).
- Optimierung für die Nutzung asynchroner APIs, wie sie durch die Linux-Kernel-Schnittstelle io_uring bereitgestellt werden.
- Die Möglichkeit, SQLite im Linux-Kernel zu verwenden, analog zur Unterstützung im Kernel der virtuellen Maschine eBPF, für Situationen, in denen Datensätze aus dem Kernel gespeichert werden müssen, die nicht in den Arbeitsspeicher passen.
- Unterstützung benutzerdefinierter Funktionen, die in beliebigen Programmiersprachen geschrieben und in WebAssembly-Intermediate-Code kompiliert sind.
Quelle: opennet.ru
