La piattaforma Android fornisce il supporto per lo sviluppo di componenti del sistema operativo nativi in Rust, un linguaggio di programmazione di sistemi moderno che fornisce garanzie di sicurezza della memoria con prestazioni equivalenti a C/C++. Rust utilizza una combinazione di controlli in fase di compilazione che applicano la durata e la proprietà degli oggetti e controlli di runtime che garantiscono accessi alla memoria validi, eliminando così la necessità di un garbage collector.
Rust offre una serie di funzionalità di linguaggio moderno che consentono agli sviluppatori di essere più produttivi e sicuri del proprio codice:
- Programmazione simultanea sicura: la facilità con cui gli utenti possono un codice efficiente e sicuro per i thread ha dato origine alla tecnologia Contemporaneità senza paura il tuo slogan.
- Sistema di tipo espressivo: Rust aiuta a prevenire bug di programmazione logica consentendo tipi altamente espressivi (come wrapper Newtype ed enum varianti con contenuti).
- Controlli di compilazione più rigorosi: un maggior numero di bug rilevati in fase di compilazione aumenta la certezza degli sviluppatori che, quando il codice viene compilato correttamente, funzioni come previsto.
- Framework di test integrato: Rust fornisce un framework di test integrato in cui i test delle unità possono essere posizionati accanto all'implementazione che testano, rendendo più semplice da includere il test delle unità.
- Gestione degli errori: applicazione: le funzioni con errori recuperabili possono
restituisce un tipo di risultato,
che sarà una variante con esito positivo o una variante con errore. Il compilatore richiede agli utenti chiamanti di verificare e gestire la variante di errore di un enum
Result
restituito da una chiamata di funzione. In questo modo si riduce la possibilità di bug derivanti da errori non gestiti. - Inizializzazione: Rust richiede che ogni variabile venga inizializzata a un membro valido del relativo tipo prima dell'uso, impedendo un'inizializzazione involontaria a un valore non sicuro.
- Gestione più sicura degli interi: tutte le conversioni di tipo intero sono conversioni esplicite. Gli sviluppatori non possono eseguire il casting accidentalmente durante una chiamata di funzione quando assegnano un valore a una variabile o quando tentano di eseguire operazioni aritmetiche con altri tipi. Il controllo dell'overflow è attivo per impostazione predefinita in Android per Rust, il che richiede che le operazioni di overflow siano esplicite.
Per ulteriori informazioni, vedi la serie di post del blog sul supporto di Android Rust:
- Guida rapida nella piattaforma Android
Fornisce una panoramica sul motivo per cui il team Android ha introdotto Rust come nuovo linguaggio della piattaforma. - Integrazione di Rust nell'Android Open Source Project
Spiega come il supporto di Rust è stato introdotto nel sistema di compilazione e perché alcune decisioni di progettazione. - Interoperabilità di Rust/C++ nella piattaforma Android
Illustra l'approccio all'interoperabilità Rust/C++ in Android.