mirror of
https://github.com/isar/libmdbx.git
synced 2024-10-30 11:29:19 +08:00
5.9 KiB
5.9 KiB
Допеределки
- Перевод mdbx-tools на С++ и сборка для Windows.
- Переход на CMake, замена заглушек mdbx_version и mdbx_build.
- Актуализация README.md
- Переход на C++11, добавление #pramga detect_mismatch().
- Убрать MDB_DEBUG (всегда: логирование важный ситуаций и ошибок, опционально: включение ассертов и трассировка).
- Заменить mdbx_debug на mdbx_trace, и почистить...
- Заметить максимум assert() на mdbx_assert(env, ...).
Качество и CI
- Добавить в CI linux сборки для 32-битных таргетов.
Доработки API
- Поправить/Добавить описание нового API.
- Добавить возможность "подбора" режима для mdbx_env_open().
- Переименовать в API: env->db, db->tbl.
Тесты
- Тестирование поддержки lockless-режима.
- Додумать имя и размещение тестовой БД по-умолчанию.
- Реализовать cleanup в тесте.
- usage для теста.
- Логирование в файл, плюс более полный progress bar.
- Опция игнорирования (пропуска части теста) при переполнении БД.
- Базовый бенчмарк.
Развитие
- Отслеживание времени жизни DBI-хендлов.
- Отрефакторить mdbx_freelist_save().
- Хранить "свободный хвост" не связанный с freeDB в META.
- Возврат выделенных страниц в unallocated tail-pool.
- Валидатор страниц БД по номеру транзакции: ~0 при переработке и номер транзакции при выделении, проверять что этот номер больше головы реклайминга и не-больше текущей транзакции.
- Размещение overflow-pages в отдельном mmap/файле с собственной геометрией.
- Зафиксировать формат БД.
- Валидатор страниц по CRC32, плюс контроль номер транзакии под модулю 2^32.
- Валидатор страниц по t1ha c контролем снимков/версий БД на основе Merkle Tree.
- Возможность хранения ключей внутри data (libfptu).
- Асинхронная фиксация (https://github.com/leo-yuriev/libmdbx/issues/5).
- (Пере)Выделять память под IDL-списки с учетом реального кол-ва страниц, т.е. max(MDB_IDL_UM_MAX/MDB_IDL_UM_MAX, npages).
Сделано
- разделение errno и GetLastError().
- CI посредством AppVeyor.
- тест конкурентного доступа.
- тест основного функционала (заменить текущий треш).
- uint32/uint64 в структурах.
- Завершить переименование.
- Макросы версионности, сделать как в fpta (cmake?).
- Попробовать убрать yield (или что там с местом?).
- trinity для copy/compaction.
- trinity для mdbx_chk и mdbx_stat.
- проверки с mdbx_meta_eq.
- Не проверять режим при открытии в readonly.
- Поправить выбор tail в mdbx_chk.
- Там-же проверять позицию реклайминга.
- поправить проблему открытия после READ-ONLY.
- static-assertы на размер/выравнивание lck, meta и т.п.
- Зачистить size_t.
- Добавить локи вокруг dbi.
- Привести в порядок volatile.
- контроль meta.mapsize.
- переработка формата: заголовки страниц, meta, clk...
- зачистка Doxygen и бесполезных коментариев.
- Добавить поле типа контрольной суммы.
- Добавить поле/флаг размера pgno_t.
- Поменять сигнатуры.
- Добавить мета-страницы в coredump, проверить lck.
- Сделать список для txnid_t, кода sizeof(txnid_t) > sizeof(pgno_t) и вернуть размер pgno_t.
- Избавиться от умножения на размер страницы (заменить на сдвиг).
- Устранение всех предупреждений (в том числе под Windows).
- Добавить 'mti_reader_finished_flag'.
- Погасить все level4-warnings от MSVC, включить /WX.
- Проверка посредством Coverity с гашением всех дефектов.
- Полная матрица Windows-сборок (2013/2015/2017).
- Дать возможность задавать размер страницы при создании БД.
- Изменение mapsize через API с блокировкой и увеличением txn.
- Контроль размера страницы полного размера и кол-ва страниц при создании и обновлении.
- Инкрементальный mmap.
- Инкрементальное приращение размера (колбэк стратегии?).