Download Latest Version libmdbx 0.13.7 _Druzhba_ (Friendship) source code.tar.gz (796.3 kB)
Email in envelope

Get an email when there's a new version of libmdbx

Home / v0.13.6
Name Modified Size InfoDownloads / Week
Parent folder
libmdbx 0.13.6 _Buzina_ source code.tar.gz 2025-04-22 792.4 kB
libmdbx 0.13.6 _Buzina_ source code.zip 2025-04-22 896.3 kB
README.md 2025-04-22 6.1 kB
Totals: 3 Items   1.7 MB 0

Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов, в память о погибшем украинском историке и писателе Алесе Бузине.

For translation to other languages please try Yandex or liar Google.

git diff' stat: 15 files changed, 194 insertions(+), 36 deletions(-)

Благодарности:

Исправления:

  • Устранён регресс при использовании курсоров для DBI=0 (aka GC/FreeDB) в читающих транзакциях.

После рефакторинга и ряда оптимизаций для завершения/гашения курсоров в читающих и пишущих транзакций, стал использоваться общий код. Причем за основу, был взят соответствующий фрагмент относящийся к пишущим транзакциям, в которых пользователю не позволяется использоваться курсоры для DBI=0 и поэтому эта итераций пропускалась.

В результате, при завершении читающих транзакциях, курсоры связанные с DBI=0 не завершались должным образом, а при их повторном использовании или явном закрытии после завершения читающей транзакции происходило обращение к уже освобожденной памяти. Если же такие курсоры отсоединялись или закрывались до завершения читающей транзакции, то ошибка не имела шансов на проявление.
  • Устранён регресс в виде ошибки EAGAIN при копировании БД на NFS и CIFS/SMB.

При доработках/развитии API в функции копирования был добавлен захват файловой блокировки посредством как fcntl(), так и flock(). Однако, в зависимости от версии локального ядра, версии удалённого сервера NFS и опций монтирования, это могло приводить к возврату POSIX-ошибки EAGAIN (11 на большинстве платформ, включая Linux).

  • Устранена ошибка merge/rebase внутри mdbx_txn_release_all_cursors_ex(), что могло приводить к последующим неожиданным ошибкам MDBX_EBADSIGN и утечкам памяти. Для проверки сценария дополнен соответствующий тест.

  • Исправлена assert-проверка в пути завершения вложенных транзакций. Для проверки сценария дополнен соответствующий тест.

  • Устранена возможность возврата неожиданной ошибки MDBX_BUSY из mdbx_txn_lock(dont_wait=false).

  • Для совместимости с GCC 15.x в режиме C23 изменен порядок указания атрибутов функций.

Изменение поведения:

  • При невозможности отвязки курсора от его текущей транзакции функция mdbx_cursor_bind() теперь возвращает MDBX_EINVAL вместо MDBX_BAD_TXN.

Прочие доработки:

  • Во избежание потенциальных проблем отключено использование copy_file_range() на ядрах Linux 5.3 - 5.18.

  • Вброс std::invalid_argument теперь производится явным сообщением MDBX_EINVAL.

  • Уточнен тип адреса для пожертвований. Ethereum/ERC-20 позволяет перечислять не только ETH, но и другие валюты/токены, в том числе USDC.

  • Дополнен тест курсоров extra/cursor-closing.

  • В NOTICE обновлена информация о Github.

Загрузки:


За информацией о предыдущих версиях обращайтесь к тегам git и ChangeLog.

Please don't use github's tarballs nor zips, but the amalgamated sources or clone the git repository

Source: README.md, updated 2025-04-22