Danielis J. Bernsteinas, žinomas kriptografijos ir saugaus programinės įrangos kūrimo ekspertas, sukūręs tokius projektus kaip „qmail“, „djbdns“, „NaCl“, „Ed25519“, „Curve25519“ ir „ChaCha20-Poly1305“, išleido „cdb 20250121“ – duomenų saugojimo formatą ir atitinkamą biblioteką, skirtą raktų / reikšmių duomenų bazių funkcijų įterpimui į programas. Šis leidimas išleistas praėjus daugiau nei 25 metams po ankstesnio atnaujinimo – „cdb 0.75“, išleisto 2000 m. vasarį.
Naujoji versija įgyvendina cdb64 formatą, išverstą į 64 bitų duomenų struktūras. 64 bitų platformose naujas formatas leidžia naudoti iki eksabaito dydžio duomenų bazes (anksčiau duomenų bazių dydžiai buvo ribojami iki 4 GB). Duomenų bazė yra labai kompaktiška ir naudoja 4096 baitų antraštę bei 48 baitus pridėtinės vertės kiekvienam įrašui (32 bitų versijoje antraštė yra 2048 baitai ir 24 baitai kiekvienam įrašui). Norint pasiekti duomenų bazę, reikia atlikti tik dvi disko prieigos operacijas, jei raktas yra, ir vieną, jei jo nėra. Palaikomas atominės duomenų bazės pakeitimas, kuris yra atsparus gedimams ir neblokuoja skaitymo prieigos.
Kiti pakeitimai:
- Palaikymas kompiliavimui naudojant „configure“ scenarijų ir diegimui naudojant komandą „make install“.
- Pašalintas testo scenarijų susiejimas su CSH.
- Visos vidinės sveikųjų skaičių reikšmės buvo pakeistos „num“ tipu, apibrėžiamu kaip „long long“. Funkcijos „uint32“, „fmt“ ir „scan“ buvo pakeistos funkcijomis, kurios veikia su „num“ tipu.
- Buferio valdymo API buvo padalinta į „inbuf“ ir „outbuf“. „Hier“ sąsaja buvo išvalyta.
- Nenaudojamos funkcijų apibrėžtys buvo pašalintos iš kodo.
- Nebenaudojami tokie susiejimai kaip „str_len“, „alloc“, „uint32“, „exit“, „error“ ir „systype“.
- Kodas buvo pertvarkytas, siekiant panaikinti nebenaudojamas C konstrukcijas, tokias kaip seno stiliaus funkcijų apibrėžimai, tušti prototipai ir seno stiliaus main() apibrėžimas.
- Naudojami „const“ ir „static“ apibrėžimai.
- Surinkimo metu buvo įjungta vėliavėlė „-Wall“, o kodas buvo išvalytas, kad nebūtų įspėjimų.
- Kompiliavimo metu įjungiamos parinktys „-fwrapv“, „-fno-delete-null-pointer-checks“, „-fno-strict-aliasing“ ir „-fno-strict-overflow“.
Šaltinis: opennet.ru
