Dans un message adressé à la communauté du noyau lundi, Torvalds a déclaré : « l'arbre a une base récente, mais est fondamentalement dans linux-next depuis un an et demi. Il a été mis à jour sur la base des retours du Kernel Maintainer's Summit. Miguel est le mainteneur principal, et j'aide quand c'est nécessaire. Notre plan est que l'arbre passe à la pratique standard de non-rebasage une fois que cette série initiale d'infrastructures sera terminée. Le contenu est le minimum absolu pour permettre la construction du code Rust dans le noyau, avec beaucoup plus d'interfaces (et de pilotes - NVMe, 9p, M1 GPU) sur le chemin ».
Pour rappel, le projet "Rust for Linux" vise à introduire un nouveau langage de programmation système dans le noyau. Rust a une propriété clé qui le rend très intéressant à considérer comme le deuxième langage du noyau : il garantit qu'aucun comportement indéfini n'a lieu (tant que le code non sécurisé est sain). Cela inclut l'absence d'erreurs de type use after-free, double frees, data races, etc. Après 31 ans, un deuxième langage sera donc admis pour le développement du noyau. Les débats y relatifs tournent au tour de la possibilité d’une mise au rebut du C au profit du langage Rust.
Petite précision néanmoins : pour le moment, Rust gagne juste une API officielle pour permettre de développer des modules séparés ou pilotes. Torvalds a annoncé que le support initial de Rust for Linux concerne environ 4 domaines, notamment :
- éléments internes du noyau (expansion kallsyms pour les symboles Rust, format %pA) ;
- infrastructure Kbuild (règles de construction Rust et scripts de support) ;
- crates et bindings Rust pour la construction initiale minimale viable ;
- documentation et échantillons du noyau Rust.
Linus Torvalds fait-il fausse route en ouvrant le développement du noyau Linux au langage Rust ? Les principaux mainteneurs du noyau Linux ont un âge qui commence par le chiffre 5. Certains se rapprochent même de la soixantaine. Du coup, la communauté du célèbre noyau open source commence à penser au changement de générations. Une nouvelle dont la tranche d’âge se situe dans la trentaine gravit les échelons, mais comme Linus lui-même le souligne : « il s'avère qu'il est vraiment difficile de trouver des personnes qui sont des mainteneurs ». Un fait lié à ceci est que le développement du noyau Linux continue de se faire en C et assembleur.
Il semble en effet qu'il s'agit de langages avec lesquels la vieille génération est plus habituée. Ainsi, l'introduction de Rust dans le noyau pourrait être un moyen pour Torvalds et les mainteneurs séniors du noyau d'attirer de jeunes talents - qui sont beaucoup plus à l'aise avec les langages modernes - pour participer au développement de Linux. L'autre chose est que 15,9 % des 2 288 vulnérabilités qui ont affecté le noyau Linux en 20 ans sont liées à des tares que traîne le langage C : problèmes liés à la gestion de la mémoire – dépassements de mémoire tampon, allocations non libérées, accès à des zones mémoires invalides ou libérées, etc.
Torvalds s’est penché il y a peu sur un potentiel problème de sécurité avec les fonctions primitives d'exécution spéculative de la liste liée du noyau écrit en ANSI C. C’est en corrigeant ce problème qu’il s’est rendu compte qu’en C99 l'itérateur passé aux macros de parcours de liste doit être déclaré dans une portée en dehors de la boucle elle-même. C’est de ce constat que venait sa récente décision de faire passer le noyau Linux au C11 dont la normalisation a été achevée en 2011. C’est le genre de raisons techniques susceptibles de justifier la mise au rebut du langage C au profit du Rust pour le développement du noyau sur le long terme.
La prise en charge de Rust pour le développement du noyau Linux se poursuit et est vue comme une « une étape importante vers la capacité d'écrire les pilotes dans un langage plus sûr ». Le langage Rust, développé par Mozilla Research, est le type de langage de programmation auquel ceux qui écrivent du code pour des systèmes d’entrée/sortie de base (BIOS), des chargeurs d’amorce, des systèmes d’exploitation, etc. portent un intérêt.
Selon certains observateurs avertis, c’est le futur de la programmation système en lieu et place du langage C. En effet, des experts sont d’avis qu’il offre de meilleures garanties de sécurisation des logiciels que le couple C/C++. Par exemple, chez le leader mondial du cloud computing AWS, on précise que choisir Rust pour ses projets de développement, c’est ajouter l’efficacité énergétique et la performance d’exécution du C à l’atout sécurité.
Source : Linus Torvalds
Et vous ?
Que pensez-vous de l'introduction du langage Rust dans le noyau Linux ?
Voir aussi
L'inclusion de Rust for Linux à la version 6.1 du noyau est désormais en cours comme souhaité par Linus Torvalds, et va rendre possible le développement de pilotes dans un autre langage que le C
« Il est vraiment difficile de trouver des mainteneurs » : Linus Torvalds parle de la prochaine génération de responsables, du développement de Linux à l'occasion de la conférence Open Source Summit
Programmation : une étude révèle les langages les plus voraces en énergie. Perl, Python et Ruby en tête, C, Rust et C++, les langages les plus verts
Linus Torvalds souligne une bonne avancée du langage Rust dans le développement du noyau Linux, et aurait qualifié le C++ de « langage de m... », après le message de Google
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