Daniel J. Bernstein, známy expert na kryptografiu a vývoj zabezpečeného softvéru, ktorý vytvoril projekty ako qmail, djbdns, NaCl, Ed25519, Curve25519 a ChaCha20-Poly1305, zverejnil vydanie projektu cdb 20250121, ponúkajúce formát ukladania dát a sprievodnú knižnicu na začlenenie funkcií na prácu s databázami vo forme kľúč/hodnota do aplikácií. Vydanie bolo vyhotovené po viac než 25 rokoch od poslednej aktualizácie cdb 0.75, vytvorenej vo februári 2000.
V novej verzii bol zavedený formát cdb64, prekonvertovaný na štruktúry s 64-bitovými typmi. Na 64-bitových platformách nový formát umožňuje vytvárať databázy s veľkosťou až exabajtu (predtým mohla byť veľkosť databázy maximálne 4 GB). Databáza je veľmi kompaktná a používa 4096-bajtový hlavičku a 48 bajtov administratívnych informácií na každý záznam (pre 32-bitovú verziu to je hlavička 2048 a 24 bajtov na záznam). Pri prístupe k databáze sa vykonajú iba dve operácie prístupu na disk pri existujúcom kľúči a jedna pri jeho absencii. Podporuje sa atomická výmena databázy, odolná voči havarijným ukončeniam a neblokujúca prístup na čítanie.
Iné zmeny:
- Podpora zostavenia pomocou skriptu configure a inštalácie príkazom „make install“.
- Bola odstránená väzba testovacích scenárov na csh.
- Všetky interné celé hodnoty boli nahradené typom „num“, definovaným ako „long long“. Funkcie uint32, fmt a scan boli nahradené funkciami, ktoré pracujú s typom num.
- Programové rozhranie pre prácu s bufferami bolo rozdelené na inbuf a outbuf. Rozhranie hier bolo vyčistené.
- Z kódu boli odstránené definície nepoužívaných funkcií.
- Bolo zastavené používanie obalov, ako sú str_len, alloc, uint32, exit, error a systype.
- Kód bol prepracovaný, aby sa zastavilo používanie zastaraných C konštrukcií, ako sú starý štýl definície funkcií, prázdne prototypy a starý štýl definície main().
- Boli zavedené definície const a static.
- Pri zostavení bol aktivovaný flag „-Wall“ a kód bol vyčistený pre odstránenie upozornení.
- Pri kompilácii boli zahrnuté možnosti -fwrapv, -fno-delete-null-pointer-checks, -fno-strict-aliasing a -fno-strict-overflow.
Zdroj: opennet.ru
