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