Présentation d'Android Rust

La plate-forme Android prend en charge le développement de composants d'OS natifs en Rust, un langage de programmation système moderne qui garantit la sécurité de la mémoire avec des performances équivalentes à celles de C/C++. Rust utilise une combinaison de vérifications au moment de la compilation qui appliquent la durée de vie et la propriété des objets, et de vérifications au moment de l'exécution qui garantissent des accès à la mémoire valides, ce qui élimine le besoin d'un collecteur de déchets.

Rust propose un éventail de fonctionnalités de langage modernes qui permettent aux développeurs d'être plus productifs et confiants dans leur code:

  • Programmation concurrente sécurisée : la facilité avec laquelle les utilisateurs peuvent écrire du code efficace et thread-safe a donné naissance au slogan Fearless Concurrency (Concurrency sans peur) de Rust.
  • Système de types expressifs : Rust permet d'éviter les bugs de programmation logique en autorisant les types très expressifs (tels que les wrappers Newtype et les variantes d'énumération avec des contenus).
  • Vérifications plus poussées au moment de la compilation : davantage de bugs détectés au moment de la compilation augmentent l'assurance pour les développeurs que lorsque le code se compile correctement, il fonctionne comme prévu.
  • Framework de test intégré : Rust fournit un framework de test intégré dans lequel les tests unitaires peuvent être placés à côté de l'implémentation qu'ils testent, ce qui facilite l'inclusion des tests unitaires.
  • Application du traitement des erreurs : les fonctions avec des échecs récupérables peuvent renvoyer un type de résultat, qui sera une variante de réussite ou d'erreur. Le compilateur exige que les appelants vérifient et gèrent la variante d'erreur d'une énumération Result renvoyée à partir d'un appel de fonction. Cela réduit le risque de bugs résultant de défaillances non gérées.
  • Initialisation : Rust exige que chaque variable soit initialisée avec un membre valide de son type avant utilisation, ce qui empêche une initialisation involontaire avec une valeur non sécurisée.
  • Gestion des entiers plus sécurisée : toutes les conversions de type entier sont des conversions explicites. Les développeurs ne peuvent pas caster de manière accidentelle lors d'un appel de fonction lors de l'attribution à une variable ou lorsqu'ils tentent d'effectuer des opérations arithmétiques avec d'autres types. La vérification des débordements est activée par défaut dans Android pour Rust, ce qui nécessite que les opérations de débordement soient explicites.

Pour en savoir plus, consultez la série d'articles de blog sur la prise en charge d'Android Rust: