Chrome-browseren er blevet oversat til skriftemotoren Skrifa, skrevet i Rust

Google har overført Chrome-browseren til Skrifa-biblioteket, skrevet i Rust, som giver muligheder for behandling af skrifttyper i OpenType-format. Skrifa implementerer et underensemble af funktionerne fra skrifttemotoren FreeType, der er nødvendige for 2D-biblioteket Skia, der anvendes i Chrome og Chromium. For at frigøre Skia-biblioteket fra afhængigheden af FreeType-motoren er der skabt en ny font-backend baseret på Skrifa.

I Chrome 128 blev backend skrevet i Rust inkluderet i eksperimentel tilstand for sjældent anvendte skrifttypeformater som CFF2 og farveskrifttyper. Fra lanceringsversionen Chrome 133 blev den nye backend aktiveret for alle web-skrifttyper i versioner til Linux, Android og ChromeOS. På Windows og macOS bruges den nye motor i øjeblikket som backup og anvendes, hvis systemet ikke understøtter skrifttype-formatet, som browseren forsøger at vise.

Skrifa-koden er udviklet af ingeniører hos Google som del af værktøjsættet Fontations og er frigivet under MIT- og Apache 2.0-licenserne. For at kontrollere Skrifas funktionalitet er der forberedt omkring 700 enhedstest. Biblioteket understøtter dekodning af glyphs i formaterne glyf, CFF, CFF2, COLRv0, COLRv1, EBDT, CBDT og sbix, variable skrifttyper i formaterne glyf, CFF2 og COLRv1, og hinting af skrifttyper i formaterne glyf, CFF og CFF2.

Udover Skrifa-biblioteket, der giver en API til adgang til skrifttype-metadata og indlæsning af glyph-contour, inkluderer Fontations-værktøjsættet lavniveau biblioteker til læsning, parsing, ændring og oprettelse af skrifttypedata i OpenType-format. Fontations er i øvrigt en del af projektet Oxidize, der er oprettet for at oversætte værktøjer og biblioteker til tekst- og skrifttypebehandling fra komponenter skrevet i Python (fonttools, fontmake, nanoemoji) og C++ (HarfBuzz, FreeType) til nye implementationer skrevet i Rust.

Udviklingen af komponenter i Rust startede på grund af utilstrækkelig effektivitet i fejlfinding ved hjælp af fuzzing-test, da skrifttypeformaterne er for komplekse til at dække alle mulige kombinationer. For eksempel blev der i sidste uge opdaget en kritisk sårbarhed i FreeType, der tillader kodeudførelse ved behandling af specielt udformede skrifttyper som følge af buffer overflow. Udover FreeType-motoren kan de anvendte afhængigheder som bzip2, libpng og zlib også skabe sikkerhedsproblemer.

Brugen af Rust har betydeligt reduceret sandsynligheden for problemer med hukommelse, forbedret kodekvalitet, mindsket den tid, der bruges på at rette sikkerhedsproblemer, og fremskyndet implementeringen af forbedringer i Chromes skrifttypefunktioner. Ifølge statistik fra Google og Microsoft skyldes omkring 70% af farlige sårbarheder problemer med hukommelse, som kan undgås ved brug af Rust uden unsafe-blokke.

For eksempel ville brugen af Rust have undgået tidligere identificerede problemer i FreeType-koden, der relaterede til adgang til frigivne hukommelsesområder, buffer overflow, adgang til arrays uden indekscheck, heltalsoversvømmelser, forkert brug af ikke-nulstillede hukommelsesområder og typekonverteringsfejl.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster