Выпуск встраиваемой СУБД libmdbx 0.13.2

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3571
Зарегистрирован: 20.08.2022

#

Выпуск встраиваемой СУБД libmdbx 0.13.2
Дата публикации:Sat, 14 Dec 2024 10:07:58 +0300




Опубликован выпуск библиотеки 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, строгую сериализацию изменений и неблокирующее чтение с линейным масштабированием по ядрам ЦПУ. Поддерживается автокомпактификация, автоматическое управление размером БД, оценка объёма выборок по диапазонам (range query estimation).




Основные изменения:
  • Ускорено обновление 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
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=62403

Жизнь за Нер'зула!

Ответить