dlib 0.8.0

Встречайте новую версию коллекции библиотек dlib – 0.8.0. Это весьма значимый релиз, так как в нем дебютирует новый пакет dlib.audio – набор инструментов для обработки звука. Но – обо всем по порядку:

  • Исправлен серьезный баг в dlib.core.thread, связанный с удалением неинициализированного потока.
  • Новый пакет dlib.audio содержит абстрактные интерфейсы для аудиоданных (как потоковых, так и хранящихся в памяти), а также простейшие реализации этих интерфейсов. Пакет поддерживает 8 и 16-битные сэмплы, произвольные количества каналов и значения частоты дискретизации. Доступ к сэмплам и их обработка осуществляются числами с плавающей запятой. Есть сохранение и загрузка аудиофайлов формата WAV, в будущем планируется поддержка FLAC и, возможно, других форматов.
  • Сильно обновлен пакет dlib.image – все фильтры и операции над изображениями теперь поддерживают ручное управление памятью. Добавлен новый фильтр chroma key на основе евклидового расстояния, а также новый алгоритм выделения границ на основе морфологического градиента. Исправлено несколько критичных багов (в частности, в свертке изображений, бикубическом и lanczos-ресэмплинге).
  • В dlib.filesystem улучшен модуль stdfs (реализация FileSystem с ручным управлением памятью) – появилась поддержка создания и обхода каталогов, удаления каталогов и файлов.
  • В репозиторий dlib добавлены инструменты для автоматической подготовки HTML-документации из вики-страниц проекта.

Новые статьи от LHS

Dlang.ru вернулся к жизни

Позитивная новость для российских пользователей D: администрация портала dlang.ru, главного русскоязычного сайта по языку D, объявила о завершении технических работ – движок сайта полностью переписан, и с сегодняшнего дня сайт, после годового простаивания, вновь функционирует в обычном режиме.

Новости по dlib

Давненько я не отчитывался по прогрессу разработки 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?).

Возрождение dprogramming.ru

Давно слежу за этим сайтом – долгое время он был неактивен, затем домен dprogramming.ru принадлежал каким-то левым лицам, и на нем размещался не имеющий отношения к D контент, но теперь его выкупили, и там вновь размещена информация по языку D. Нынешний владелец домена, впрочем, к старому dprogramming.ru не имеет никакого отношения, поэтому сайт абсолютно новый. Сейчас там есть новости по языку и парочка статей – будем надеяться на дальнейшее развитие.