Il browser Chrome è stato migrato sul motore di font Skrifa, scritto in Rust.

L'azienda Google ha tradotto il browser Chrome sulla libreria Skrifa, scritta in Rust e che fornisce funzionalità per la gestione dei font in formato OpenType. Skrifa implementa un sottoinsieme delle funzionalità del motore dei font FreeType, necessario per la libreria 2D Skia, utilizzata in Chrome e Chromium. Per liberare la libreria Skia dal legame con il motore FreeType, è stato creato un nuovo backend dei font, basato su Skrifa.

In Chrome 128, il backend scritto in Rust è stato incluso in modalità sperimentale per formati di font raramente utilizzati, come CFF2 e font a colori. A partire dal rilascio di Chrome 133, il nuovo backend è stato attivato per tutti i font web nelle versioni per le piattaforme Linux, Android e ChromeOS. Sulle piattaforme Windows e macOS, il nuovo motore è utilizzato temporaneamente come fallback e viene applicato nel caso in cui il sistema non supporti il formato di font che il browser sta cercando di visualizzare.

Il codice Skrifa è stato sviluppato dagli ingegneri di Google come parte degli strumenti Fontations ed è aperto sotto le licenze MIT e Apache 2.0. Per verificare la correttezza del funzionamento di Skrifa, sono stati preparati circa 700 test unitari. La libreria supporta la decodifica dei glifi nei formati glyf, CFF, CFF2, COLRv0, COLRv1, EBDT, CBDT e sbix, font variabili nei formati glyf, CFF2 e COLRv1, e il hinting dei font nei formati glyf, CFF e CFF2.

Oltre alla libreria Skrifa, che fornisce un'API per accedere ai metadati dei font e caricare i contorni dei glifi, il toolkit Fontations include librerie di basso livello per leggere, analizzare, modificare e creare dati di font nel formato OpenType. A sua volta, Fontations è parte del progetto Oxidize, creato per portare strumenti e librerie per la gestione di testo e font da componenti scritti in Python (fonttools, fontmake, nanoemoji) e C++ (HarfBuzz, FreeType) a nuove implementazioni scritte in Rust.

Lo sviluppo di componenti in Rust è iniziato a causa dell'insufficiente efficienza nell'individuazione degli errori mediante test di fuzzing, poiché i formati dei font sono troppo complessi per coprire tutte le possibili combinazioni. Ad esempio, la scorsa settimana è stata identificata una vulnerabilità critica in FreeType, che consente l'esecuzione di codice durante l'elaborazione di font appositamente formattati a causa di un overflow del buffer. Oltre al motore FreeType, anche le dipendenze utilizzate possono presentare problemi di sicurezza, come bzip2, libpng e zlib.

L'uso di Rust ha notevolmente ridotto la probabilità di problemi con la gestione della memoria, migliorato la qualità del codice, ridotto il tempo necessario per risolvere problemi di sicurezza e accelerato l'introduzione di miglioramenti nelle funzionalità di Chrome relative ai font. Secondo le statistiche di Google e Microsoft, circa il 70% delle vulnerabilità critiche è causato da problemi di gestione della memoria, che è possibile evitare utilizzando il linguaggio Rust senza blocchi unsafe.

Ad esempio, l'uso di Rust avrebbe permesso di evitare i problemi precedentemente riscontrati nel codice di FreeType, riguardanti l'accesso a aree di memoria liberate, il sovraccarico del buffer, l'accesso agli array senza controllo degli indici, i sovraccarichi interi, l'uso scorretto di aree di memoria non inizializzate e gli errori di cast dei tipi.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster