dlib 1.8.0

Очередное крупное обновление dlib. Главной фичей релиза является поддержка декодирования прогрессивных JPEG — жуткий долгострой, который я не мог довести до ума чуть ли не все последнее десятилетие. dlib.image.io.jpeg — это теперь пакет, где все части декодера разнесены в отдельные модули. Также теперь поддерживаются одноканальные JPEG.

Добавлен новый модуль dlib.random.ziggurat и функция gaussian, которая генерирует псевдослучайные числа с нормальным распределением по алгоритму Зиккурат.

Добавлена новая функция rsqrt в dlib.math.base. Это тот самый легендарный быстрый обратный корень Джона Кармака с оригинальными комментариями из кода Quake 3 — я решил добавить эту функцию в dlib как своего рода пасхалку.

Все математические константы в dlib.math.base приведены к единой точности (количеству знаков после запятой).

Исправлена ошибка в методе Array.removeKey.

dlib теперь использует Coveralls вместо Codecov для отслеживания покрытия кода.

Поддержка JPEG в dlib

Коллекция библиотек dlib обзавелась начальной поддержкой декодирования формата JPEG (dlib.image.io.jpeg). Пока поддерживается только baseline-часть стандарта, декодер читает только изображения с прореживанием 4:2:0 и не загружает метаданные EXIF (эти ограничения постепенно будут исправлены). Как и другие декодеры графических форматов в dlib, модуль работает на основе абстрактных потоков ввода/вывода (dlib.core.stream).
Поддержка сохранения в JPEG в ближайшем будущем не планируется.