Daniel Bernstein ha aggiornato la libreria cdb

Daniel J. Bernstein, noto esperto nel campo della crittografia e dello sviluppo di software sicuro, ha creato progetti come qmail, djbdns, NaCl, Ed25519, Curve25519 e ChaCha20-Poly1305. Ha pubblicato la versione 20250121 del progetto cdb, che offre un formato di archiviazione dati e una libreria correlata per integrare funzioni di gestione del database in forma chiave/valore nelle applicazioni. Questa versione è stata rilasciata dopo oltre 25 anni dall'ultimo aggiornamento di cdb 0.75, pubblicato nel febbraio 2000.

La nuova versione implementa il formato cdb64, adattato a strutture con tipi a 64 bit. Su piattaforme a 64 bit, il nuovo formato consente di creare database di dimensioni fino a un exabyte (in precedenza, la dimensione massima era limitata a 4 GB). Il database è molto compatto e utilizza un'intestazione di 4096 byte e 48 byte di informazioni ausiliarie per ogni record (per la versione a 32 bit, l'intestazione è di 2048 byte e 24 byte per record). Quando si accede al database, vengono eseguite solo due operazioni di accesso al disco in presenza di una chiave e una in assenza di essa. È supportata la sostituzione atomica del database, resistente ai crash, senza bloccare l'accesso in lettura.

Altre modifiche:

  • Supporto per la compilazione utilizzando uno script configure e installazione con il comando «make install».
  • Rimossa la dipendenza degli script di test da csh.
  • Tutti i valori interi interni sono stati sostituiti con il tipo «num», definito come «long long». Le funzioni uint32, fmt e scan sono state sostituite con funzioni che operano con il tipo num.
  • L'interfaccia del buffer è stata suddivisa in inbuf e outbuf. È stata effettuata una revisione dell'interfaccia hier.
  • Dal codice sono state rimosse le definizioni di funzioni non utilizzate.
  • È stata interrotta l'uso dei wrapper, come str_len, alloc, uint32, exit, error e systype.
  • Il codice è stato rifattorizzato per interrompere l'uso di costrutti C obsoleti, come le vecchie definizioni di funzioni, i prototipi vuoti e le vecchie definizioni di main().
  • Utilizzati definitivi const e static.
  • Durante la compilazione è stato attivato il flag «-Wall», e il codice è stato pulito per eliminare gli avvisi.
  • Sono state incluse opzioni di compilazione: -fwrapv, -fno-delete-null-pointer-checks, -fno-strict-aliasing e -fno-strict-overflow.

Fonte: opennet.ru

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster