Chrome'i brauser on tõlgitud Rustis kirjutatud Skrifa fontajamisse.

Google on viinud Chrome brauseri üle Skrifa teeki, mis on kirjutatud Rust keeles ja mis pakub võimalusi OpenType vormingus fondide töötlemiseks. Skrifa rakendab FreeType fondimootori alatüübi funktsioone, mis on vajalikud 2D Skia teegi jaoks, mida kasutatakse Chromes ja Chromiumis. Skia teegi vabanemiseks FreeType mootori sõltuvusest on loodud uus fondi tagaplaan, mis põhineb Skrifal.

Chrome 128-s on Rust-is kirjutatud tagaplaan sisse lülitatud katsetusrežiimis harva kasutatavate fondivormingute, näiteks CFF2 ja värviliste fondide jaoks. Alates Chrome 133 väljaandmisest on uus tagaplaan kaasatud kõikide veebifontide jaoks Linuxi, Androidi ja ChromeOSi platvormide kogumites. Windowsi ja macOS platvormidel kasutatakse uut mootori praegu varuvariantidena, kui süsteem ei toeta fondivormingut, mida brauser üritab kuvada.

Skrifa kood on välja töötatud Google'i inseneride poolt Fontations tööriistade komplekti raames ja see on avatud MIT ja Apache 2.0 litsentsi all. Skrifa töökorralduse kontrollimiseks on valmistatud ligikaudu 700 üksuse testi. Teek toetab glüfide dekodeerimist glyf, CFF, CFF2, COLRv0, COLRv1, EBDT, CBDT ja sbix vormingutes, variatiivseid fonde glyf, CFF2 ja COLRv1 vormingutes ning fondide hintingut glyf, CFF ja CFF2 vormingutes.

Peale Skrifa teegi, mis pakub API-d fondi metadatele juurde pääsemiseks ja glüfide kontuuride laadimiseks, sisaldab Fontations tööriistade komplekt madalama taseme teeke, et lugeda, analüüsida, muuta ja luua OpenType fondi andmeid. Fontations on omakorda osa Oxidize projektist, mis on loodud tekstide ja fondide töötluseks mõeldud utiliidide ja teekide üleviimiseks Python (fonttools, fontmake, nanoemoji) ja C++ (HarfBuzz, FreeType) komponentidest uutesse rakendustesse, mis on kirjutatud Rust keeles.

Komponentide arendamine Rust keeles algas kuna fuzzing-testi kaudu vigade tuvastamine oli ebapiisav, kuna fondivormingud on liiga keerulised, et katta kõik võimalikud kombinatsioonid. Näiteks eelmisel nädalal tuvastati FreeType'is kriitiline haavatavus, mis võimaldab koodi täitmist spetsiaalselt loodud fondide töötlemisel mälupuhvri ületäitumise tõttu. Lisaks FreeType mootorile võivad turvaprobleeme tekitada ka selle kasutatavad sõltuvused, nagu bzip2, libpng ja zlib.

Rust'i kasutamine on oluliselt vähendanud mäluprobleemide tekkimise tõenäosust, parandanud koodi kvaliteeti, vähendanud aega turvaküsimustega tegelemiseks ja kiirendanud Chrome'i fondifunktsioonide täiustamist. Google'i ja Microsofti statistika kohaselt põhjustavad ligikaudu 70% ohtlikest haavatavustest mäluprobleemid, mida saaks vältida Rust keele kasutamisega, ilma et oleks vaja unsafe blokke.

Näiteks Rust'i kasutamine oleks võimaldanud vältida varem tuvastatud FreeType'i koodis esinenud probleeme, mis olid seotud vabastatud mälu aladele viitamise, puhvrivälistest aladest väljalangemise, indekseeritud massiivide kontrollimata kasutamise, täisarvude ületäitumiste, mittetäidetud mälu alade vale kasutamise ja tüüpide konversioonivigadega.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster