Pourquoi le Rust ?
La promotion de Rust par Google au détriment de C et C++ devrait permettre de réduire le nombre de bogues de sécurité de la mémoire.
Le mois dernier, nous avons vu les premiers petits pas vers l’adoption du langage de programmation Rust, qui gère la mémoire, dans le noyau Linux. Google a apparemment réfléchi dans le même sens et, dans un long billet de blog publié mardi, la société a annoncé que le projet Android Open Source prend désormais en charge Rust pour les composants de bas niveau du système d’exploitation.
Pour en savoir plus :
Linus Torvalds s’exprime sur le langage Rust dans le noyau Linux.
L’équipe Android fait un travail considérable pour promouvoir Kotlin et Java auprès des développeurs d’applications, mais ces langages dépendent de l’Android Runtime (ART) pour fonctionner.
Vous ne pouvez pas écrire quelque chose de plus bas niveau que l’ART en Java, car il n’y aurait pas d’environnement d’exécution pour le faire fonctionner. Dans le passé, Google a généralement utilisé le C ou le C++, mais aucun de ces langages ne gère la mémoire, ce qui expose Android à des fuites de mémoire et à des débordements de tampon.
Google expose les avantages de Rust par rapport à C/C++ : « Rust fournit des garanties de sécurité de la mémoire en utilisant une combinaison de contrôles à la compilation pour faire respecter la durée de vie/la propriété des objets et des contrôles à l’exécution pour s’assurer que les accès à la mémoire sont valides.
Cette sécurité est obtenue tout en offrant des performances équivalentes à celles du C et du C++. »
Dans la lignée des statistiques similaires publiées par Microsoft, le billet de blog de Google indique que « les bogues de sécurité de la mémoire continuent d’être l’un des principaux facteurs de problèmes de stabilité et représentent systématiquement ~70 % des vulnérabilités de sécurité de haute gravité d’Android. »
Google affirme que la réécriture en Rust des « dizaines de millions de lignes » du code C et C++ existant d’Android est « tout simplement impossible », et que la réécriture de l’ancien Android n’aurait pas beaucoup d’importance puisque la plupart des bogues ont déjà été éliminés de l’ancien code.
Comme le code source d’Android est un projet open source qui compte des milliards d’utilisateurs, il fait l’objet d’une attention particulière. Google affirme que « la plupart de nos bogues de mémoire surviennent dans du code nouveau ou récemment modifié, dont environ 50 % ont moins d’un an ».
Rust sera utilisé pour les nouveaux composants, si nécessaire, ce qui devrait contribuer à réduire les nouveaux bugs de mémoire que Google pourrait introduire.
Au final…
Google conclut le billet de blog en disant : « Au cours des 18 derniers mois, nous avons ajouté le support de Rust au projet Android Open Source, et nous avons quelques projets d’adoption précoce que nous partagerons dans les mois à venir.
L’extension de cette prise en charge à l’ensemble du système d’exploitation est un projet pluriannuel. Restez à l’écoute, nous publierons d’autres mises à jour sur ce blog. »