Rilascio del database incorporato libmdbx 0.13.6

È stata pubblicata la versione della libreria libmdbx 0.13.6 (MDBX) con implementazione di un database embedded compatto ad alta prestazione di tipo chiave-valore. Il codice di libmdbx è distribuito sotto licenza Apache 2.0. Sono supportati tutti i sistemi operativi e le architetture attuali, compreso il russo Elbrus 2000. Libmdbx propone un'API avanzata per C++, oltre a binding supportati da appassionati per i linguaggi Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno e Scala. Tra i progetti che utilizzano libmdbx, si possono citare Isar, Erigon e Reth, oltre agli sviluppi delle aziende StarkWare e Positive Technologies.

Storicamente, libmdbx è un'evoluzione profonda del database LMDB e supera il suo predecessore in termini di affidabilità, funzionalità e prestazioni. Rispetto a LMDB, libmdbx pone una grande attenzione alla qualità del codice, alla stabilità dell'API, ai test e ai controlli automatici. È fornito uno strumento per il controllo dell'integrità della struttura del database con alcune funzionalità di ripristino. Tecnologicamente, libmdbx offre ACID, un'accurata serializzazione delle modifiche e letture non bloccanti con scalabilità lineare sui core della CPU. Supporta la compressione automatica, la gestione automatica delle dimensioni del database e la stima del volume delle query per intervallo.

Variazioni principali:

  • Modifica del comportamento: se non è possibile scollegare il cursore dalla sua transazione corrente, la funzione mdbx_cursor_bind() ora restituisce MDBX_EINVAL invece di MDBX_BAD_TXN.
  • Per evitare potenziali problemi, è stato disabilitato l'uso di copy_file_range() nei kernel Linux 5.3 - 5.18.
  • Il lancio di std::invalid_argument ora viene fatto tramite un messaggio esplicito MDBX_EINVAL.
  • È stato risolto un regressione nell'uso dei cursori per DBI=0 (aka GC/FreeDB) nelle transazioni di lettura.
  • È stata corretta una regressione sotto forma di errore EAGAIN durante la copia del database su NFS e CIFS/SMB.
  • Nel perfezionamento/sviluppo dell'API nella funzione di copia è stata aggiunta l'acquisizione del blocco file tramite sia fcntl() che flock(). Tuttavia, a seconda della versione del kernel locale, della versione remota server NFS e delle opzioni di montaggio, questo poteva risultare nel ritorno dell'errore POSIX EAGAIN (11 sulla maggior parte delle piattaforme, compreso Linux).
  • È stato risolto un errore di merge/rebase all'interno di mdbx_txn_release_all_cursors_ex(), che poteva portare a successivi errori imprevisti MDBX_EBADSIGN e perdite di memoria.
  • È stata corretta la verifica assert nel percorso di completamento delle transazioni annidate.
  • È stata eliminata la possibilità di restituire un errore imprevisto MDBX_BUSY da mdbx_txn_lock(dont_wait=false).
  • Per la compatibilità con GCC 15.x in modalità C23 è stato modificato l'ordine della specifica degli attributi delle funzioni.

Fonte: opennet.ru

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