Выходит libmdbx 0.11.7 с переносом проекта на GitFlic, исправлениями ошибок и многим другим.

В выпуск новой библиотеки 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, и исправлено множество проблем сборки в редких и экзотических конфигурациях. Полный список всех существенных улучшений доступен в журнале изменений.



Наконец, если вы хотите узнать больше об этом, вы можете ознакомиться с деталями По следующей ссылке.




2022-04-23T12:55:53
приложений