Introduzione alla ruggine di Android

La piattaforma Android fornisce supporto per lo sviluppo di componenti OS nativi 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 Collector.

Rust offre una gamma di moderne funzionalità del linguaggio che consentono agli sviluppatori di essere più produttivi e sicuri del proprio codice:

  • Programmazione simultanea sicura : la facilità con cui ciò consente agli utenti di scrivere codice efficiente e thread-safe ha dato origine allo slogan Fearless Concurrency di Rust.
  • Sistema di tipi espressivi : Rust aiuta a prevenire i bug di programmazione logica consentendo tipi altamente espressivi (come i wrapper Newtype e le varianti enum con contenuto).
  • Controlli in fase di compilazione più efficaci: un numero maggiore di bug rilevati in fase di compilazione aumenta la sicurezza degli sviluppatori che quando il codice viene compilato correttamente, funziona come previsto.
  • Framework di test integrato : Rust fornisce un framework di test integrato in cui gli unit test possono essere inseriti insieme all'implementazione che testano, semplificando l'inclusione dei test unitari.
  • Applicazione della gestione degli errori : le funzioni con errori risolvibili possono restituire un tipo di risultato , che sarà una variante di successo o una variante di errore. Il compilatore richiede ai chiamanti di controllare e gestire la variante di errore di un'enumerazione di Result restituita da una chiamata di funzione. Ciò riduce il potenziale di bug derivanti da errori non gestiti.
  • Inizializzazione : Rust richiede che ogni variabile sia inizializzata su un membro legale del suo tipo prima dell'uso, impedendo un'inizializzazione non intenzionale a un valore non sicuro.
  • Gestione più sicura dei numeri interi : tutte le conversioni di tipo intero sono cast espliciti. Gli sviluppatori non possono eseguire il cast accidentale durante una chiamata di funzione durante l'assegnazione a una variabile o quando si tenta di eseguire calcoli con altri tipi. Il controllo dell'overflow è attivo per impostazione predefinita in Android for Rust, il che richiede che le operazioni di overflow siano esplicite.

Per ulteriori informazioni, vedere la serie di post del blog sul supporto di Android Rust: