Выпуск библиотеки версии 0.10.4 "Libmdbx" в котором всего, более 160 изменений внесено в 57 файлов, ~ 5000 строк добавлено и ~ 2500 удалено. Тем, кто не знаком с libmdbx, следует знать, что это набор библиотек, которые представляют собой реализацию компактной высокопроизводительной встроенной базы данных класса "ключ-значение".
Исторически, libmdbx - это глубокая переработка СУБД LMDB и превосходит своего предшественника по надежности, набору функций и производительности. По сравнению с LMDB, libmdbx уделяет большое внимание качеству кода, стабильности API, тестированию и автоматическим проверкам. Утилита для проверки целостности структуры базы данных поставляется с некоторыми вариантами восстановления.
Технологически, libmdbx предлагает ACID, строгую сериализацию изменений и неблокирующее чтение с линейным масштабированием по ядрам. процессора. Поддерживает автоматическое сжатие, автоматический контроль размера базы данных и оценку запроса ранжирования. С 2016 года проекты финансируются Positive Technologies и используются в своих продуктах с 2017 года.
Для libmdbx, предлагается C ++ API, а также привязки, совместимые с энтузиастами Rust, Haskell, Python, NodeJS, Ruby, Go, Nim. Для libfpta публично доступно только описание API в виде файла заголовка C / C ++.
Помимо поддержки Linux, Windows, MacOS, Android, iOS, FreeBSD, DragonFly, Solaris, OpenSolaris, OpenIndiana, NetBSD, OpenBSD и других совместимых систем POSIX.1-2008.
Основные новые возможности libmdbx 0.10.4
В этой новой версии libmdbx 0.10.4 разработчики работали над тем, чтобы обеспечить возможность создания игровых сборок, Кроме того, было улучшено тестирование и расширены сценарии тестирования для проверки всех достижимых неизоморфных состояний дерева страниц и содержимого сборщика мусора в базе данных.
В C ++ API исправлено единожды "noexcept", добавлена дополнительная перегрузка для метода "cursor :: erase ()", реализация буферов облегчается использованием "std :: string" для обеспечения выравнивания (актуально для CLANG libstdc ++)
Кроме того, также подчеркивается, что проведена поэтапная проверка с добавлением серии проверок для обеспечения стабильности в случае умышленного повреждения базы данных.
С другой стороны, подчеркивается, что поиск компонентов компилятора, необходимых для LTO (оптимизация времени компоновки), был улучшен в сценариях CMake, в дополнение к этому максимальное количество одновременных считывателей увеличено до 32.767 XNUMX, а также производительность улучшено при использовании Valgrind и AddressSanitizer.
По поводу исправлений ошибок которые были сделаны в этой новой версии, упоминается следующее:
- Исправлена ошибка, из-за которой в очень редких случаях мог произойти цикл / сбой во время фиксации транзакции. Проблема была выявлена специалистами Positive Technologies во время внутреннего тестирования собственных продуктов.
- Исправлена регрессия в алгоритме разлива грязных страниц (выборочное удаление измененных страниц базы данных), проявляющаяся в редкой неожиданной ошибке MDBX_PROBLEM при изменении данных в больших транзакциях.
- Исправлены незначительные проблемы UndefinedBehaviorSanitizer и Coverity Scan.
Исправлена устаревшая и неиспользуемая внутренняя проверка флага "P_DIRTY" на страницах, вложенных в образы базы данных, созданные старыми версиями библиотек. - Исправлено рекурсивное использование SRW-блокировки в Windows при работе в режиме MDBX_NOTLS (без использования локального хранилища потоков), исправлена генерация бутидов при изменении системного времени, улучшено обнаружение WSL1 и WSL2, добавлена возможность открывать подключенную базу данных Plan 9 с помощью DrvFS.
В конце концов если вам интересно узнать об этом больше об этой новой версии вы можете проверить подробности По следующей ссылке.