Давненько я не отчитывался по прогрессу разработки
dlib – а ведь с выхода 0.6.0 уже немало воды утекло. На данный момент актуальная версия библиотеки – 0.6.4, не за горами уже релиз 0.7.0. Вот наиболее важные нововведения:
- Начиная с версии 0.6.1 в dlib.core.memory доступен встроенный профайлер памяти. Если собрать библиотеку с version-ключом MemoryDebug, то он будет вести отчет по выделениям динамической памяти – если вы обнаружили утечку, профайлер поможет выяснить, какие объекты создавались и не были удалены на момент вывода отчета. К сожалению, из-за ограничений языка, пока невозможно сохранять информацию о модулях и номерах строк, в которых произошло выделение памяти (это упростило бы отладку утечек до предела), но не исключено, что в будущем такая возможность все-таки появится.
- Серьезное обновление dlib.image – с версии 0.6.2 декодер PNG больше не отражает изображение по вертикали. Это привело к многочисленным регрессионным ошибкам, так что приношу извинения за неудобства, если у вас тоже что-то сломалось. Кстати, обновился и экспортер PNG – теперь он корректно сохраняет несжимаемые изображения, такие, как пиксельарт. Появился модуль dlib.image.render.shapes с базовыми функциями рисования линий и фигур.
- В версии 0.6.4 обновился пакет dlib.math, были оптимизированы перемножение матриц и доступ к элементам вектора.
- Появился новый контейнер std.container.dict – универсальный ассоциативный массив, более совершенная замена std.container.aarray, который теперь помечен как deprecated. Dict реализован на основе префиксного дерева, что позволяет использовать любой тип данных в качестве ключа без необходимости определять хэш-функцию. В плане синтаксиса Dict в целом аналогичен встроенному ассоциативному массиву D, но не выделяет память через сборщик мусора.
Что касается планов на будущее, то на сегодняшний день в приоритете – дальнейший перевод dlib на ручное управление памятью. В версии 0.7.0, например, появятся независимые от Phobos и druntime потоки, а также полностью ручной связный список. Кроме того, будет переписан std.xml.
В более долгосрочной перспективе – будет серьезно улучшен пакет dlib.image, появится потоково-ориентированная система для обработки изображений путем построения направленных графов. Появится поддержка прогрессивного JPEG.
Не исключено также появление инструментов работы с сетью, примитивов для создания серверов (dlib.network?).