Présentation d'Android Rust

La plate-forme Android prend en charge le développement de composants de système d'exploitation natifs dans Rust, un langage de programmation système moderne qui offre des garanties de sécurité de la mémoire avec des performances équivalentes à C/C++. Rust utilise une combinaison de vérifications au moment de la compilation qui imposent la durée de vie et la propriété de l'objet, et des vérifications au moment de l'exécution qui garantissent des accès mémoire valides, éliminant ainsi le besoin d'un ramasse-miettes.

Rust fournit une gamme de fonctionnalités de langage moderne qui permettent aux développeurs d'être plus productifs et confiants dans leur code :

  • Programmation simultanée sécurisée - La facilité avec laquelle cela permet aux utilisateurs d'écrire du code efficace et sécurisé a donné naissance au slogan Fearless Concurrency de Rust.
  • Système de type expressif - Rust aide à prévenir les bogues de programmation logique en autorisant des types très expressifs (tels que les wrappers Newtype et les variantes enum avec contenu).
  • Contrôles plus solides au moment de la compilation - Plus de bogues détectés au moment de la compilation augmentent la confiance des développeurs dans le fait que lorsque le code se compile avec succès, il fonctionne comme prévu.
  • Cadre de test intégré - Rust fournit un cadre de test intégré dans lequel les tests unitaires peuvent être placés parallèlement à l'implémentation qu'ils testent, ce qui facilite l'inclusion des tests unitaires.
  • Application de la gestion des erreurs - Les fonctions avec des échecs récupérables peuvent renvoyer un type de résultat , qui sera soit une variante de succès, soit une variante d'erreur. Le compilateur demande aux appelants de rechercher et de gérer la variante d'erreur d'une énumération Result renvoyée par un appel de fonction. Cela réduit le risque de bogues résultant d'échecs non gérés.
  • Initialisation - Rust exige que chaque variable soit initialisée à un membre légal de son type avant utilisation, empêchant une initialisation involontaire à une valeur non sûre.
  • Gestion plus sûre des entiers - Toutes les conversions de type entier sont des transtypages explicites. Les développeurs ne peuvent pas caster accidentellement lors d'un appel de fonction lors de l'affectation à une variable ou lorsqu'ils tentent de faire de l'arithmétique avec d'autres types. La vérification de débordement est activée par défaut dans Android pour Rust, ce qui nécessite que les opérations de débordement soient explicites.

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