Дата публикации: 6 октября 2026 г.
Мы рады сообщить, что в Chrome 155 и более поздних версиях добавлена поддержка декодирования изображений в формате JPEG XL (.jxl). JPEG XL – это формат изображений нового поколения, разработанный с учетом потребностей современных веб-разработчиков и фотографов. Он обеспечивает на 30–50% более эффективное сжатие, чем JPEG, сжатие без потерь, встроенную поддержку HDR, перекодирование JPEG без потерь и многое другое.
В целом мы рекомендуем использовать оба формата, чтобы получить наилучшие результаты. Мы считаем, что JPEG XL наиболее полезен для сжатия с высокой точностью или без потерь, особенно фотографий или в случаях, когда предпочтительно детальное прогрессивное декодирование.
В этой статье мы расскажем, почему добавили JPEG XL в Chrome, как использовали Rust, чтобы обеспечить безопасность памяти, как повысили производительность и что узнали о запросах разработчиков и экосистеме веб-стандартов.
Безопасность прежде всего: повторная реализация декодера на языке Rust (jxl-rs)
Декодеры изображений – одно из самых важных и уязвимых направлений целенаправленных атак в любом современном браузере. Они обрабатывают сложные ненадежные двоичные структуры непосредственно из сети и выполняются в процессе отрисовки. Декодеры, написанные на небезопасных языках, таких как C++, часто содержат уязвимости, например ошибки чтения за пределами буфера, переполнения буфера и ошибки использования после освобождения.
Наша модель безопасности основана на использовании изолированной среды и многоуровневой защиты, а также на правиле двух.
Однако песочница – это дополнительный уровень защиты. Чтобы устранить эти риски безопасности, мы интегрировали jxl-rs – декодер JPEG XL, написанный на языке Rust.
Быстрое проектирование без ущерба для безопасности
Безопасность памяти очень важна, но если декодер с защитой памяти работает примерно так же быстро, как лучший декодер без защиты памяти, то выбор в пользу первого очевиден. Если же декодер с защитой памяти значительно уступает в производительности, то выбор уже не так очевиден.
Важнейшая часть производительности современных кодеков – это полное использование аппаратного обеспечения SIMD, доступного на современных устройствах. Чтобы сделать это безопасно, нам пришлось стабилизировать функцию target_feature_11 Rust, которая позволяет использовать инструкции SIMD без кода unsafe.
Следующим шагом было создание уровня абстракции SIMD (jxl_simd), вдохновленного библиотекой C++ Highway (которая изначально была разработана для libjxl – эталонной реализации JPEG XL на C++). В результате мы смогли создать многоплатформенную библиотеку, которая не уступает в производительности SIMD-оптимизациям, но при этом ограничивает небезопасные операции небольшим количеством тщательно проверенных мест.
Оптимизация эффективности в jxl-rs основана на оптимизации в libjxl. В частности, это касается общего конвейера обработки для шагов, пересекающих границы регионов, и минимизации копирования данных для повышения производительности оборудования. Мы отслеживаем производительность переписанной на Rust библиотеки на разных аппаратных платформах на панели мониторинга производительности jxl-rs.
Мы проверили реализацию jxl-rs с помощью различных современных методов, в том числе фаззинга и анализа кода с помощью ИИ, и не обнаружили ошибок, связанных с безопасностью памяти, за всю историю реализации. Это ещё одно подтверждение того, насколько Rust повышает безопасность памяти.
Отзывы разработчиков и проект Interop
Команда Chrome учитывает отзывы веб-разработчиков, полученные из разных источников, например из сообщений об ошибках, опросов, проекта "Сигналы разработчиков" и проекта Interop. Мы решили добавить поддержку JPEG XL, опираясь на отзывы и запросы веб-разработчиков, которые были особенно заметны в процессе Interop. В 2026 году и в предыдущие годы это предложение было очень популярным.
Чтобы обеспечить совместимость формата с разными браузерами, мы приняли участие в исследовании Interop 2026 JPEG XL. Его цель – убедиться, что все функции JPEG XL поддерживаются браузерами и проходят тестирование в Chrome.
Попробовать
С появлением JPEG XL в Chrome интернет станет быстрее, безопаснее и удобнее. Мы рекомендуем разработчикам, авторам контента и владельцам платформ начать использовать изображения и анимацию в формате .jxl.
Попробуйте новую версию, сообщите об ошибках и помогите нам сделать интернет быстрее и безопаснее для всех.
Благодарности
Мы хотим поблагодарить всех, кто внес вклад в разработку jxl-rs и его интеграцию с Chrome, и особенно Хельмута Янушку за значительный вклад в интеграцию с Chrome и в сам jxl-rs, а также Мартина Брюзе, Золтана Сабадку, Сами Букортта и Вонву Чхве за значительный вклад в разработку jxl-rs.