Daniel Bernstein hat die cdb-Bibliothek aktualisiert

Daniel Bernstein (Daniel J. Bernstein), ein bekannter Experte im Bereich der Kryptografie und der Entwicklung von sicherer Software, der Projekte wie qmail, djbdns, NaCl, Ed25519, Curve25519 und ChaCha20-Poly1305 entwickelt hat, hat die Version des Projekts cdb 20250121 veröffentlicht, die ein Datenformat und eine begleitende Bibliothek zur Integration von Funktionen zur Arbeit mit Datenbanken in Form von Schlüssel/Wert anbietet. Die 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 64-Bit-Datentypen 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 durfte die Größe der Datenbank 4 GB nicht überschreiten). Die Datenbank ist sehr kompakt und verwendet einen 4096-Byte-Header und 48 Byte Verwaltungsinformationen pro Datensatz (für die 32-Bit-Version sind es 2048 Byte und 24 Byte pro Datensatz). Bei Zugriffen auf die Datenbank werden nur zwei Zugriffsoperationen auf die Festplatte ausgeführt, wenn der Schlüssel vorhanden ist, und eine, wenn er nicht vorhanden ist. Atomare Datenbankersetzungen werden unterstützt, die gegenüber unerwarteten Abschaltungen resistent sind und den Lesezugriff nicht blockieren.

Weitere Änderungen:

  • Unterstützung für den Build mit dem Konfigurationsskript und Installation mit dem Befehl „make install“.
  • Die Bindung der Test-Skripte 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 aufgeteilt. Die Schnittstelle hier wurde bereinigt.
  • Unbenutzte 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 alte Funktionsdefinitionsstile, leere Prototypen und das alte Stil für main() zu beenden.
  • Definitionen von const und static wurden eingeführt.
  • Während des Builds wurde das Flag „-Wall“ aktiviert, und der Code wurde bereinigt, um Warnungen zu beseitigen.
  • Bei der Kompilierung wurden die Optionen -fwrapv, -fno-delete-null-pointer-checks, -fno-strict-aliasing und -fno-strict-overflow eingeschlossen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4