Публикуван е новият ъпдейт на библиотеката libmdbx 0.13.10 (MDBX), който представя високом производителна компактна вградена база данни от клас ключ-стойност. Кодът на libmdbx се разпространява под лицензия Apache 2.0. Поддържат се всички актуални операционни системи и архитектури, както и руският Елбрус 2000. За libmdbx е предложено обширно API за C++, а също така поддържани са и среди на етап ентусиасти за езици като Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno и Scala. От проектите, които използват libmdbx, можем да споменем Isar, Erigon и Reth, както и разработки на компаниите StarkWare и Positive Technologies.
Исторически libmdbx е дълбока переработка на СУБД LMDB и надминава своя прародител по надеждност, набор от възможности и производителност. В сравнение с LMDB, в libmdbx се отделя голямо внимание на качеството на кода, стабилната работа на API, тестването и автоматичните проверки. Доставя се утилита за проверка на целостта на структурата на базата данни с някои възможности за възстановяване. Технологично libmdbx предлага ACID, строга сериализация на промените и неблокирано четене с линейно мащабиране по ядра на ЦПУ. Поддържа се автоуплътняване, автоматично управление на размера на базата данни, оценка на обема на проби по диапазони (оценка на заявки по диапазони).
През декември 2025 година основният репозиторий на проекта беше преместен от GitFlic на SourceCraft. Като причина се посочват жалби от несъщоезични потребители и грешки в редактора Markdown, които не бяха отстранени повече от три години. Също така се съобщаваше за затварянето на огледалото на проекта в Github, но по-късно репозиторият беше възстановен с пояснението, че е направено по искане на разработчици от Китай и Бразилия, а също така на платформата Tempo, използваща libmdbx.
Основни промени след предишната новина от 1 август:
- Възстановена е поддръжката на стари Linux ядра, започвайки от версия 3.16.
- Поддържа се мобилната операционна система Harmony.
- Грешката «MDBX_WANNA_RECOVERY» при отваряне на БД в режим само за четене сега се връща, ако размерът на БД не е кратен на размера на системната страница, но се игнорира кратността на размера на блока на виртуалната памет.
- Премахната е възможността за получаване на неочаквано «SIGBUS» заради отложено/лениво разпределение на паметта от ядрото на ОС в запълнена файлова система след увеличаване на файла на БД.
- Коригирана е проверката на assert в пътя на сканиране на битовата карта на DBI дескриптори, което водеше до редки падения на 32-битни отладъчни версии.
- За Android е реализиран маневър, който намалява вероятността от системна грешка «EAGAIN», възникваща поради недостиг на системни ресурси и преходни процеси при затваряне и бързо повторно отваряне на БД.
- За Linux е добавено предотвратяване на проявлението на грешка в реализацията на fast_commit на файловата система Ext4.
- Коригиран е недостатък в автоматичното регулиране на параметрите при задаване на геометрия с определен минимален размер на страницата, поради който на машини с по-голямо количество RAM размерът на страницата можеше да нарасне.
- Преработена е реализацията на буферите и направени други подобрения в C++ API.
Допълнително заслужава да се отбележи анонс на докладa „libmdbx: Roadmap, успехи, цели и препятствия“ на събитието Ethereum Day, което ще се проведе на 23 декември в Москва.
Източник: opennet.ru
