Wprowadzenie formatu JPEG XL w Chrome

Opublikowano: 6 października 2026 r.

Z przyjemnością informujemy, że od wersji 155 Chrome obsługuje dekodowanie formatu obrazu JPEG XL (.jxl). JPEG XL to format obrazu nowej generacji, który został opracowany z myślą o potrzebach współczesnych deweloperów stron internetowych i fotografów. Oferuje o 30–50% lepszą kompresję niż JPEG, kompresję bezstratną, wbudowaną obsługę HDR, bezstratne transkodowanie JPEG i inne funkcje.

Ogólnie zalecamy wypróbowanie zarówno formatu AVIF, jak i JPEG XL, aby uzyskać najlepsze wyniki. Oczekujemy, że format JPEG XL będzie najbardziej przydatny w przypadku kompresji o wysokiej wierności lub bezstratnej, zwłaszcza w przypadku zdjęć lub w sytuacjach, w których preferowane jest precyzyjne progresywne dekodowanie.

W tym poście wyjaśnimy, dlaczego wprowadziliśmy JPEG XL w Chrome, jak użyliśmy języka Rust, aby zapewnić bezpieczeństwo pamięci, jakie działania podjęliśmy, aby przyspieszyć działanie przeglądarki, oraz czego dowiedzieliśmy się o opiniach deweloperów i ekosystemie standardów internetowych.

Bezpieczeństwo przede wszystkim: ponowne wdrożenie dekodera w Rust (jxl-rs)

Dekodery obrazów są jednym z najważniejszych i najczęściej atakowanych elementów w każdej nowoczesnej przeglądarce internetowej. Przetwarzają one złożone, niezaufane struktury binarne bezpośrednio z sieci i działają w procesie renderowania. Dekodery napisane w językach niebezpiecznych pod względem zarządzania pamięcią, takich jak C++, były podatne na luki w zabezpieczeniach, np. odczytywanie danych spoza zakresu, przepełnienia sterty i błędy odwołania do pamięci po jej zwolnieniu.

Nasz model bezpieczeństwa opiera się na piaskownicy i obronie warstwowej, zgodnie z zasadą dwóch. Piaskownica jest jednak drugorzędną warstwą ochrony. Aby wyeliminować te zagrożenia u źródła, zintegrowaliśmy jxl-rs, czyli implementację dekodera JPEG XL w języku Rust.

Projektowanie z myślą o szybkości bez rezygnowania z bezpieczeństwa

Bezpieczeństwo pamięci jest kluczowe, ale dekoder bezpieczny pod względem pamięci, który jest mniej więcej tak samo szybki jak najlepsza alternatywa niezapewniająca bezpieczeństwa pamięci, jest znacznie bardziej oczywistym wyborem niż opcja, która wiąże się ze znacznym kompromisem w zakresie wydajności.

Podstawową częścią wydajności nowoczesnych kodeków jest pełne wykorzystanie sprzętu SIMD dostępnego na nowoczesnych urządzeniach. Aby to zrobić w bezpieczny sposób, target_feature_11 funkcja języka Rust musiała zostać ustabilizowana, co umożliwiło używanie instrukcji SIMD bez konieczności stosowania kodu unsafe.

Następnym krokiem było utworzenie warstwy abstrakcji SIMD (jxl_simd) inspirowanej biblioteką Highway w C++ (która została pierwotnie opracowana na potrzeby libjxl, referencyjnej implementacji JPEG XL w C++). Te zmiany umożliwiły napisanie biblioteki wieloplatformowej, która nie wpływa negatywnie na optymalizacje SIMD, a jednocześnie ogranicza niebezpieczne operacje do niewielkiej liczby dokładnie sprawdzonych lokalizacji.

Optymalizacje skuteczności w jxl-rs są oparte na optymalizacjach w libjxl. Obejmuje to ogólny potok przetwarzania w przypadku kroków przekraczających granice regionów, a jednocześnie minimalizuje kopiowanie danych, aby zmaksymalizować wydajność sprzętu. Śledzimy wydajność reimplementacji w Rust na różnych platformach sprzętowych na panelu wydajności jxl-rs.

Zweryfikowaliśmy implementację jxl-rs za pomocą różnych najnowocześniejszych technik, w tym fuzzingu i sprawdzania kodu przez AI. W całej historii implementacji nie znaleźliśmy żadnych błędów związanych z bezpieczeństwem pamięci, co jest kolejnym potwierdzeniem ogromnych ulepszeń, jakie Rust wprowadza w zakresie bezpieczeństwa pamięci.

Opinie deweloperów i projekt interoperacyjności

Zespół Chrome bierze pod uwagę opinie deweloperów stron internetowych z różnych kanałów, takich jak zgłoszenia błędów, ankiety, projekt Developer Signals i projekt Interop. Nasza decyzja o wdrożeniu formatu JPEG XL była oparta na spójnych opiniach i prośbach deweloperów stron internetowych, które były najbardziej widoczne w procesie Interop. W 2026 roku był to popularny pomysł, a także w kilku poprzednich latach.

Aby zapewnić interoperacyjność formatu w różnych przeglądarkach, wzięliśmy udział w badaniu Interop 2026 JPEG XL. Dzięki temu mamy pewność, że wszystkie funkcje JPEG XL są objęte testami w przeglądarkach i że testy te przechodzą w Chrome.

Wypróbuj

Dzięki oficjalnemu wprowadzeniu formatu JPEG XL w Chrome internet staje się szybszy, bogatszy i bezpieczniejszy. Zachęcamy deweloperów, twórców treści i właścicieli platform do rozpoczęcia korzystania z .jxl obrazów i animacji w swoich procesach.

Wypróbuj ją, zgłaszaj błędy i pomóż nam tworzyć szybszy i bezpieczniejszy internet dla wszystkich.

Podziękowania

Dziękujemy wszystkim osobom, które przyczyniły się do powstania jxl-rs lub jego integracji z Chrome, a w szczególności Helmutowi Januschce za znaczący wkład zarówno w integrację z Chrome, jak i w jxl-rs, oraz Martinowi Bruse, Zoltanowi Szabadce, Samiemu Boukorttowi i Wonwoo Choiowi za znaczący wkład w samą bibliotekę jxl-rs.