Il progetto Chromium supporterà l'uso delle librerie Rust

cromo

, il progetto Chromium supporterà l'uso di librerie C++ Rust di terze parti in Chromium

Google ha recentemente annunciato che il team responsabile del progetto Chromium sta lavorando all'integrazione di una toolchain Rust per la produzione nel proprio sistema di compilazione.

Per coloro che ancora non conoscono Rust, dovrebbero ricordarlo bene perché questo linguaggio di programmazione, sviluppato da Mozilla appositamente per essere utilizzato nella scrittura di un browser, ha iniziato a penetrare e ad essere accettato all'interno di molti progetti importanti, uno di questi è il Kernel Rust.Linux.

Questo ci consentirà di includere il codice Rust nel binario di Chrome nel corso del prossimo anno. L'obiettivo è iniziare in piccolo e stabilire aspettative chiare per quali biblioteche saranno prese in considerazione quando saranno pronte.

È quindi logico che Chromium stia finalmente iniziando a sviluppare anche questa tecnologia. Per Google, l'introduzione di Rust in Chromium consentirà di raggiungere l'obiettivo di fornire un modo più semplice e sicuro per applicare la "regola dei due", che consiste nell'accelerare lo sviluppo e migliorare la sicurezza di Chrome. Inoltre, contribuisce a migliorare la sicurezza eliminando gli errori di memoria e riducendo la densità di bug nel codice.

Sappiamo che C++ e Rust possono lavorare molto bene insieme, grazie a strumenti come cxx, autocxx bindgen, cbindgen, diplomat e (sperimentale) crubit. Tuttavia, ci sono anche limitazioni. Possiamo aspettarci che la forma di queste limitazioni cambi nel tempo con strumenti nuovi o migliorati, ma le decisioni e le descrizioni qui si basano sullo stato attuale della tecnologia.

La decisione è stata presa nell'ambito di un'iniziativa volta a prevenire la comparsa di errori di memoria nel codice sorgente di Chrome. Secondo le statistiche fornite due anni fa, il 70% dei problemi di sicurezza critici e pericolosi in Chromium è dovuto a errori di memoria.

L'utilizzo del linguaggio Rust, che si concentra sulla gestione sicura della memoria e fornisce una gestione automatica della memoria, ridurrà il rischio di vulnerabilità causate da problemi come l'accesso a un'area di memoria dopo che è stata liberata e il buffer overflow.

L'obiettivo di portare Rust su Chromium è fornire un modo più semplice (senza IPC) e più sicuro (C++ meno complesso in generale, nessun bug di sicurezza della memoria in modalità sandbox) per soddisfare la regola del due, al fine di accelerare lo sviluppo (meno codice da scrivere , meno documenti di progettazione, meno patch di sicurezza) e per migliorare la sicurezza (più righe di codice senza bug di sicurezza in memoria, minore densità di bug del codice) di Chrome. Inoltre, l'azienda è fiduciosa di poter utilizzare librerie Rust di terze parti per raggiungere questo obiettivo.

All'inizio del 2022, il team di Chromium aveva già sperimentato Rust e, dopo alcuni mesi, aveva concluso che il linguaggio inizialmente non era adatto a sostituire il C++ per attività complesse con codice asincrono che doveva funzionare insieme al codice esistente.

Pertanto, l'utilizzo previsto di Rust in Chromium è inizialmente chiaramente limitato . Da un lato, l'interoperabilità procederà in una sola direzione: da C++ a Rust. Dall'altro, inizialmente sarà consentito solo l'utilizzo di librerie di terze parti. Queste funzioneranno come componenti autonomi e saranno indipendenti dai componenti interni di Chromium. Le librerie dovranno avere un'API semplice per la loro specifica funzione. Il team di Chromium esaminerà quindi le librerie.

Infine, vale la pena menzionare che l'aggiunta del supporto in Chromium consentirà di portare il codice Rust nei binari di Chrome a partire dal prossimo anno. La decisione è principalmente dettata da problemi di sicurezza: Rust offre una maggiore sicurezza nella scrittura in memoria rispetto al C++ e impedisce comportamenti potenzialmente dannosi come la lettura di variabili non scritte, l'accesso a valori oltre i limiti imposti dagli array, la dereferenziazione di puntatori nulli o non validi e l'utilizzo di iteratori invalidati.

Se desideri saperne di più, puoi trovare maggiori dettagli al seguente link.


Aggiungi come fonte preferita in Google