Daniel J. Bernstein, een bekende expert op het gebied van cryptografie en het maken van beveiligde software, die projecten heeft ontwikkeld zoals qmail, djbdns, NaCl, Ed25519, Curve25519 en ChaCha20-Poly1305, heeft de uitgave van het cdb-project 20250121 gepubliceerd, dat een gegevensopslagsysteem en een bijbehorende bibliotheek biedt voor het integreren van database-functionaliteit in de vorm van sleutel/waarde in applicaties. Deze uitgave is meer dan 25 jaar na de laatste update van cdb 0.75, die in februari 2000 is gemaakt, gerealiseerd.
In deze nieuwe versie is het cdb64-formaat geïmplementeerd, dat is vertaald naar structuren met 64-bits types. Op 64-bits platforms stelt het nieuwe formaat gebruikers in staat om databases tot een exabyte te creëren (voorheen was de grootte van de database beperkt tot 4 GB). De database is zeer compact en maakt gebruik van een header van 4096 bytes en 48 bytes aan metadata per record (voor de 32-bits versie is de header 2048 en 24 bytes per record). Bij toegang tot de database worden slechts twee schijfoperaties uitgevoerd bij een aanwezig sleutel en één bij afwezigheid. Atomische vervanging van de database wordt ondersteund, die bestand is tegen crashes en toegang voor lezen niet blokkeert.
Andere wijzigingen:
- Ondersteuning voor het bouwen met behulp van een configure-script en installatie via het commando āmake installā.
- De koppeling van testscenario's aan csh is verwijderd.
- Alle interne gehele waarden zijn vervangen door het type ānumā, gedefinieerd als ālong longā. De functies uint32, fmt en scan zijn vervangen door functies die werken met het type num.
- De programmeerinterface voor het werken met buffers is verdeeld in inbuf en outbuf. De interface hier is opgeschoond.
- Definities van ongebruikte functies zijn uit de code verwijderd.
- Het gebruik van wrappers zoals str_len, alloc, uint32, exit, error en systype is stopgezet.
- De code is herschreven om het gebruik van verouderde C-constructies te stoppen, zoals de oude stijl van functie-definities, lege prototypes en de oude stijl van het definiƫren van main().
- Definities van const en static zijn ingeschakeld.
- Bij het bouwen is de vlag ā-Wallā geactiveerd en de code is opgeschoond om waarschuwingen te verhelpen.
- Bij het compileren zijn de opties -fwrapv, -fno-delete-null-pointer-checks, -fno-strict-aliasing en -fno-strict-overflow ingeschakeld.
Bron: opennet.ru
