Linguaggi di programmazione: Rust sta arrivando su Chromium ed ecco perché

Foto: Mascotte/Getty Images

Chromium, il progetto open source alla base di Google Chrome, sta abilitando un nuovo supporto per Rust nella sua base di codice C++, se limitato per ora.

Chromium, il progetto alla base di Microsoft Edge, Opera, Vivaldi e dozzine di altri browser, supporterà l’uso di librerie Rust di terze parti da C++. Il team sta inserendo gli strumenti per abilitare il codice Rust nei binari di Chrome entro il prossimo anno, secondo Dana Jansens del team di sicurezza di Chrome.

“Ora stiamo lavorando attivamente per aggiungere una toolchain Rust di produzione al nostro sistema di compilazione”, ha scritto Jansens.

Consentire a Rust di librerie di terze parti in Chromium è un passo significativo verso un linguaggio moderno e sicuro per la memoria, ma è più limitato rispetto all’Android Open Source Project (AOSP), che ha portato Rust come nuovo linguaggio di piattaforma nell’aprile 2021. di C e C++.

Inoltre: Linguaggi di programmazione: perché questo vecchio favorito è di nuovo in aumento

AOSP consente a Rust di creare componenti del sistema operativo nativo e ora rappresenta il 21% del nuovo codice in AOSP. Il cambiamento ha coinciso con un calo delle vulnerabilità di sicurezza della memoria dal 76% al 35% delle vulnerabilità totali di Android.

AOSP, AWS, il progetto del kernel Linux, Meta, Microsoft e molti altri usano Rust nella programmazione dei sistemi per le sue garanzie di sicurezza della memoria. In generale, Rust può aiutare a ridurre le vulnerabilità legate alla memoria, che costituiscono la maggior parte dei problemi di sicurezza del software, introdotte dal codice scritto in C e C++ non sicuri per la memoria, consentendo ai programmatori di infrangere facilmente le regole di sicurezza della memoria. Apple in ottobre ha spiegato in dettaglio come affronta la sicurezza della memoria in XNU, il kernel utilizzato per iPhone, iPad e Mac.

Il team di sicurezza di Chrome ha dichiarato l’anno scorso di aver considerato Rust un linguaggio di piattaforma, ma ha scelto di mantenere il C++ come linguaggio principale per il prossimo futuro mentre cerca di portare la sicurezza della memoria in C++ attraverso progetti come i suoi puntatori intelligenti in MicraclePtr C++.

Tuttavia, Jansens suggerisce che il team di sicurezza di Chrome non è ancora del tutto consapevole dell’idea di portare Rust su Chromium e spiega in dettaglio come continuerà a esplorare come Rust può adattarsi nel tempo.

Finora, il progetto Chromium ha posto alcune restrizioni su Rust per queste librerie. Ad esempio, consentirà librerie di terze parti Rust per Chromium se c’è una “esigenza aziendale”, come ridurre significativamente il rischio di bug di memoria, arresti anomali e altri problemi “rispetto all’attuale libreria di terze parti e al C++ associato necessario codice per utilizzare la libreria”.

“Stiamo iniziando lentamente e fissando aspettative chiare su quali biblioteche prenderemo in considerazione quando saremo pronti”, afferma Jansens.

Ha detto che il suo team sta esplorando “le implicazioni del passaggio graduale alla scrittura di Rust invece di C++, anche nel mezzo del nostro stack software” e comprendendo “quali sono i limiti di un’interoperabilità sicura, semplice e affidabile”.

Anche: Il low-code non è ancora una panacea per i reparti IT oberati di lavoro

Oltre a limitare il supporto di Rust alle librerie di terze parti, il team ha scelto di supportare solo l’interoperabilità unidirezionale, da C++ a Rust, per controllare la forma dell’albero delle dipendenze.

“Rust non dipende da C++ quindi non può conoscere i tipi e le funzioni C++, se non tramite l’inserimento di dipendenze. In questo modo, Rust non può finire in codice C++ arbitrario, ma solo in funzioni che passano all’API da C++, “, ha detto Jansens.

Jansens ha spiegato che era troppo rischioso consentire la piena interoperabilità cross-language C/C++ e Rust. Il team ha esaminato le implicazioni della creazione di componenti Rust rispetto alle “API C++ davvero estese” di Chrome.

“Ad un livello elevato, ciò che abbiamo scoperto è che, poiché C++ e Rust giocano secondo regole diverse, le cose possono andare di traverso molto facilmente”, ha affermato.

C’è anche un’attuale mancanza di strumenti di interoperabilità (interoperabilità) che forniscano supporto dal compilatore e dal sistema di tipi di ciascuna lingua. Indica il problema dei concetti in una lingua che non esistono in un’altra.

Google crea uno strumento di interoperabilità bidirezionale C++/Rust chiamato Crubit. Tuttavia, Google lo descrive come uno strumento “altamente sperimentale” in questa fase e sconsiglia di utilizzarlo.

“Se non ci sono strumenti di interoperabilità che forniscono supporto attraverso il compilatore e il sistema di tipi, gli sviluppatori devono comprendere tutte le ipotesi fatte dal compilatore Rust, per non violarle dal C++”, ha affermato.

“In questo contesto, il C++ è come l’insicuro Rust. E mentre l’insicuro Rust è molto costoso in un progetto, il suo costo viene gestito mantenendolo incapsulato e il più minimo possibile. Allo stesso modo, l’intera complessità del C++ deve essere incapsulata dal sicuro Rust. Le API ristrette progettate per l’interoperabilità possono fornire un incapsulamento simile e ci aspettiamo che gli strumenti di interoperabilità forniscano l’incapsulamento in altri metodi che consentano API più ampie tra i linguaggi”.

Leave a Reply

Your email address will not be published. Required fields are marked *