Pregledač Chrome prešao je na font motor Skrifa, napisan na Rustu

Podjetje Google je zamenjalo brskalnik Chrome z knjižnico Skrifa, napisano v jeziku Rust, ki omogoča obdelavo pisav v formatu OpenType. Skrifa implementira sklop možnosti pisavskega motorja FreeType, potrebnega za 2D-knjižnico Skia, ki se uporablja v Chromu in Chromiumu. Za odstranitev odvisnosti knjižnice Skia od motorja FreeType je bil ustvarjen nov pisavni vmesnik, osnovan na Skrifi.

V Chrome 128 je bil v eksperimentalnem načinu vključen vmesnik, napisan v Rustu, za redko uporabljene formate pisav, kot sta CFF2 in barvne pisave. Od izida Chromesa 133 se nov vmesnik uporablja za vse spletne pisave v različicah za platforme Linux, Android in ChromeOS. Na platformah Windows in macOS se novi motor zaenkrat uporablja kot rezerva in se aktivira, če sistem ne podpira formata pisave, ki ga poskuša prikazati brskalnik.

Koda Skrifa je bila razvita s strani inženirjev Googla v okviru orodja Fontations in je odprta pod licencami MIT in Apache 2.0. Za preverjanje pravilnosti delovanja Skrife je bilo pripravljenih približno 700 enotnih testov. Knjižnica podpira dekodiranje glifov v formatih glyf, CFF, CFF2, COLRv0, COLRv1, EBDT, CBDT in sbix, variabilne pisave v formatih glyf, CFF2 in COLRv1, ter hinting pisav v formatih glyf, CFF in CFF2.

Poleg knjižnice Skrifa, ki zagotavlja API za dostop do metapodatkov pisav in nalaganje obrisov glifov, orodje Fontations vključuje nizkonivojske knjižnice za branje, analizo, spreminjanje in ustvarjanje pisavskih podatkov v formatu OpenType. Orodje Fontations je del projekta Oxidize, ki je bil ustvarjen za prenos orodij in knjižnic za delo s besedilom in pisavami z komponent iz jezikov Python (fonttools, fontmake, nanoemoji) in C++ (HarfBuzz, FreeType) na nove implementacije, napisane v Rustu.

Razvoj komponent v Rustu se je začel zaradi pomanjkljive učinkovitosti pri odkrivanju napak s pomočjo fuzzing-testiranja, saj so formati pisav preveč zapleteni za pokritje vseh možnih kombinacij. Na primer, prejšnji teden je bila v FreeTypeu odkrita kritična ranljivost, ki omogoča izvajanje kode pri obdelavi posebej oblikovanih pisav zaradi prenosa pomnilnika. Poleg motorja FreeType lahko težave z varnostjo povzročajo tudi odvisnosti, kot so bzip2, libpng in zlib.

Uporaba Rust-a je znatno zmanjšala verjetnost težav pri upravljanju z pomnilnikom, povečala kakovost kode, zmanjšala čas, potreben za odpravljanje težav z varnostjo, ter pospešila uvajanje izboljšav v Chrome-ove funkcionalnosti, povezane s pisavami. Po statistikah Google-a in Microsoft-a približno 70 % nevarnih ranljivosti izhaja iz težav pri upravljanju z pomnilnikom, ki se jim lahko izognemo z uporabo jezika Rust brez unsafe-blokov.

Na primer, uporaba Rust-a bi omogočila izogibanje prej odkritim težavam v kodi FreeType, povezanih z dostopom do že osvobojenih področij pomnilnika, prekoračitvijo meja pomnilniških blokov, dostopom do tabel brez preverjanja indeksa, celobrojnim prelivanjem, nepravilno uporabo neizčiščenih področij pomnilnika ter napakam pri pretvorbah tipov.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster