Pubblicazione del database embedded libmdbx 0.13.2

È stato pubblicato il rilascio della libreria libmdbx 0.13.2 (MDBX) con l'implementazione di un database integrato di tipo key-value ad alte prestazioni e compatto. Il codice di libmdbx è distribuito sotto la licenza Apache 2.0. Sono supportati tutti i sistemi operativi e architetture attuali, incluso il russo Elbrus 2000. Per libmdbx è disponibile un'API avanzata per C++, oltre a collegamenti supportati da appassionati per i linguaggi Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Storicamente, libmdbx è una revisione profonda 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 controllo 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 una lettura non bloccante con scalabilità lineare su core CPU. È supportata l'autocompattazione, la gestione automatica delle dimensioni del database, e la stima dei voluminosi campioni per intervallo (range query estimation).

Variazioni principali:

  • Accelerato l'aggiornamento del GC al ritorno/salvataggio delle liste di pagine in scenari complessi. È stata elaborata e attivata una modalità sperimentale di feedback correggente precedentemente disattivata. Questo ha migliorato significativamente la convergenza (ridotto il numero di tentativi) e ha eliminato un difetto che portava a un «loop» durante il commit delle transazioni (con un ritorno di errore MDBX_PROBLEM) in rare condizioni specifiche.
  • Negli script di build di CMake è stato incluso lo standard C23.
  • Aggiunti i macro T per funzioni accoppiate char/wchar_t.
  • Nell'API C++ è stata aggiunta la supporto per transazioni di scrittura annidate.
  • È stato effettuato il passaggio alla seconda edizione della specifica di versioning semantico («Semantic Versioning 2») e assicurato 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 build di libmdbx tramite l'opzione MDBX_BUILD_METADATA. Ora le informazioni fornite vengono semplicemente incluse all'interno della libreria come valore di mdbx_build.metadata e in futuro saranno utilizzate anche per la creazione di pacchetti e simili.
  • Aggiunta la registrazione degli errori restituiti dall'API. Ora, per fare questo, è sufficiente impostare il livello di registrazione MDBX_LOG_DEBUG (per registrare errori escludendo MDBX_NOTFOUND) o MDBX_LOG_TRACE (per registrare tutti gli errori, oltre a MDBX_RESULT_TRUE).
  • Modifica del comportamento:
    • Aggiunto il metodo mdbx::cursor::get_multiple_samelength() e rinominato mdbx::txn::put_multiple_samelength().
    • Per coerenza dell'API C++ nell'esecuzione dell'operazione MDBX_GET_MULTIPLE ora viene restituito anche il valore della chiave stessa.
    • Per le costanti dimensionali mdbx::env::geometry il tipo di base è stato cambiato da unsigned size_t a signed intptr_t.
    • La scelta di utilizzare ntdll invece di CRT ora viene effettuata solo con disattivazione esplicita dell'API C++.
    • È stato garantito il rilascio della memoria delle transazioni di lettura annullate/interrotte, trasmesse a mdbx_txn_commit(). L'accordo API richiede che tali transazioni siano rilasciate tramite mdbx_txn_abort(), il che ha causato il ritorno di un errore da parte della funzione mdbx_txn_commit() in tali casi, senza distruggere le transazioni stesse. Questo ha portato a perdite di memoria a causa di errori nelle applicazioni, spingendo a modificare il comportamento.
    • Utilizzo del macro __deprecated_enum, se definito.
    • Durante la compilazione tramite CMake, la scelta dello standard del linguaggio C ora avviene 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