La piattaforma Android fornisce supporto per lo sviluppo di componenti nativi del sistema operativo in Rust, un moderno linguaggio di programmazione dei sistemi che fornisce garanzie di sicurezza della memoria con prestazioni equivalenti a C/C++. Rust utilizza una combinazione di controlli in fase di compilazione che impongono la durata e la proprietà degli oggetti, e controlli di runtime che garantiscono accessi alla memoria validi, eliminando così la necessità di un garbage collect.
Rust offre una serie di funzionalità di linguaggio moderno che consentono agli sviluppatori di essere più produttivi e sicuri del proprio codice:
- Programmazione concorrente sicura: la facilità con cui consente agli utenti di scrivere codice efficiente e a prova di thread ha dato origine allo slogan di Rust Fearless Concurrency.
- Sistema di tipi espressivo: Rust aiuta a prevenire i bug di programmazione logica consentendo tipi altamente espressivi (come i wrapper Newtype e le varianti di enum 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 dove i test di unità possono essere posizionati accanto all'implementazione che testano, semplificando l'inclusione dei test di unità.
- Applicazione della gestione degli errori: le funzioni con errori recuperabili possono
restituire un tipo di risultato,
che sarà una variante di successo o di 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. Questo riduce la possibilità di bug derivanti da errori non gestiti. - Inizializzazione: Rust richiede che ogni variabile venga inizializzata a un membro legale del relativo tipo prima dell'uso, impedendo un'inizializzazione involontaria a un valore non sicuro.
- Gestione di numeri interi più sicura: tutte le conversioni di tipo intero sono trasmissioni 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, che richiede che le operazioni di overflow siano esplicite.
Per ulteriori informazioni, consulta la serie di post del blog sull'assistenza di Rust per Android:
- Rust nella piattaforma Android
Fornisce una panoramica del motivo per cui il team di Android ha introdotto Rust come nuovo linguaggio della piattaforma. - Integrazione di Rust in Android Open Source Project
Spiega come è stato introdotto il supporto di Rust nel sistema di compilazione e perché sono state prese determinate decisioni di progettazione. - Interoperabilità Rust/C++ nella piattaforma Android
Discusses the approach to Rust/C++ interoperability within Android.