libmdbx 0.11.7 arriva con la migrazione del progetto a GitFlic, correzioni di bug e altro

Il rilascio della nuova libreria libmdbx versione 0.11.7, il lancio si distingue per la migrazione del progetto al servizio GitFlic dopo che l'amministrazione GitHub ha rimosso libmdbx insieme a una serie di altri progetti il ​​15 aprile 2022 senza alcun avviso o spiegazione, bloccando anche l'accesso a molti sviluppatori associati ad aziende che sono cadute sotto le sanzioni statunitensi.

Dal punto di vista dell'utente, tutte le pagine, il repository ei fork del progetto si sono improvvisamente trasformati in una pagina “404”, senza possibilità di comunicazione e senza scoprirne le ragioni.

Sfortunatamente, quasi tutte le versioni sono andate perse, in cui c'erano molte domande con risposte dettagliate, oltre a molte discussioni. La perdita di queste informazioni è l'unico danno oggettivo che l'amministrazione GitHub è riuscita a infliggere al progetto, sebbene copie parziali delle discussioni rimangano disponibili nell'archivio archive.org.

La perdita dell'infrastruttura CI e degli script integrati (disponibili gratuitamente per i progetti OpenSource) ci ha costretto a rivedere, unificare ed eliminare un piccolo debito tecnico. Ora CI è stato ripristinato quasi allo stesso volume (circa 100 configurazioni di build), ad eccezione della creazione e dell'esecuzione dei test per tutte le varianti BSD e Solaris. Significativamente, dopo le azioni di GitHub, non sono stati ricevuti chiarimenti o notifiche, a parte un promemoria della necessità di pagamento.

Principali nuove funzionalità di libmdbx 0.11.7

Dopo le ultime notizie sul rilascio di libmdbx v0.11.3, oltre al ripristino dalle azioni GitHub, vale la pena notare i seguenti miglioramenti e correzioni:

Sono state apportate in totale 185 modifiche a 89 file, sono state aggiunte circa 3300 righe, ne sono stati rimossi circa 4100. Rimossi principalmente a causa dell'eliminazione di file tecnologici già inutili associati a GitHub e ai servizi dipendenti.

Aggiunto un file correzione di un effetto/difetto di incoerenza rilevato nella pagina e nella cache unite del buffer nel kernel Linux. Sui sistemi in cui la pagina e la cache del buffer sono veramente unificate, non ha senso che il kernel sprechi memoria su due copie di dati scrivendo su un file già allocato in memoria. Pertanto, i dati scritti diventano visibili tramite l'allocazione di memoria prima del completamento della chiamata di sistema write(), anche se i dati non sono ancora stati scritti su disco.

Complessivamente l'altro comportamento non è razionale, perché con un'unione ritardata, devi comunque catturare i blocchi per gli elenchi di pagine, copiare i dati o regolare i PTE. Pertanto, la regola non detta di coerenza è in vigore dal 1989, quando la cache del buffer unificata è apparsa in SVR4. Di conseguenza, trovare strani bug negli scenari di produzione di libmdbx occupato ha richiesto molto lavoro. Innanzitutto, riproducendo il problema, poi verificando le ipotesi e verificando i miglioramenti.

Possiamo ora affermare con sicurezza che il problema è stato identificato, localizzato e rimosso in modo affidabile, nonostante la complessità e la specificità dello scenario di riproduzione. Inoltre, il lavoro del meccanismo di bypass è stato confermato da uno degli sviluppatori di Erigon (Ethereum), nel suo caso, nella build di debug, la protezione è stata attivata come regressione a causa di un ulteriore controllo dell'asserzione.

Va notato che nel contesto dell'uso diffuso di libmdbx nei progetti di lavoro, è fondamentalmente più importante garantire un funzionamento affidabile, piuttosto che scoprire se si tratta di un bug o di una funzionalità e se si può fare affidamento su tale coerenza soprattutto senza cercare le cause dell'incoerenza all'interno del kernel Linux. Quindi, qui stiamo parlando di risolvere un problema che potrebbe interessare gli utenti.

Risolta una regressione del bug EXDEV (collegamento tra dispositivi) durante la copia a caldo di un database senza compattazione su un altro file system, sia tramite l'API che con l'utilità mdbx_copy.
Kris Zyp ha implementato il supporto per libmdbx su Deno.

Risolto il problema con la gestione del valore impostato dall'opzione MDBX_opt_rp_augment_limit durante l'elaborazione di grandi transazioni su database di grandi dimensioni. In precedenza, a causa di un bug, potevano essere eseguite azioni non necessarie, che a volte influivano sulle prestazioni delle implementazioni di Ethereum (Erigon/Akula/Silkworm) e dei progetti Binance Chain.

Molti bug sono stati corretti, inclusi quelli per l'API C++ e risolti molti problemi di build su configurazioni rare ed esotiche. Un elenco completo di tutti i miglioramenti significativi è disponibile nel ChangeLog.

Infine, se sei interessato a saperne di più, puoi consultare i dettagli Nel seguente collegamento.


Puoi essere il primo a lasciare un commento

Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.