27 октября, после более двух лет разработки, состоялся выпуск стабильной версии 1.2.0 проекта Brotli, распространяемого по лицензии MIT.
Brotli – это универсальный алгоритм сжатия без потерь, который сжимает данные с помощью комбинации современного варианта алгоритма LZ77, кодирования Хаффмана и моделирования контекста второго порядка, с коэффициентом сжатия, сопоставимым с лучшими из доступных в настоящее время универсальных методов сжатия. По скорости он схож с deflate, но обеспечивает более плотное сжатие.
Спецификация формата Brotli определена в RFC 7932.
Основная часть проекта написана на языке C. Также предоставляются биндинги для C#, Go, Java, JavaScript и Python.
Список изменений:
- В кодер и декодер добавлена статическая инициализация для уменьшения размера двоичного файла.
- Увеличена скорость кодирования.
- В кодере и декодере статические таблицы используют «малую» модель, что позволяет использовать двоичные файлы размером более 2 ГБ.
- В консольном псевдониме
brcatразрешено декодирование сцепленных потоков brotli. - cgo: поддержка «сырых» словарей.
- cgo: линковка через pkg-config.
- Java: декодер на Kotlin.
- Java: удалена
finalize()для нативных сущностей. - Java: исправлена передача неправильной длины в нативный кодер при сжатии.
- Python: добавлен метод
Decompressor::can_accept_more_dataи опциональный аргументoutput_buffer_limit Decompressor::process, что позволяет смягчить последствия неожиданно большого вывода. - Python: разрешено ограничение вывода декодера.
- Python: разрешена многоэтапная инициализация модулей.
- Улучшена инсталляция страниц man.
- Различные улучшения для системы сборки Bazel.
