Rappelons que le mois dernier, le tout premier support permettant l'utilisation du langage de programmation Rust dans le noyau Linux est apparu dans l'arbre Linux-Next pour des tests plus étendus avant son inclusion éventuelle dans le noyau principal. Juste derrière, une "demande de commentaires" a été relancée sur la liste de diffusion du noyau autour des perspectives du code Rust pour le noyau Linux. Miguel Ojeda, développeur du noyau Linux, a lancé une proposition de RFC (Request For Comments) sur la liste de diffusion du noyau Linux.
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é.
L'équipe Android de Google soutient Rust pour le développement du système d'exploitation Android. L’entreprise a annoncé le 6 avril 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.
Selon Google, 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.
« Dans notre précédent article, nous avons annoncé qu'Android prend désormais en charge le langage de programmation Rust pour le développement notre système d'exploitation mobile. Dans le même ordre d'idées, nous participons également à l'effort d'évaluation de l'utilisation de Rust comme langage supporté pour le développement du noyau Linux », a déclaré Google dans un nouveau message posté le 14 avril sur son blog.
« Le C a été le langage de choix pour l'écriture des noyaux pendant près d'un demi-siècle, car il offre le niveau de contrôle et de performance requis par un composant aussi critique. La densité des bogues de sécurité mémoire dans le noyau Linux est généralement assez faible en raison de la qualité élevée du code, des normes élevées de révision du code et des mesures de protection soigneusement mises en œuvre. Toutefois, des bogues de sécurité de la mémoire se produisent encore régulièrement. Sur Android, les vulnérabilités dans le noyau sont généralement considérées comme étant de haute gravité, car elles peuvent entraîner un contournement du modèle de sécurité en raison du mode privilégié dans lequel le noyau fonctionne », a ajouté Google
Nombre de backports dans les branches stables
Google, AWS, Huawei, Microsoft et Mozilla se sont associées pour lancer la fondation Rust et se sont engagées à lui consacrer un budget de deux ans à hauteur d'un million de dollars. 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. L'annonce avait été faite par Ashley Williams, Directeur exécutif par intérim de la fondation, le 8 février sur le site Internet de l'organisation. « Aujourd'hui, au nom de l'équipe de Rust, je suis heureux d'annoncer la création de la Fondation Rust, une nouvelle organisation indépendante à but non lucratif chargée de gérer le langage de programmation et l'écosystème Rust, en mettant l'accent sur le soutien de l'ensemble des responsables qui régissent et développent le projet ».
Dans une annonce faite sur son blog également le 8 février, Google a dit être ravie d’avoir rejoint la fondation Rust et se dispose pour travailler sur des questions comme l'interopérabilité avec C++. « S'appuyant sur les investissements de longue date de Google dans le C/C++ et les compilateurs et chaînes d'outils, nous sommes ravis d'annoncer notre adhésion à la fondation Rust », a annoncé Google sur son blog. « Nous sommes impatients de participer davantage à la communauté Rust, en particulier de travailler dans l'ensemble sur des questions importantes, notamment l'interopérabilité avec C++, la coordination des examens de sécurité, la réduction des coûts des mises à jour et de continuer à accroître nos investissements dans les projets Rust existants », a ajouté l'entreprise.
Selon Google, le langage Rust est maintenant prêt à rejoindre le C comme langage pratique pour l'implémentation du noyau. Il pourra aider à réduire le nombre de bogues potentiels et de vulnérabilités de sécurité dans le code tout en préservant ses caractéristiques de performance. L’équipe de développement de Google a travaillé sur un prototype initial du pilote Binder pour permettre de faire des comparaisons significatives entre les caractéristiques de sécurité et de performance de la version C existante et de son homologue Rust. Elle a rejoint l'organisation Rust for Linux, où la communauté avait déjà fait et continue de faire un excellent travail pour ajouter le support Rust au système de construction du noyau Linux.
Google pense que la conception doit tenir compte du langage C et permettent au code des deux langages d'interagir l'un avec l'autre : « nous sommes particulièrement intéressés par les abstractions sûres, à coût nul, qui permettent au code Rust d'utiliser les fonctionnalités du noyau écrites en C, et par la manière d'implémenter des fonctionnalités en Rust idiomatique qui peuvent être appelées de manière transparente depuis les parties C du noyau ».
Comme Rust est un nouveau langage pour le noyau, il est également possible d'appliquer les meilleures pratiques en termes de documentation et d'uniformité. Par exemple, le développeur doit documenter les exigences qui doivent être satisfaites par les appelants pour garantir que son utilisation est fiable ; en outre, pour chaque appel à des fonctions non sécurisées (ou l'utilisation de constructions non sécurisées comme le déréférencement d'un pointeur brut), le développeur doit documenter la justification de la sécurité de cette utilisation.
Linus Torvalds aurait indiqué lors d’une interview que le fait de discuter sur le projet serait beaucoup plus important qu'un long post de Google sur le langage. Il aurait également déclaré en réponse à des questions lors de cette interview que la prise en charge de Rust n'était « pas encore effective », ajoutant qu’il y avait une bonne avancée à ce sujet « au point où peut-être elle pourrait être possible avec la version 5.14 ».
Interrogé sur la suggestion d'un internaute avisé, qui a déclaré lors d'une discussion sur le post Google, « La solution ici est simple : il suffit d'utiliser C++ au lieu de Rust », Torvalds n'a pas pu se retenir « Le C++ fait qu'empirer les difficultés. C'est vraiment un langage de merde ». « Pour les personnes qui n'aiment pas le C, optez pour un langage qui vous offre réellement quelque chose de valable. Par exemple, les langages avec sécurité de la mémoire, qui peuvent éviter certains des dangers du C, ou les langages qui facilitent la gestion de la mémoire. Toute personne qui dit réécrire le noyau en C++ est trop ignorante », ajoute Torvalds.
Rappelons qu'il y a quelques années, en réponse à un contributeur qui s'interrogeait sur les raisons qui ont conduit au choix du C (plutôt que du C++) pour le système de gestion de version Git, Torvalds s'en est donné à cœur joie pour avouer son désamour au C++ qu'il avait alors qualifié d’« horrible langage ». Notons que Linus Torvalds est tout aussi connu parmi les développeurs pour avoir initié le projet du système de gestion de version Git. « C++ est un langage horrible. Ce qui le rend d'autant plus horrible est le fait que beaucoup de programmeurs "non standard'' l'utilisent, au point qu'il est nettement plus facile de générer de la merde totale et absolue avec », avait-il déclaré.
Source : Google
Et vous ?
La déclaration de Linus Torvalds au sujet du langage C++, ne serait-elle pas un peu exagérée ?
Quelle est votre préférence entre les langages C++, C et Rust ?
Quels commentaires faites-vous de la possible prise en charge du langage de programmation Rust dans le noyau Linux ?
Voir aussi :
Par défaut Linus Torvalds : "C++ est un langage horrible", en justifiant le choix du langage C pour Git
La prise en charge de Rust pour le développement du noyau Linux fait l'objet d'une nouvelle série de discussions, après une proposition de RFC
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
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
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