Gepubliceerd: 6 oktober 2026
We zijn blij te kunnen aankondigen dat Chrome vanaf Chrome 155 ondersteuning biedt voor decodering van de afbeeldingsindeling JPEG XL (.jxl). JPEG XL is een afbeeldingsindeling van de volgende generatie die is ontworpen om te voldoen aan de behoeften van moderne webontwikkelaars en fotografen. Het biedt 30 tot 50% betere compressie dan jpeg, lossless compressie, ingebouwde HDR-ondersteuning en lossless jpeg-transcodering.
Over het algemeen raden we je aan zowel AVIF als JPEG XL te proberen voor de beste resultaten. We verwachten dat JPEG XL het nuttigst is voor compressie met hoge kwaliteit of zonder verlies, vooral van fotografische afbeeldingen of in gevallen waarin een gedetailleerde progressieve decodering de voorkeur heeft.
In dit bericht leggen we uit waarom we JPEG XL naar Chrome hebben gebracht, hoe we Rust hebben gebruikt om eerst geheugenveiligheid te garanderen, het uitgebreide prestatiewerk dat het snel maakt en wat de reis ons vertelt over feedback van ontwikkelaars en het ecosysteem van webstandaarden.
Veiligheid voorop: de decoder opnieuw implementeren in Rust (jxl-rs)
Afbeeldingsdecoders zijn een van de meest kritieke en gerichte aanvalsoppervlakken in elke moderne webbrowser. Ze verwerken complexe, niet-vertrouwde binaire structuren rechtstreeks vanuit het netwerk en worden uitgevoerd in het weergaveproces. In het verleden waren decoders die in geheugenonveilige talen zoals C++ waren geschreven, vatbaar voor kwetsbaarheden zoals leesbewerkingen buiten het bereik, heap-overflows en use-after-free-bugs.
Ons beveiligingsmodel is gebaseerd op sandboxing en defense-in-depth, geleid door de regel van twee.
Sandboxing is een secundaire verdedigingslaag. We hebben jxl-rs geïntegreerd, een pure Rust-implementatie van de JPEG XL-decoder, om deze beveiligingsrisico's bij de bron te elimineren.
Ontwerp voor snelheid zonder in te boeten op veiligheid
Geheugenveiligheid is cruciaal, maar een geheugenveilige decoder die ongeveer net zo snel is als het beste niet-geheugenveilige alternatief, is een veel duidelijkere keuze dan een keuze met een aanzienlijk prestatiecompromis.
Een fundamenteel onderdeel van de prestaties van moderne codecs is dat ze de SIMD-hardware die beschikbaar is op moderne apparaten volledig benutten. Hiervoor moest de functie target_feature_11 Rust worden gestabiliseerd, waardoor SIMD-instructies konden worden gebruikt zonder dat unsafe-code vereist was.
De volgende stap was om een SIMD-abstractielaag (jxl_simd) te maken, geïnspireerd door de C++-bibliotheek Highway (die oorspronkelijk is ontwikkeld voor libjxl, de C++-referentie-implementatie van JPEG XL). Samen maakten deze ontwikkelingen het mogelijk om een bibliotheek voor meerdere platforms te schrijven die geen concessies doet aan SIMD-prestatieoptimalisaties, terwijl onveilige bewerkingen worden beperkt tot een klein aantal zeer goed gecontroleerde locaties.
Prestatieoptimalisaties in jxl-rs zijn gebaseerd op die in libjxl. Dit omvat een algemene verwerkingspijplijn voor stappen die regio-grenzen overschrijden, terwijl het aantal gegevenskopieën wordt geminimaliseerd om de hardwareprestaties te maximaliseren. We houden de prestaties van de Rust-herimplementatie bij op verschillende hardwareplatforms op het prestatiedashboard van jxl-rs.
We hebben de jxl-rs-implementatie geverifieerd met verschillende geavanceerde technieken, waaronder fuzzing en AI-beoordeling van de code. We hebben geen bugs voor geheugenveiligheid gevonden in de hele implementatiegeschiedenis. Dit is nog een validatie van de enorme verbeteringen die Rust biedt voor geheugenveiligheid.
Feedback van ontwikkelaars en het Interop-project
Het Chrome-team houdt rekening met feedback van webontwikkelaars via verschillende kanalen, zoals bugs, enquêtes, het Developer Signals Project en het Interop Project. Onze beslissing om JPEG XL te leveren is gebaseerd op consistente feedback en verzoeken van webontwikkelaars, die het meest zichtbaar zijn in het Interop-proces, waar het een populair voorstel was in 2026 en enkele jaren daarvoor.
We hebben deelgenomen aan het Interop 2026 JPEG XL-onderzoek om te zorgen dat het formaat interoperabel is in browsers. We willen zorgen dat er testdekking is voor alle JPEG XL-functies in browsers en dat die tests slagen in Chrome.
Uitproberen
Nu JPEG XL officieel in Chrome is geïntroduceerd, wordt het web sneller, uitgebreider en veiliger. We moedigen ontwikkelaars, contentmakers en platformeigenaren aan om .jxlafbeeldingen en animaties te gebruiken in hun pijplijnen.
Probeer het uit, meld bugs en help ons om het web sneller en veiliger te maken voor iedereen.
Erkenning
We willen iedereen bedanken die heeft bijgedragen aan jxl-rs of de integratie ervan in Chrome, en in het bijzonder Helmut Januschka voor zijn aanzienlijke bijdragen aan zowel de Chrome-integratie als jxl-rs zelf, en Martin Bruse, Zoltan Szabadka, Sami Boukortt en Wonwoo Choi voor hun aanzienlijke bijdragen aan jxl-rs zelf.