Firefox 157 включит JPEG XL по умолчанию на всех платформах
Разработчик Mozilla Тимоти Никкел опубликовал в рассылке dev-platform заявление о намерении включить (Intent to Ship) декодирование формата JPEG XL по умолчанию на всех платформах, начиная с Firefox 157. Формат стандартизирован как ISO/IEC 18181. Декодер называется jxl-rs и написан на Rust. До сих пор поддержка была скрыта за настройкой image.jxl.enabled: по умолчанию она включена только в Nightly-сборках, а с версии 152 на всех каналах доступен переключатель в Firefox Labs.
Процесс стандартизации формата уже пройден: позиция Mozilla по стандарту, нейтральная, а обзор рабочей группы W3C TAG завершился вердиктом «удовлетворены, но с замечаниями» (satisfied with concerns).
Среди других браузеров JPEG XL уже поддерживает Safari, с версии 17.0, вышедшей в 2023 году, но без прогрессивного рендеринга и без анимации. Chrome держит формат за флагом #enable-jxl-image-format, использует ту же Rust-библиотеку, но пока не намерен включать его по умолчанию.
Производительность декодера была предметом критики на стадии Intent to Prototype. С тех пор вышла версия jxl-rs 0.6.0 с поддержкой многопоточного декодирования; патчи, подключающие эту возможность в Firefox, по словам автора, должны попасть в код «в ближайшее время». С учётом этих патчей Никкел провёл сравнительный тест декодирования на пяти форматах изображений разных размеров и получил результат немного лучше, чем у Safari (использующего C++-библиотеку libjxl), на своей машине. При сравнении с другими декодерами изображений внутри самого Firefox JXL показывает близкую скорость на больших изображениях, но заметно отстаёт на маленьких.
По функциональности реализация в Firefox достигла паритета с другими форматами браузера и с реализацией JXL в движке Blink (Chrome): поддерживаются анимация и прогрессивный показ. Исключение, HDR: изображения в HDR отображаются как SDR, как и у всех остальных поддерживаемых форматов, но тональная компрессия (tone mapping) для JXL реализована заметно лучше, чем для прочих форматов. У Safari при этом нет ни прогрессивного рендеринга, ни анимации.
Тестовое покрытие описано подробно: набор web-platform-tests jpegxl проверяет корректность декодирования по битовым глубинам, альфа-каналу, градациям серого, CMYK, управлению цветом, ориентации и кодовым инструментам формата, а также способы использования изображения в HTML и CSS. Там, где wpt не покрывает нужные случаи, добавлены собственные тесты Gecko: около 30 gtest-проверок на частичное и инкрементальное декодирование, подсчёт кадров анимации, уменьшение размера при декодировании и повреждённые файлы, плюс mochitest-тесты на прогрессивный рендеринг и телеметрию, reftest-проверки и тесты производительности, результаты которых уходят в систему Perfherder. Команда фаззинга уже тестировала jxl-rs перед включением в Nightly и проведёт повторный фаззинг перед переключением настройки по умолчанию для всех.
Ключевые факты
- Начиная с Firefox 157 декодирование JPEG XL включат по умолчанию на всех платформах; сейчас формат доступен через флаг image.jxl.enabled и включён по умолчанию только в Nightly.
- Декодер, jxl-rs на Rust; версия 0.6.0 добавила многопоточное декодирование, патчи для Firefox ожидаются в ближайшее время.
- В сравнительном тесте декодирования на пяти форматах изображений Firefox оказался немного быстрее Safari, использующего C++-библиотеку libjxl.
- Safari поддерживает JPEG XL с версии 17.0 (2023 год), но без прогрессивного рендеринга и анимации; Chrome держит формат за флагом и пока не планирует включать его по умолчанию.
- Покрытие тестами включает набор web-platform-tests jpegxl и около 30 дополнительных тестов Gecko; перед включением по умолчанию декодер снова прогонят через фаззинг.
Почему это важно
JPEG XL, стандартизированный формат (ISO/IEC 18181), который годами разрабатывался в Firefox за флагом и уже прошёл проверку рабочей группы W3C TAG («удовлетворены, но с замечаниями») при нейтральной позиции самой Mozilla по стандарту. Включение по умолчанию в Firefox 157 означает, что формат поддерживают уже два независимых браузерных движка, Gecko и WebKit (Safari поддерживает JPEG XL с версии 17.0 с 2023 года), что снижает риск для сайтов, решающих отдавать изображения в этом формате без запасного варианта для значительной доли аудитории. Полной картины пока нет: Chrome держит поддержку за флагом и не объявлял о планах включить её по умолчанию.
Кому это важно
В первую очередь, веб-разработчикам и владельцам сайтов с большим объёмом изображений (фотохостинги, CMS, медиа), которые уже сейчас могут тестировать отдачу JPEG XL под флагом. Также это касается инженеров браузерных движков и участников стандартизации (W3C TAG, ISO/IEC), для которых это очередной шаг к сближению позиций разных браузеров по формату. Рядовым пользователям Firefox ничего делать не нужно, поддержка появится сама после обновления до версии 157.
Как это применить
Уже сейчас можно включить поддержку вручную: через настройку image.jxl.enabled в about:config (по умолчанию включена только в Nightly) либо через соответствующий переключатель в Firefox Labs, доступный на всех каналах начиная с версии 152. Веб-разработчики могут заранее протестировать отдачу изображений в формате JPEG XL пользователям с включённым флагом, а после выхода Firefox 157, рассчитывать на поддержку формата у всех пользователей браузера без дополнительных действий.
Можно ли доверять
Источник, официальный пост Intent to Ship разработчика Mozilla Тимоти Никкела в рассылке dev-platform: это стандартная процедура Mozilla перед включением новой возможности по умолчанию, требующая раскрытия технических деталей. В посте приведены конкретные ссылки на баг-трекер, стандарт, обзор TAG, позицию по стандартизации и подробное описание тестового покрытия (web-platform-tests, около 30 тестов Gecko, фаззинг до и после включения), что говорит о зрелости процесса.
Риски и подводные камни
В источнике нет точной календарной даты выхода самого Firefox 157, только факт, что JPEG XL включат в этой версии. Сравнение производительности с Safari описано качественно («немного лучше»), без конкретных цифр по времени или процентам, и получено на одной машине автора поста, а не в виде официального бенчмарка. Патчи для многопоточного декодирования на момент публикации поста ещё не влиты и лишь «ожидаются в ближайшее время». Поддержка HDR в Firefox для JXL ограничена: изображения показываются как SDR, как и в остальных форматах браузера. Наконец, Chrome по-прежнему держит формат за флагом без объявленных планов включения, поэтому о поддержке JPEG XL во всех основных браузерах говорить пока рано.