Byla publikována verze knihovny libmdbx 0.13.6 (MDBX) s implementací vysoce výkonné kompaktní embedded databáze typu klíč-hodnota. Kód libmdbx je distribuován pod licencí Apache 2.0. Podporovány jsou všechny aktuální operační systémy a architektury, včetně ruského Elbrus 2000. Pro libmdbx je k dispozici rozvinuté API pro C++, stejně jako oblíbené vazby pro jazyky Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala. Mezi projekty využívající libmdbx můžeme zmínit Isar, Erigon a Reth, stejně jako vývoj firem StarkWare a Positive Technologies.
Historicky je libmdbx hlubokou přepracováním databázového systému LMDB a překonává svého předchůdce v spolehlivosti, sadě funkcí a výkonu. Ve srovnání s LMDB věnuje libmdbx velkou pozornost kvalitě kódu, stabilnímu fungování API, testování a automatickým kontrolám. Dodává se nástroj pro kontrolu integrity struktury databáze s některými možnostmi obnovení. Technologicky libmdbx nabízí ACID, přísnou serializaci změn a neblokující čtení s lineárním škálováním podle CPU jader. Podporováno je automatické zhuštění, automatické řízení velikosti databáze, odhad objemu dotazů podle rozsahu (range query estimation).
Hlavní změny:
- Změna chování: Při nemožnosti odpojit kurzor od jeho aktuální transakce funkce mdbx_cursor_bind() nyní vrací MDBX_EINVAL místo MDBX_BAD_TXN.
- Aby se předešlo potenciálním problémům, bylo deaktivováno používání copy_file_range() na jádrech Linux 5.3 – 5.18.
- Vyvolání std::invalid_argument je nyní provedeno explicitním hlášením MDBX_EINVAL.
- Byl odstraněn regres při používání kurzorů pro DBI=0 (alias GC/FreeDB) ve čtecích transakcích.
- Byl odstraněn regres ve formě chyby EAGAIN při kopírování databáze na NFS a CIFS/SMB.
- Při reprofilaci API v funkci kopírování byl přidán zámek souboru pomocí jak fcntl(), tak flock(). Nicméně, v závislosti na verzi lokálního jádra, verzi vzdáleného NFS a možnostech montování, to mohlo vést k návratu POSIX chyby EAGAIN (11 na většině platforem, včetně Linuxu). serveru Byla odstraněna chyba merge/rebase v rámci mdbx_txn_release_all_cursors_ex(), která mohla vést k následným neočekávaným chybám MDBX_EBADSIGN a únikům paměti.
- Byla opravena assert kontrola v cestě ukončení vnořených transakcí.
- Byla odstraněna možnost návratu neočekávané chyby MDBX_BUSY z mdbx_txn_lock(dont_wait=false).
- Pro kompatibilitu s GCC 15.x v režimu C23 byl změněn pořádek uvádění atributů funkcí.
- Byla publikována verze knihovny libmdbx 0.13.6 (MDBX) s implementací vysoce výkonné kompaktní embedded databáze typu klíč-hodnota. Kód libmdbx je distribuován pod licencí Apache 2.0.
Zdroj: opennet.ru
