Utgivningen av biblioteket libmdbx 0.13.6 (MDBX) har publicerats med implementeringen av en högpresterande kompakt inbÀddad nyckelvÀrdedatabas. Koden för libmdbx distribueras under Apache 2.0-licensen. Alla aktuella operativsystem och arkitekturer stöds, inklusive den ryska Elbrus 2000. För libmdbx erbjuds ett utvecklat API för C++, samt att entusiaster har skapat bindningar till sprÄk som Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno och Scala. Bland projekten som anvÀnder libmdbx kan nÀmnas Isar, Erigon och Reth, samt utvecklingarna frÄn företagen StarkWare och Positive Technologies.
Historiskt sett Àr libmdbx en djupgÄende omarbetning av databashanteraren LMDB och övertrÀffar sin föregÄngare i pÄlitlighet, funktionalitet och prestanda. JÀmfört med LMDB lÀgger libmdbx stort fokus pÄ kodkvalitet, stabilitet i API:et, testning och automatiska kontroller. En databasintegritetskontrollverktyg levereras med vissa ÄterstÀllningsfunktioner. Teknologiskt erbjuder libmdbx ACID, strikt serialisering av förÀndringar och icke-blockerande lÀsning med linjÀr skalning över CPU-kÀrnor. Automatisk komprimering, automatisk hantering av databasens storlek och uppskattning av urvalets volym över intervall (range query estimation) stöds.
Huvudsakliga förÀndringar:
- Ăndrat beteende: Om det Ă€r omöjligt att koppla bort kursorn frĂ„n dess aktuella transaktion returnerar funktionen mdbx_cursor_bind() nu MDBX_EINVAL istĂ€llet för MDBX_BAD_TXN.
- För att undvika potentiella problem har anvÀndningen av copy_file_range() inaktiverats pÄ Linux-kÀrnor 5.3 - 5.18.
- Ett std::invalid_argument-slag genereras nu med ett explicit meddelande MDBX_EINVAL.
- En regression har ÄtgÀrdats vid anvÀndning av kurser för DBI=0 (Àven kallat GC/FreeDB) i lÀsande transaktioner.
- En regression har ÄtgÀrdats i form av felet EAGAIN vid kopiering av databaser pÄ NFS och CIFS/SMB.
- Vid förbÀttringar av API:et i kopieringsfunktionen har filblockering nu lagts till via bÄde fcntl() och flock(). Men beroende pÄ versionen av det lokala kÀrnan, versionen av den fjÀrranslutna servern NFS och monteringsalternativen kan detta ha lett till att POSIX-felet EAGAIN (11 pÄ de flesta plattformar, inklusive Linux) ÄtervÀnde.
- Ett fel med merge/rebase inuti mdbx_txn_release_all_cursors_ex() har ÄtgÀrdats, vilket kan ha lett till ovÀntade fel som MDBX_EBADSIGN och minneslÀckor.
- Assert-kontrollen i avslutningsvÀgen för nÀstlade transaktioner har ÄtgÀrdats.
- Möjligheten att ÄterfÄ ett ovÀntat fel MDBX_BUSY frÄn mdbx_txn_lock(dont_wait=false) har ÄtgÀrdats.
- För att vara kompatibel med GCC 15.x i C23-lÀge har ordningen för att ange funktionsattribut Àndrats.
KĂ€lla: opennet.ru
