Китобхонаи libmdbx 0.13.7 (MDBX) бароварда шуд, ки пойгоҳи додаҳои дорои маҳсулнокии баланд, паймон ва дарунсохтаи калидҳоро амалӣ мекунад. Рамзи libmdbx дар доираи Литсензияи Apache 2.0 паҳн карда мешавад. Ҳама системаҳои оператсионӣ ва меъмории ҷорӣ, инчунин Elbrus 2000-и русӣ дастгирӣ карда мешаванд. Барои libmdbx, API-и пешрафта барои C++ ва инчунин пайвандҳои аз ҷониби ҳаваскорон дастгирӣшаванда ба забонҳои Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala пешниҳод карда мешаванд. Лоиҳаҳое, ки libmdbx-ро истифода мебаранд, иборатанд аз Isar, Erigon ва Reth, инчунин коркардҳои StarkWare ва Positive Technologies.
Таърихан, libmdbx як коркарди амиқи DBMS LMDB мебошад ва аз аҷдоди худ аз ҷиҳати эътимоднокӣ, маҷмӯи хусусиятҳо ва иҷроиш болотар аст. Дар муқоиса бо LMDB, libmdbx ба сифати код, устувории API, санҷиш ва санҷишҳои автоматӣ диққати зиёд медиҳад. Утилита барои тафтиши якпорчагии сохтори пойгоҳи додаҳо бо баъзе қобилиятҳои барқарорсозӣ таъмин карда мешавад. Аз ҷиҳати технологӣ, libmdbx ACID, сериализатсияи қавии тағирот ва хондани бебандро бо миқёси хаттӣ дар байни ядроҳои CPU пешниҳод мекунад. Фишурдани худкор, идоракунии автоматии андозаи пойгоҳи додаҳо ва арзёбии дархости диапазон дастгирӣ карда мешавад.
Тағйироти асосӣ:
- Ҳангоми истифодаи семафорҳои SysV як хатои муҳим дар функсияи mdbx_env_resurrect_after_fork() ислоҳ карда шуд. Хатогӣ танҳо пас аз тавлиди раванди кӯдакона тавассути fork() дар заминаи транзаксияи ҷории навиштан пайдо шуд, ки ба кори нодурусти семафорҳо ва сипас ба хатогиҳои гуногун, аз ҷумла фасоди пойгоҳи додаҳо оварда расонд. Мушкилот аз замони пайдоиши mdbx_env_resurrect_after_fork() ва macOS-и таъсиршуда, инчунин платформаҳои POSIX ҳангоми сохтани имконоти MDBX_LOCKING=5 вуҷуд дошт.
- Мушкилот дар API Copy DB, ки дар системаҳои POSIX-и ғайри Linux (асосан macOS) ва дар баъзе мавридҳо, вақте ки файли мавриди ҳадаф дар системаи файлии ғайримаҳаллӣ ҷойгир буд, ҳал карда шуд. Мушкилот боиси баргардонидани хатои EWOULDBLOCK/EAGAIN гардид, ки дар натиҷаи камбуд/низоъ дар қулфҳои fcntl(F_SETLK) ва flock() дар ядрои ОС ба вуҷуд омадааст. Коркарди хатогиҳои ба даст овардани қулфи файл дар Copy API дар системаҳои POSIX аз нав кор карда шуд.
- Хатогие ислоҳ карда шуд, ки боиси бозгашти ғайричашмдошти MDBX_BAD_DBI ҳангоми оғози транзаксияҳои сершумор дар як раванди ягона пас аз кушодани пойгоҳи додаҳо гардид.
- Хатогие ислоҳ карда шуд, ки боиси ногаҳон баргардонидани MDBX_DBS_FULL ҳангоми боз кардани мизҳои аллакай кушодашуда ва ба маҳдудияти дастаки кушодаи DBI аллакай расида буд.
- Хатогии собит сохтани платформаи Android, вақте ки _FILE_OFFSET_BITS ба таври возеҳ муайян карда шудааст.
- Ислоҳ хато бо истифодаи ENOMEM ба ҷои MDBX_ENOMEM. Он метавонад вобаста ба конфигуратсия ва/ё версияи SDK-ро дар платформаҳои ғайри POSIX/Windows вайрон кунад.
- Якчанд тасдиқоти нодурусте, ки боиси шикастани сохтани дебаг дар ҳолатҳои мушаххас шуданд, пеш аз ҳама дар коди txn_end(), txn_lock() ва txn_unlock() ҳам дар Windows ва ҳам POSIX ислоҳ ё хориҷ карда шуданд.
- Огоҳиҳои хурди MSVC ислоҳ карда шуданд. Огоҳиҳои ғайрифаъол C5286 ва C5287.
- Мантиқи рад кардани истифодаи қулфҳои OFD дар платформаҳои POSIX такмил дода шуд. Ҳоло, ба ғайр аз EINVAL, рамзҳои хатогии иловагӣ ба назар гирифта мешаванд (ENOSYS, ENOIMPL, ENOTSUP, ENOSUPP, EOPNOTSUPP), ки имкон медиҳад, ки китобхонаи тартибдодашуда дар баъзе ҳолатҳо кор кунад, вақте ки ядро/контейнер/эмулятори ҷорӣ зангҳои зарурии системаро дастгирӣ намекунад.
- Чаҳорчӯбаи санҷиш ҳоло варианти --numa -ро дастгирӣ мекунад. » барои пайваст кардани санҷиши стохастикӣ ба гиреҳи NUMA. Тақсимоти возеҳ дар саросари гиреҳҳои NUMA ба скрипти батарея/tmux илова карда шуд, ки ин самаранокиро ҳангоми санҷиш дар мошинҳои NUMA ба таври назаррас афзоиш додааст.
- Скрипти стохастикӣ тартиби тасодуфиро иҷро мекунад, ки дар он санҷишҳои инфиродӣ иҷро мешаванд.
Манбаъ: opennet.ru
