Исходный автор (ы) | Юрки Алакуйяла, Золтан Сабадка |
---|---|
Разработчик (и) | Юрки Алакуйяла, Евгений Ключников, Роберт Обрик, Золтан Сабадка, Лоде Вандевенне <47167>Первоначальный выпуск 117>15 октября 2013 г.; 6 лет назад (2013-10-15) |
Стабильный выпуск | 1.0.9 / 27 августа 2020 г.; 47 дней назад (2020-08-27) |
Репозиторий | |
Написано на | C |
Операционная система | Кросс-платформенная |
Платформа | Портативная |
Тип | Сжатие данных |
Лицензия | Лицензия MIT |
Веб-сайт | github.com / google / brotli |
Brotli - это спецификация формата данных для потоков данных сжатых с определенной комбинацией универсальный алгоритм LZ77 сжатия без потерь, кодирование Хаффмана и контекстное моделирование 2-го порядка. Brotli - это алгоритм сжатия, разработанный Google и лучше всего подходит для сжатия текста.
Сотрудники Google Юрки Алакуйяла и Золтан Сабадка изначально разработали Brotli, чтобы уменьшить размер передаваемых веб-шрифтов WOFF 2, и в этом контексте Brotli был продолжением разработки zopfli, который является zlib -совместимой реализацией стандартных спецификаций gzip и deflate. Brotli позволяет более плотную упаковку, чем gzip и deflate, благодаря нескольким улучшениям на уровне алгоритмов и форматов: использование контекстных моделей для литералов и расстояний копирования, описание расстояний копирования через прошлые расстояния, использование очереди перехода на передний план при выборе энтропийного кода, объединение -энтропийное кодирование длины букв и копий, использование алгоритмов графа при разделении блоков и увеличенное окно обратной ссылки являются примерами улучшений. Спецификация Brotli была обобщена в сентябре 2015 года для сжатия HTTP-потока (тип кодирования содержимого «br»). Эта обобщенная итерация также улучшила степень сжатия за счет использования предварительно определенного словаря часто используемых слов и фраз.
Алакуйяла и Сабадка завершили спецификацию Brotli в течение 2013–2016 годов. Спецификация сопровождалась эталонной реализацией, разработанной двумя дополнительными авторами, Евгением Ключниковым и Лоде Вандевенном, которые ранее разработали zopfli реализацию Google deflate и gzip -совместимую. сжатие в 2013 году. В отличие от zopfli, который был повторной реализацией существующей спецификации формата данных, Brotli был новым форматом данных и позволил авторам еще больше улучшить коэффициенты сжатия.
Internet Engineering Task Force утвердил спецификацию формата сжатых данных Brotli в качестве информационного запроса на комментарий (RFC 7932 ) в июле 2016 года. Формат данных Brotli является неотъемлемой частью второй итерации Формат открытого веб-шрифта.
В то время как реализация алгоритма сжатия deflate в Google zopfli названа в честь zöpfli, швейцарский немецкий слово для закуски плетеный масляный хлеб, brotli назван в честь brötli, швейцарского немецкого слова, обозначающего булочку. Собственная реализация спецификации Brotli в Google была выпущена в соответствии с условиями разрешающего бесплатного программного обеспечения лицензия MIT в 2016 году. Официальная проверка спецификации Brotli была независимо проведена Марком Адлером, один из соавторов формата и библиотеки сжатия zlib / gzip. Реализация Адлера была выпущена на условиях аналогичной разрешительной лицензии Apache. Также существуют другие реализации спецификации, в том числе на языке «источник-источник» haxe.
Brotli доступен как порт для Android в терминальном интерфейсе с собственной разделяемой библиотекой.
Brotli был впервые выпущен в 2013 году для автономного сжатия веб-шрифтов. Версия Brotli, выпущенная в сентябре 2015 года разработчиками программного обеспечения Google, содержала усовершенствования в стандартном сжатии данных без потерь, с особым упором на использование HTTP-сжатия. Кодер был частично переписан, в результате чего улучшилась степень сжатия, были ускорены как кодер, так и декодер, улучшен API потоковой передачи и добавлены дополнительные уровни качества сжатия. Кроме того, в новом выпуске улучшена производительность на разных платформах с уменьшением памяти для декодирования.
В отличие от большинства алгоритмов сжатия общего назначения, Brotli использует предварительно определенный словарь размером примерно 120 КиБ в дополнение к динамически заполняемым ( "скользящее окно") словарь. Предварительно определенный словарь содержит более 13000 общих слов, фраз и других подстрок, полученных из большого корпуса текстовых и HTML-документов. Было показано, что использование предопределенного словаря увеличивает степень сжатия там, где файл в основном содержит часто используемые слова.
Скользящее окно Brotli ограничено 16 MiB. Это позволяет выполнять декодирование на мобильных телефонах с ограниченными ресурсами, но снижает производительность Brotli на тестах сжатия с большими файлами. Ограничения небольшого размера окна можно смягчить, используя Brotli большого окна, который несовместим с RFC7932 (собственно Brotli).
Потоки, сжатые с помощью Brotli, имеют тип кодировки содержимого «br».