Prehliadač Chrome bol presunutý na font engine Skrifa, napísaný v Rust.

Spoločnosť Google preložila prehliadač Chrome na knižnicu Skrifa, napísanú v jazyku Rust, ktorá poskytuje možnosti pre spracovanie písiem vo formáte OpenType. Skrifa implementuje podmnožinu možností písiemového enginu FreeType, potrebnú pre 2D knižnicu Skia, ktorá sa používa v Chromu a Chromium. Na zbavenie knižnice Skia väzby na engine FreeType bol vytvorený nový backend písiem založený na Skrifa.

V Chrome 128 bol napísaný na Rust backend zahrnutý v experimentálnom režime pre málo používané formáty písiem, ako sú CFF2 a farebné písma. Od vydania Chrome 133 je nový backend aktivovaný pre všetky webové písma v zostavách pre platformy Linux, Android a ChromeOS. Na platformách Windows a macOS sa nový engine zatiaľ používa ako záložný a aplikuje sa v prípade, že systém nepodporuje formát písma, ktorý sa prehliadač pokúša zobraziť.

Kód Skrifa bol vyvinutý inžiniermi Google v rámci nástrojového balíka Fontations a je otvorený pod licenciami MIT a Apache 2.0. Na overenie správnosti fungovania Skrifa bolo pripravených približne 700 unit testov. Knižnica podporuje dekódovanie glifov vo formátoch glyf, CFF, CFF2, COLRv0, COLRv1, EBDT, CBDT a sbix, variabilné písma vo formátoch glyf, CFF2 a COLRv1, a hintovanie písiem vo formátoch glyf, CFF a CFF2.

Okrem knižnice Skrifa, ktorá poskytuje API na prístup k metadátam písiem a načítanie obrysov glifov, nástrojový balík Fontations obsahuje nízkoúrovňové knižnice na čítanie, analýzu, úpravu a vytváranie písiem v formáte OpenType. Samotný Fontations je súčasťou projektu Oxidize, vytvoreného na prevod utilít a knižníc pre prácu s textom a písmami z komponentov v jazykoch Python (fonttools, fontmake, nanoemoji) a C++ (HarfBuzz, FreeType) na nové implementácie napísané v Ruste.

Vývoj komponentov v Rust začal kvôli nedostatočnej efektívnosti odhaľovania chýb pomocou fuzzing testovania, keďže formáty písiem sú príliš zložité na pokrytie všetkých možných kombinácií. Napríklad, minulý týždeň bola v FreeType zistená kritická zraniteľnosť umožňujúca vykonávanie kódu pri spracovaní špeciálne upravených písiem z preplnenia buffera. Okrem engine FreeType môžu problémy s bezpečnosťou spôsobovať aj používané závislosti, ako bzip2, libpng a zlib.

Použitie Rustu výrazne znížilo pravdepodobnosť problémov s pamäťou, zlepšilo kvalitu kódu, znížilo čas potrebný na opravy bezpečnostných problémov a urýchlilo implementáciu vylepšení v možnostiach Chrome súvisiacich s písmami. Podľa štatistík Google a Microsoftu je približne 70 % nebezpečných zraniteľností spôsobených problémami s pamäťou, ktorým sa dá predchádzať použitím jazyka Rust bez unsafe blokov.

Napríklad použitie Rustu by umožnilo vyhnúť sa predtým identifikovaným problémom v kode FreeType, týkajúcim sa prístupu k uvoľneným oblastiam pamäte, pretečeniu buffera, prístupu k poľom bez kontroly indexov, celočíselným pretečeniam, nesprávnemu používaniu neinitializovaných oblastí pamäte a chybám pri konverzii typov.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster