Daniel J. Bernstein, ein renommierter Experte für Kryptographie und sichere Softwareentwicklung, der Projekte wie qmail, djbdns, NaCl, Ed25519, Curve25519 und ChaCha20-Poly1305 ins Leben gerufen hat, hat die Veröffentlichung des cdb-Projekts 20250121 angekündigt, das ein Datenlagerformat und eine zugehörige Bibliothek zur Integration von Datenbankfunktionen in Form von Schlüssel/Wert in Anwendungen bietet. Diese Veröffentlichung erfolgt mehr als 25 Jahre nach dem letzten Update von cdb 0.75, das im Februar 2000 erstellt wurde.
In der neuen Version wurde das cdb64-Format implementiert, das auf Strukturen mit 64-Bit-Typen umgestellt wurde. Auf 64-Bit-Plattformen ermöglicht das neue Format die Erstellung von Datenbanken mit einer Größe von bis zu einem Exabyte (zuvor konnte die Datenbankgröße 4 GB nicht überschreiten). Die Datenbank ist sehr kompakt und nutzt einen 4096-Byte-Header sowie 48 Byte an Metainformationen pro Datensatz (für die 32-Bit-Version beträgt der Header 2048 Byte und 24 Byte pro Datensatz). Bei Zugriffen auf die Datenbank werden insgesamt nur zwei Diskzugriffe bei Vorhandensein des Schlüssels und einer bei Nichtvorhandensein durchgeführt. Eine atomare Datenbankersetzung wird unterstützt, die resistent gegen unerwartete Unterbrechungen ist und den Lesezugriff nicht sperrt.
Weitere Änderungen:
- Unterstützung für die Erstellung mit dem Skript configure und der Installation über den Befehl „make install“.
- Die Bindung von Test-Szenarien an csh wurde entfernt.
- Alle internen Ganzzahlen wurden durch den Typ „num“ ersetzt, der als „long long“ definiert ist. Die Funktionen uint32, fmt und scan wurden durch Funktionen ersetzt, die mit dem Typ num arbeiten.
- Die Programmierschnittstelle zur Arbeit mit Buffern wurde in inbuf und outbuf unterteilt. Die hierarchische Schnittstelle wurde bereinigt.
- Nicht verwendete Funktionsdefinitionen wurden aus dem Code entfernt.
- Die Verwendung von Wrappern wie str_len, alloc, uint32, exit, error und systype wurde eingestellt.
- Der Code wurde überarbeitet, um die Verwendung veralteter C-Konstruktionen, wie z. B. ältere Funktionsdefinitionen, leere Prototypen und die alte Hauptprogrammdefinition main(), zu beenden.
- Die Definitionen von const und static wurden eingeführt.
- Bei der Erstellung wurde die Option „-Wall“ aktiviert, und der Code wurde bereinigt, um Warnungen zu beheben.
- Bei der Kompilierung wurden die Optionen -fwrapv, -fno-delete-null-pointer-checks, -fno-strict-aliasing und -fno-strict-overflow aktiviert.
Quelle: opennet.ru
