Издаване на вградена СУБД libmdbx 0.13.2

Публикувана версия на библиотеката libmdbx 0.13.2 (MDBX) с реализирана високопроизводителна компактна вградена база данни клас ключ-стойност. Кодът на libmdbx се разпространява под лицензия Apache 2.0. Поддържат се всички актуални операционни системи и архитектури, включително руския Елбрус 2000. За libmdbx е предложен развит API за C++, както и подкрепяни от ентусиасти привързаности за езици като Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Исторически libmdbx представлява дълбока преработка на СУБД LMDB и надминава своя прародител по надеждност, набор от възможности и производителност. В сравнение с LMDB, в libmdbx се отделя голямо внимание на качеството на кода, стабилната работа на API, тестването и автоматичните проверки. Предлага се инструмент за проверка на целостта на структурата на БД с някои възможности за възстановяване. Технологично libmdbx предлага ACID, строга сериализация на промените и неблокиращо четене с линейно мащабиране по ядра на ЦПУ. Поддържа се автоматична компактификация, автоматично управление на размера на БД и оценка на обема на заявките по диапазони (estimate по диапазони).

Основни промени:

  • Ускорено обновление на GC при връщане/поставяне на списъци от страници в сложни сценарии. Обработен и активиран по-рано изключен експериментален режим за коригираща обратна връзка. По този начин принципно се подобри конвергенцията (намали се броят на повторните опити) и беше отстранен дефект, водещ до "зацикляне" при фиксация на транзакции (с връщане на грешка MDBX_PROBLEM) в редки специфични условия.
  • В скриптовете за компилация CMake е включен стандартът C23.
  • Добавени са T-макроси за двойни функции char/wchar_t.
  • В C++ API е добавена поддръжка на вложени транзакции за запис.
  • Направен е преход към втората редакция на спецификацията за семантично версиониране ("Semantic Versioning 2") и осигурен е експорт на информация за версията в VERSION.json.
  • За възпроизводимост на сборките е добавена поддръжка на променливата на средата SOURCE_DATE_EPOCH. Поддръжката на MDBX_BUILD_TIMESTAMP е запазена и тази променлива има приоритет.
  • Добавена е възможност за указване на допълнителна информация за сборката на libmdbx чрез опцията MDBX_BUILD_METADATA. Сега зададената информация просто се включва вътре в библиотеката като стойност mdbx_build.metadata, а в бъдеще също ще бъде използвана при формиране на пакети и т.н.
  • Добавено е логиране на грешките, връщани от API. Сега за това е достатъчно да се зададе ниво на логиране MDBX_LOG_DEBUG (за логиране на грешки с изключение на MDBX_NOTFOUND) или MDBX_LOG_TRACE (за логиране на всички грешки, както и MDBX_RESULT_TRUE).
  • Промяна на поведението:
    • Добавен е метод mdbx::cursor::get_multiple_samelength() и е преименуван mdbx::txn::put_multiple_samelength().
    • За единство на C++ API при извършване на операцията MDBX_GET_MULTIPLE сега също така се връща стойността на самия ключ.
    • За размерни константи mdbx::env::geometry основният тип е променен от беззнаков size_t на знаков intptr_t.
    • Изборът в полза на използването на ntdll вместо CRT вече се прави само при явно деактивиране на C++ API.
    • Освобождаването на паметта за отменени/прекъснати четящи транзакции, предавани на mdbx_txn_commit(). Споразумението по API изисква тези транзакции да бъдат освобождавани чрез mdbx_txn_abort(), поради което функцията mdbx_txn_commit() връща грешка в тези случаи, без да разрушават самите транзакции. Това водеше до течове на паметта поради грешки в приложенията, което наложи промяна в поведението.
    • Използване на макроса __deprecated_enum, ако е определен.
    • При компилиране чрез CMake изборът на стандарт на C сега се извършва с оглед на CMAKE_C_STANDARD.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster