Допеределки - [x] разделение errno и GetLastError() - [x] CI посредством AppVeyor - [x] тест конкурентного доступа. - [x] тест основного функционала (заменить текущий треш). - [x] uint32/uint64 в структурах - [x] Завершить переименование - [x] Макросы версионности, сделать как в fpta (cmake?) - [x] Попробовать убрать yield (или что там с местом?) - [x] trinity для copy/compaction - [x] trinity для mdbx_chk и mdbx_stat - [x] проверки с mdbx_meta_eq - [x] Не проверять режим при открытии в readonly - [x] Поправить выбор tail в mdbx_chk - [x] Там-же проверять позицию реклайминга - [x] поправить проблему открытия после READ-ONLY. - [x] static-assertы на размер/выравнивание lck, meta и т.п. - [x] Зачистить size_t - [x] Добавить локи вокруг dbi - [x] Привести в порядок volatile - [x] контроль meta.mapsize - [x] переработка формата: заголовки страниц, meta, clk... - [x] зачистка Doxygen и бесполезных коментариев. - [x] Добавить поле типа контрольной суммы. - [x] Добавить поле/флаг размера pgno_t. - [x] Поменять сигнатуры. - [x] Добавить мета-страницы в coredump, проверить lck - [x] Сделать список для txnid_t, кода sizeof(txnid_t) > sizeof(pgno_t) и вернуть размер pgno_t - [x] Избавиться от умножения на размер страницы (заменить на сдвиг). - [ ] Устранение всех предупреждений (в том числе под Windows). - [ ] Перевод mdbx-tools на С++ и сборка для Windows - [ ] Заменить заглушки mdbx_version и mdbx_build - [ ] Актуализация README.md CI - [ ] Прикрутить проверку coverity - [ ] Добавить в CI linux сборки для 32-битных таргетов Доработки API - [ ] Добавить возможность "подбора" режима для mdbx_env_open() - [ ] Дать возможность задавать размер страницы при создании БД. - [ ] Изменение mapsize через API с блокировкой и увеличением txn, плюс поправить доку. - [ ] Контроль размера страницы полного размера и кол-ва страниц при создании и обновлении. - [ ] Инкрементальный mmap. - [ ] Возврат выделенных страниц в unallocated tail-pool. - [ ] Инкрементальное приращение размера (колбэк стратегии?). - [ ] Переименовать в API: env->db, db->tbl Тест - [ ] Реализовать cleanup в тесте - [ ] usage для теста - [ ] Логирование в файл, плюс более полный progress bar - [ ] Опция игнорирования (пропуска части теста) при переполнении БД - [ ] Додумать имя и размещение тестовой БД по-умолчанию. - [ ] Базовый бенчмарк Отладка - [ ] Убрать MDB_DEBUG (всегда: логирование важный ситуаций и ошибок, опционально: включение ассертов и трассировка) - [ ] Заменить mdbx_debug на mdbx_trace, и почистить... - [ ] Заметить максимум assert() на mdbx_assert(env, ...) Развитие - [ ] Валидатор страниц БД по номеру транзакции: ~0 при переработке и номер транзакции при выделении, проверять что этот номер больше головы реклайминга и не-больше текущей транзакции. - [ ] Добавить free_backlog в meta - [ ] Валидатор страниц по CRC32, плюс контроль номер транзакии под модулю 2^32. - [ ] Валидатор страниц по t1ha c контролем снимков/версий БД на основе Merkle Tree. - [ ] Возможность хранения ключей внутри data (libfptu) - [ ] Асинхронная фиксация (https://github.com/ReOpen/libmdbx/issues/5) - [ ] (Пере)Выделять память под IDL-списки с учетом реального кол-ва страниц, т.е. max(MDB_IDL_UM_MAX/MDB_IDL_UM_MAX, npages)