В выпуск новой библиотеки libmdbx версии 0.11.7, запуск выделяется переносом проекта на сервис GitFlic после того, как администрация GitHub удалила libmdbx вместе с рядом других проектов 15 апреля 2022 года без каких-либо предупреждений и объяснений, а также заблокировала доступ многим разработчикам, связанным с компаниями, попавшими под санкции США.
С точки зрения пользователя все страницы, репозиторий и форки проекта внезапно превратились в страницу «404», без возможности общения и без выяснения причин.
К сожалению, почти все версии утеряны., в котором было много вопросов с подробными ответами, а также много обсуждений. Утеря этой информации — единственный объективный ущерб, который администрации GitHub удалось нанести проекту, хотя частичные копии обсуждений остаются доступными в архиве archive.org.
Потеря встроенной инфраструктуры CI и скриптов (бесплатно доступных для проектов OpenSource) вынудила нас пересмотреть, унифицировать и устранить небольшой технический долг. Сейчас CI восстановлен почти до того же объема (около 100 конфигураций сборки), за исключением сборки и запуска тестов для всех вариантов BSD и Solaris. Что характерно, после действий GitHub никаких разъяснений или уведомлений, кроме напоминания о необходимости оплаты, не поступало.
Основные новые возможности libmdbx 0.11.7
Со времени последних новостей о выпуске libmdbx v0.11.3, помимо восстановления с действий GitHub, стоит отметить следующие улучшения и исправления:
Всего было внесено 185 изменений в 89 файлов, добавлено примерно 3300 строк, было удалено около 4100. Удалено в основном из-за очистки уже бесполезных технических файлов, связанных с GitHub и зависимыми службами.
Добавлен исправление обнаруженного эффекта/дефекта несоответствия на объединенной странице и в кеше буфера в ядре Linux. В системах, где страничный и буферный кэши действительно унифицированы, ядру не имеет смысла тратить память на две копии данных, записывая в уже выделенный в памяти файл. Таким образом, записанные данные становятся видимыми благодаря выделению памяти до завершения системного вызова write(), даже если данные еще не были записаны на диск.
В целом другое поведение не рационально, потому что при отложенном слиянии все равно придется ловить блокировки для списков страниц, копировать данные или настраивать PTE. Таким образом, негласное правило согласованности действует с 1989 года, когда в SVR4 появился единый буферный кеш. В результате поиск странных ошибок в загруженных сценариях производства libmdbx потребовал большой работы. Сначала воспроизведение проблемы, затем проверка гипотез и проверка улучшений.
Теперь мы можем с уверенностью сказать, что проблема была достоверно идентифицирована, локализована и устранена, несмотря на сложность и специфичность сценария воспроизведения. Также работу механизма обхода подтвердил один из разработчиков Erigon (Ethereum), в его случае в отладочной сборке защита срабатывала как регресс из-за дополнительной проверки ассертов.
Следует отметить, что в условиях широкого использования libmdbx в рабочих проектах принципиально важнее обеспечить надежную работу, а не выяснять, баг это или фича, и можно ли рассчитывать на такую согласованность особенно без поиска причин несогласованности внутри ядра Linux. Итак, здесь мы говорим об устранении проблемы, которая может затронуть пользователей.
Исправлена регрессия ошибки EXDEV. (связь между устройствами) при горячем копировании БД без уплотнения в другую файловую систему, как через API, так и с помощью утилиты mdbx_copy.
Kris Zyp реализовал поддержку libmdbx в Deno.
Исправлена обработка значения, установленного опцией MDBX_opt_rp_augment_limit. при обработке больших транзакций в больших базах данных. Ранее из-за ошибки могли выполняться ненужные действия, что иногда влияло на производительность реализации Ethereum (Erigon/Akula/Silkworm) и проектов Binance Chain.
Исправлено множество ошибок, в том числе для C++ API, и исправлено множество проблем сборки в редких и экзотических конфигурациях. Полный список всех существенных улучшений доступен в журнале изменений.
Наконец, если вы хотите узнать больше об этом, вы можете ознакомиться с деталями По следующей ссылке.