Développé en C et C++, le noyau de Linux devrait prochainement s’ouvrir au langage Rust. L’objectif est notamment de mieux sécuriser l’utilisation de la mémoire.
Lors de l’Open Source Summit qui s’est déroulé en septembre à Dublin, Linus Torvalds a évoqué l’intégration du langage de programmation Rust dans le noyau de Linux. L’ouverture du Kernel de Linux à Rust n’est pas un sujet nouveau. Il est régulièrement évoqué notamment depuis la création de la Rust Foundation début 2021. Toutefois une intégration ne sera pas effective dans la prochaine version 6 de son noyau même si Torvalds a regretté que la possibilité de développer des pilotes dans Rust ne soit pas encore disponible. Il faudra donc au moins attendre la version 6.1.
A ce jour, un groupe de travail œuvre sur le sujet. Un patch et deux pilotes préliminaires, implémentés dans le nouveau langage, sont ainsi testés. Un pilote supporte les lecteurs NVMe et le second est un serveur dédié au protocole réseau 9P du système d’exploitation Plan 9.
De nombreux obstacles demeurent notamment au niveau des compilateurs. Le noyau de Linux est généralement compilé avec GCC tandis que Rust l’est le plus souvent avec le compilateur rival LLVM. Un point pas complètement rédhibitoire puisque Android et ChromeOS, deux systèmes d’exploitation basés sur un noyau Linux, sont compilés avec LLVM C, avec la limite de ne pas supporter toutes les architectures physiques.
Au delà de ces seules questions techniques, la question porte plus l’adoption de Rust par la communauté. Initié en 2006 par une ingénieur de Mozilla, développé en 2010 par la communauté, le langage est loin de faire l’unanimité parmi les développeurs et demeure peu présent dans les entreprises.
A contrario, Google a décidé en 2021 d’ouvrir Android à ce langage, dans le but de réduire les bugs liés à la gestion de la mémoire. L’idée n’est pas redévelopper Android mais d’utiliser Rust pour les nouvelles applications. Rust se veut plus sûr en termes de stabilité et de sécurité de la mémoire que le C et le C++.
Mais d’autres alternatives pointes aussi le bout de leur nez. Bien que soutenant Rust, Google a ainsi publié cet été la première version de son langage Carbon qui veut, lui aussi, proposer une alternative au C/C++ dans les développements de bas niveau. Tout comme Rust, Carbon propose une gestion plus sûre de la mémoire, mais contrairement à celui-ci, il conserve une totale interopérabilité avec les codes sources C++ existants.
Affaire à suivre.
Pour en savoir plus : Le langage de programmation Rust (rust-lang.org)