Miguel Ojeda, développeur du noyau, a lancé une proposition de RFC sur la liste de diffusion du noyau Linux. Le message de la liste de diffusion décrit les convictions des développeurs impliqués dans l'ajout du code Rust au noyau, les avantages tels que l'amélioration de la sécurité de la mémoire, et plus encore. « Certains d'entre vous ont remarqué ces dernières semaines et ces derniers mois qu'une tentative sérieuse d'apporter un second langage au noyau était en train de se forger. Nous y sommes enfin, avec une RFC qui ajoute le support pour Rust au noyau Linux », a déclaré Miguel Ojeja. « Nous savons qu'il y a des coûts et des risques énormes à introduire un nouveau langage dans le noyau », a-t-il ajouté.
Rappelons que les RFC sont un ensemble de documents qui font référence auprès de la communauté Internet et qui décrivent, spécifient, aident à l'implémentation, standardisent et débattent de la majorité des normes, standards des technologies et protocoles liés à Internet et aux réseaux en général. Chacun de ces documents représente une proposition de spécification qui peut à tout moment être rendue obsolète par un nouveau document RFC. Ainsi, les RFC sont des fichiers textes dont le nom est rfcxxxx.txt dont xxxx est un nombre incrémenté pour chaque nouveau RFC.
Les développeurs de Linux discutent depuis un moment de la perspective de permettre l'utilisation du langage développé par Mozilla Research pour écrire de nouveaux pilotes de périphériques pour le noyau. L'année dernière, les développeurs du noyau Linux semblent s'être mis d'accord sur le sujet. Pour mémoire, Rust est plébiscité, car il offre plusieurs avantages, notamment en ce qui concerne la mémoire. Les partisans de Rust ont cité des travaux qui montrent qu'environ deux tiers des vulnérabilités du noyau auxquelles ont été attribués des CVE sur Android et Ubuntu sont tous liés à des problèmes de sécurité de la mémoire.
Notons que Rust est un langage de programmation compilé multiparadigme, conçu par Graydon Hore alors employé chez Mozilla Research. Utilisé par plusieurs grandes entreprises et par de nombreux développeurs dans le monde, Rust est devenu le langage de base pour certaines des fonctionnalités fondamentales du navigateur Firefox et de son moteur Gecko, ainsi que pour le moteur Servo de Mozilla.
Avec Rust, il est possible de développer des pilotes de périphériques, des systèmes embarqués, des systèmes d'exploitation, des jeux, des applications web, et bien d'autres choses encore. Des centaines d'entreprises dans le monde entier utilisent Rust en production pour des solutions multiplateformes et économes en ressources. Des logiciels connus et appréciés, comme Firefox, Dropbox, et Cloudflare, utilisent ce langage. De la startup à la multinationale, du système embarqué au service web à haute disponibilité, Rust serait une excellente solution.
Selon Miguel Ojeda, développeur du noyau Linux, les avantages de l’introduction du langage Rust dans le noyau Linux l'emportent sur les coûts. Pour le développeur, en utilisant Rust dans le noyau Linux, le nouveau code écrit en Rust a un risque réduit de bogues de sécurité mémoire, grâce aux propriétés du langage Rust. Le langage Rust serait plébiscité pour sa sécurité.
Google a récemment déclaré que : « les défauts de sécurité de la mémoire menacent fréquemment la sécurité des appareils, en particulier pour les applications et les systèmes d'exploitation. Par exemple, sur le système d'exploitation mobile Android, Google dit avoir constaté que plus de la moitié des vulnérabilités de sécurité traitées en 2019 résultaient de bogues de sécurité de la mémoire. Et ce, malgré les efforts considérables déployés par l'entreprise et d'autres contributeurs au projet Open Source Android, pour investir ou inventer diverses technologies, notamment l'AddressSanitizer, des allocateurs de mémoire améliorés et de nombreux fuzzers et autres outils de vérification du code ».
Le langage de programmation Rust se popularise davantage, une popularité grandement alimentée par les grandes entreprises technologiques et les solutions utilisées à grande échelle. En début de ce mois, Google a révélé sur le référentiel Git comportant les codes sources de la plateforme Android, que la nouvelle version de Gabeldorsche, la pile Bluetooth utilisée dans Android depuis la version 11, a été réécrite avec Rust.
Google a également annoncé la semaine dernière que l'Android Open Source Project (AOSP) prendra désormais en charge le langage Rust pour le développement de son système d’exploitation mobile. « Outre les langages à mémoire sécurisée comme Kotlin et Java, nous sommes heureux d'annoncer que le projet Android Open Source prend désormais en charge le langage de programmation Rust pour le développement du système d'exploitation Android », a déclaré Google sur son blog. Cette annonce s'inscrit dans le cadre des efforts déployés par l'entreprise pour résoudre les problèmes de sécurité de la mémoire dans le système d'exploitation. Voici, ci-dessous quelques raisons évoquées par Miguel Ojeja pour l’utilisation de Rust dans le noyau Linux :
- plus de personnes s'impliquent dans le développement du noyau grâce à l'utilisation d'un langage moderne ;
- en tirant parti des outils de Rust, il est possible d’appliquer les directives de documentation qui ont été établies jusqu'à présent dans le cadre du projet Rust ;
- les développeurs sont plus confiants dans le remaniement et l'acceptation des correctifs pour les modules grâce à la sécurité du langage, les correctifs pour les modules grâce au sous-ensemble sûr de Rust ;
- les nouveaux pilotes et modules deviendront plus faciles à écrire, grâce à des abstractions plus faciles à concevoir, basées sur les caractéristiques du langage modernes, ainsi qu'à une documentation détaillée.
Selon les partisans de l’ajout du langage Rust comme second langage (à côté du langage C) pour l’écriture du noyau Linux, Rust est un langage de programmation système qui apporte plusieurs avantages clés par rapport au C dans le contexte de ce projet :
- bibliothèque standard étendue et indépendante ;
- une distinction claire entre le code fiable et le code "non fiable" ;
- un système de types plus strict pour réduire davantage les erreurs de logique ;
- outils intégrés prêts à l'emploi : générateur de documentation, tous basés sur le compilateur ;
- pas de comportement non défini dans le sous-ensemble fiable, y compris la sécurité de la mémoire et l'absence de courses de données ;
- un langage riche en fonctionnalités : types de somme, filtrage, génériques, durées de vie, références partagées et exclusives, modules et visibilité.
Dans l'ensemble, Rust est un langage qui a su tirer parti de décennies d'expérience des langages de programmation système et des langages fonctionnels. Cependant, Miguel Ojeja reconnaît également les raisons de s'y opposer, comme les temps de compilation plus lents, le manque de standardisation de certains aspects, l'infrastructure existante du noyau Linux qui est axée sur le C, et la dépendance au projet LLVM (est une collection de technologies de compilateurs et de chaînes d'outils modulaires et réutilisables) pour la compilation du code Rust.
En début d’année, AWS, Huawei, Google, Microsoft et Mozilla se sont associées pour lancer la fondation Rust et se sont engagées à lui consacrer un budget d'un million de dollars pour deux ans. Ce budget permettra au projet de développer des services, des programmes et des événements qui aideront les responsables du projet Rust à développer le meilleur Rust possible.
Pour Ashley Williams, Directeur exécutif par intérim de la fondation, Rust est un langage qui donne du pouvoir à tout le monde, mais surtout aux gens qui pensent que la programmation système n'est pas pour eux. « L'une des forces motrices les plus puissantes du projet Rust est la croyance simultanée dans le pouvoir de la programmation système et l'engagement à faire en sorte que ce pouvoir soit utilisable par tous », a-t-il déclaré lors de son discours d’ouverture de la RustConf 2020.
Selon Shane Miller, responsable de l'équipe Rust chez AWS et également professeur d'université, la raison pour laquelle les ingénieurs choisissent Rust pour créer des services est que cela leur permet d'offrir aux clients des expériences qui répondent à leurs exigences de qualité et de sécurité beaucoup plus rapidement et à moindre coût.
Pour certains analystes, étant donné le timing de ce RFC et le fait que la fusion du noyau Linux va probablement démarrer la semaine prochaine (ou être retardée jusqu'à la semaine suivante si la version 5.12-rc8 est justifiée), il est probable que cette prise en charge du noyau ne soit pas possible pour Linux 5.13. Peut-être avec Linux 5.14 ou une autre version du noyau plus tard dans l'année.
Source : Liste de diffusion
Et vous ?
Que pensez-vous du langage Rust ?
Quelle est votre préférence entre les langages Rust et C ?
Quel est votre avis sur le sujet ?
Voir aussi :
La prise en charge de Rust pour le développement du noyau Linux commence à prendre forme, le langage fait un premier pas vers la branche "Linux-Next"
Microsoft, Google, AWS, Huawei et Mozilla s'associent pour créer la Fondation Rust, une organisation à but non lucratif chargée de gérer le langage de programmation
Google annonce la prise en charge du langage Rust pour le développement d'Android, l'intérêt est de résoudre les problèmes de sécurité de la mémoire
La nouvelle réécriture de la pile Bluetooth d'Android est faite avec le langage Rust, Google devrait annoncer plus d'informations sur le code dans les prochaines semaines