Depuis sa création par Mozilla en 2015, Rust a parcouru du chemin. Il est maintenant géré par une fondation dédiée, figure régulièrement en tête des langages les plus populaires et Microsoft se demande même s’il pourrait servir à de futurs développements système de Windows.
La grande particularité de Rust, c’est de se situer à mi-chemin entre le C et un langage managé comme le C#. Il a les performances du premier et la protection de la mémoire du second, mettant Rust à l'abri des fuites mémoire et autres dépassements de mémoire tampon.
L’été dernier, lors de la conférence Linux Plumbers 2020, Linus Torvalds avait donné son avis sur l’éventuelle intégration de code Rust dans le kernel Linux, le sujet revenant souvent et de manière plus insistante.
Il n’était pas foncièrement opposé au Rust dans le kernel. Il souhaitait d’ailleurs que le compilateur Rust puisse être détecté par le noyau (via Kconfig) en vue de tester d’éventuelles inclusions de code.
Interrogé récemment par ZDnet en compagnie du développeur Greg Kroah-Hartman, Torvalds a réitéré sa position. La situation a d’ailleurs progressé car un portage de Coreutils en Rust a depuis fait son apparition. Le travail sur ce composant essentiel est réalisé par le Français Sylvestre Ledru, l’un des directeurs de Mozilla et développeur de Debian.
Torvalds se dit en attente et continue d’observer l’évolution. Ledru lui-même estime que le portage est fonctionnel, mais pas encore de qualité nécessaire pour la production. L’objectif serait quand même un remplacement de l’actuel Coreutils par sa version Rust.
Mais Torvalds pense que les pilotes sont un bien meilleur choix pour tester l’intégration de code Rust dans le noyau. Kroah-Hartman abonde : « les pilotes sont probablement le premier choix pour une tentative comme celle-là, puisqu’ils sont « les dernières feuilles » sur l’arbre des dépendances dans les sources du noyau. Ils dépendent de fonctionnalités centrales du noyau, mais rien ne dépend d’eux ».
Tous deux s’accordent sur l’extrême prudence qu’il faudra montrer, et l’attention qui sera portée aux premiers essais. Tout se jouera dans les interactions entre le nouveau code en Rust et l’architecture du noyau en C.