Новый план по dlib2
В связи с выходом RTLD, я слегка изменил планы на вторую версию dlib. dlib2 будет по большей части независима от Phobos и основана на RTLD. Это будет по-прежнему библиотека для Windows и POSIX, но появится также поддержка AArch64. Большинство модулей будут вынесены в RTLD, сохраняя, насколько это возможно, обратную совместимость.
Что будет вынесено в RTLD без изменений в первую очередь:
- Почти все из
dlib.core - Контейнеры
- Аллокаторы, арена
- Базовая математика
- Пул потоков (возможно, с некоторыми улучшениями)
- Функции для работы с текстом
Разграничение функций между RTLD и dlib будет не по степени независимости от Phobos, а по степени фундаментальности. Не все функции dlib имеет смысл выносить в RTLD (вследствие спорного дизайна API или ограниченной области применения). Что, скорее всего, так и останется в dlib:
- Линейная алгебра и вычислительная геометрия (нужны далеко не во всех приложениях)
- Абстрактные потоки ввода-вывода (архитектурно тяжелые, нужны не всегда)
- Интерфейс файловой системы (имеет специфический, не очень удобный API; в RTLD будет свой)
- Работа с изображениями и звуком (специфическая область применения).
Новые фичи dlib2:
dlib2.image. Новый API для работы с изображениями, безSuperImage. Старый API будет реализован в пакете dlib поверх нового. Все декодеры графических форматов пойдут в dlib2, также появится декодер DDS. Основная задача пакета — максимальное упрощение прослойки, необходимой для хранения загруженных изображений в памяти и передачи в другие API, а также поддержка сжатых GPU-форматов. Будет использоваться структура, аналогичнаяTextureBufferв Dagon. Этот же пакет будет включать функции-хелперы для создания текстур OpenGL ES.- Встроенная поддержка OpenGL ES в RTLD позволит создать новый движок холста для рисования векторной графики —
dlib2.canvas. Будут реализованы растеризация сплайнов, функции плоттера, вывод изображений, простого текста и т.д. Это будет не полноценный графический движок, но, как минимум, инструмент для визуализации данных, полезный для научных исследований и прототипирования.