Daniel J. Bernstein, një ekspert i njohur në fushën e kriptografisë dhe zhvillimit të softuerit të sigurt, autor i projekteve si qmail, djbdns, NaCl, Ed25519, Curve25519 dhe ChaCha20-Poly1305, ka publikuar versionin e projektit cdb 20250121, i cili ofron një format për ruajtjen e të dhënave dhe një bibliotekë shoqëruese për të integruar në aplikacione funksione pune me baza të dhënash të tipit key/value. Ky publikim vjen më shumë se 25 vjet pas përditësimit të fundit cdb 0.75, të publikuar në shkurt 2000.
Në versionin e ri është implementuar formati cdb64, i përshtatur për struktura me tipe 64-bit. Në platformat 64-bit, formati i ri mundëson krijimin e bazave të të dhënave me madhësi deri në një eksabajt (më parë madhësia e BD-së nuk mund të kalonte 4 GB). Baza e të dhënave është shumë kompakte dhe përdor një header prej 4096 bajtesh dhe 48 bajte informacion shërbimi për çdo regjistrim (për variantin 32-bit, header-i është 2048 bajte dhe 24 bajte për regjistrim). Gjatë qasjes në bazën e të dhënave kryhen vetëm dy operacione leximi nga disku kur çelësi ekziston dhe një kur mungon. Mbështetet zëvendësimi atomik i BD-së, rezistent ndaj ndërprerjeve të papritura dhe pa bllokuar qasjen për lexim.
Ndryshime të tjera:
- Mbështetet ndërtimi me përdorimin e skriptit configure dhe instalimi me komandën «make install».
- ĂshtĂ« hequr varĂ«sia e skenarĂ«ve tĂ« testimit nga csh.
- Të gjitha vlerat e brendshme të plota janë zëvendësuar me tipin «num», i përcaktuar si «long long». Funksionet uint32, fmt dhe scan janë zëvendësuar me funksione që punojnë me tipin num.
- NdĂ«rfaqja programore pĂ«r punĂ«n me buffer-at Ă«shtĂ« ndarĂ« nĂ« inbuf dhe outbuf. ĂshtĂ« pastruar edhe ndĂ«rfaqja hier.
- Nga kodi janë hequr përkufizimet e funksioneve të papërdorura.
- ĂshtĂ« ndĂ«rprerĂ« pĂ«rdorimi i wrapper-ave si str_len, alloc, uint32, exit, error dhe systype.
- Kodi është ripunuar për të hequr përdorimin e konstruksioneve të vjetruara të C, si stili i vjetër i përcaktimit të funksioneve, prototipet bosh dhe stili i vjetër i përcaktimit të main().
- Janë përdorur përkufizimet const dhe static.
- Gjatë ndërtimit është aktivizuar flamuri «-Wall», ndërsa kodi është pastruar për të eliminuar paralajmërimet.
- Gjatë kompilimit janë aktivizuar opsionet -fwrapv, -fno-delete-null-pointer-checks, -fno-strict-aliasing dhe -fno-strict-overflow.
Burimi: opennet.ru
