Rilascio del DBMS embedded libmdbx 0.13.2

È stata pubblicata la versione della libreria libmdbx 0.13.2 (MDBX) con implementazione di un database embedded compatto e ad alte prestazioni di tipo chiave-valore. Il codice di libmdbx è distribuito sotto la licenza Apache 2.0. Sono supportati tutti i sistemi operativi e architetture attuali, inclusa la russa Elbrus 2000. Per libmdbx è disponibile un'API sviluppata per C++, oltre a binding supportati da appassionati per i linguaggi Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Storicamente, libmdbx è una profonda revisione del DBMS LMDB e supera il suo predecessore in termini di affidabilità, funzionalità e prestazioni. Rispetto a LMDB, libmdbx pone grande attenzione alla qualità del codice, al funzionamento stabile dell'API, ai test e ai controlli automatici. Viene fornuto uno strumento di verifica dell'integrità della struttura del database con alcune funzionalità di recupero. Dal punto di vista tecnologico, libmdbx offre ACID, una rigorosa serializzazione delle modifiche e letture non bloccanti con scalabilità lineare in base ai core della CPU. Supporta l'autocompattazione, la gestione automatica delle dimensioni del database e la stima del volume delle query per intervallo.

Principali modifiche:

  • Aggiornamento GC accelerato al ripristino/piazzamento di elenchi di pagine in scenari complessi. È stata migliorata e attivata la modalità sperimentale di feedback correttivo precedentemente disattivata. Ciò ha notevolmente migliorato la convergenza (ridotto il numero di tentativi ripetuti) e ha anche risolto un difetto che portava a un 'ciclo infinito' durante il commit delle transazioni (con errore MDBX_PROBLEM) in rare condizioni specifiche.
  • Negli script di build CMake è stato incluso lo standard C23.
  • Aggiunti i macro T per le funzioni accoppiate char/wchar_t.
  • Nell'API C++ è stato aggiunto il supporto per transazioni scritturali annidate.
  • Completato il passaggio alla seconda edizione della specifica di versioning semantico ('Semantic Versioning 2') e fornita l'esportazione delle informazioni sulla versione in VERSION.json.
  • Per garantire la riproducibilità delle build, è stato aggiunto il supporto per la variabile d'ambiente SOURCE_DATE_EPOCH. Il supporto per MDBX_BUILD_TIMESTAMP è stato mantenuto e questa variabile ha la priorità.
  • È stata aggiunta la possibilità di specificare informazioni aggiuntive sulla compilazione di libmdbx tramite l'opzione MDBX_BUILD_METADATA. Le informazioni ora fornite vengono incorporate all'interno della libreria come valore di mdbx_build.metadata e saranno utilizzate in futuro anche per la creazione di pacchetti e simili.
  • È stata aggiunta la registrazione degli errori restituiti dall'API. Ora è sufficiente impostare il livello di registrazione MDBX_LOG_DEBUG (per registrare errori escluso MDBX_NOTFOUND) o MDBX_LOG_TRACE (per registrare tutti gli errori, compreso MDBX_RESULT_TRUE).
  • Modifica del comportamento:
    • È stato aggiunto il metodo mdbx::cursor::get_multiple_samelength() e rinominato mdbx::txn::put_multiple_samelength().
    • Per uniformità, l'API C++ ora restituisce anche il valore della chiave stessa durante l'operazione MDBX_GET_MULTIPLE.
    • Per le costanti di dimensione, il tipo di base di mdbx::env::geometry è stato cambiato da size_t senza segno a intptr_t con segno.
    • La scelta di utilizzare ntdll invece di CRT viene ora effettuata solo quando l'API C++ è esplicitamente disabilitata.
    • È stata garantita la liberazione della memoria per le transazioni di lettura interrotte o annullate, inviate a mdbx_txn_commit(). L'accordo API richiede che tali transazioni vengano liberate tramite mdbx_txn_abort(), il che causava un errore nella funzione mdbx_txn_commit() in questi casi, senza distruggere le stesse transazioni. Questo portava a perdite di memoria a causa di errori nelle applicazioni, il che ha spinto a modificare il comportamento.
    • Utilizzo del macro __deprecated_enum, se definito.
    • Durante la compilazione tramite CMake, la selezione dello standard del linguaggio C viene ora eseguita tenendo conto di CMAKE_C_STANDARD.

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