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.
Par exemple, d’après les chiffres du dictionnaire Common Vulnerabilities and Exposure (CVE), 15,9 % des 2288 vulnérabilités qui ont affecté le noyau Linux en 20 ans sont liées à des dépassements de la mémoire tampon. C’est un défi à relever pour le futur en matière de programmation système. En outre, les géants de l'industrie, d'Apple à Amazon en passant par Facebook et Microsoft, se sont lancés ces dernières années dans le recrutement de développeurs Rust. D'ailleurs, selon la firme de Redmond, Rust est la meilleure chance de l’industrie informatique pour la mise sur pied d’applications système sécurisées.
Selon les partisans de Rust, il peut permettre d'éviter complètement cette classe d'erreurs à l'avenir grâce à des API plus sûres activées par son type de système et son vérificateur d'emprunt. D'autres avantages ont aussi été cités par ces derniers pour justifier la proposition de continuer le développement du noyau avec Rust. Comme premier pas vers ce rêve, le support initial de Rust a été annoncé jeudi sur rust-for-linux dans Linux-Next. « Cela ne signifie pas que nous allons le faire dans la version principale, bien sûr, mais c'est une bonne étape pour rendre les choses aussi faciles que possible », a prévenu Miguel Ojeda, qui est impliqué dans cet effort.
« C'est, malgré tout, une étape importante vers la capacité d'écrire les pilotes dans un langage plus sûr », a-t-il ajouté. Notons que la branche Linux-Next est la zone d'attente pour les correctifs destinés à la prochaine fenêtre de fusion du noyau. Ainsi, si vous faites du développement de noyau de pointe, vous voudrez peut-être travailler à partir de cet arbre plutôt que de la branche principale de Linus Torvalds. Selon les explications d'Ojeda, ce support nécessite la présence d'un compilateur Rust (rustc) sur le système. Ainsi, les architectures actuellement visées sont ARM64 et x86_64.
Actuellement, le support du noyau a besoin d'une chaîne d'outils Rust nightly récente pour la construction. En outre, bien qu'aucun pilote de noyau Rust ne soit encore prêt, la fusion initiale vers Linux-Next inclut un exemple de module de noyau écrit en Rust. Par ailleurs, alors que Rust est maintenant dans Linux-Next, il n'est pas encore clair si/quand il sera intégré à la branche principale. En général, le travail dans Linux-Next est peaufiné jusqu'au prochain cycle, mais il peut parfois rester dans Linux-Next plus longtemps s'il s'agit d'un travail en cours. Le code doit encore passer par toutes les formalités de demande d'extraction de la fenêtre de fusion.
Quoi qu'il en soit, l'effort progresse et il pourrait être intéressant de voir si cette infrastructure Rust initiale pour le noyau Linux parvient à être intégrée à la version 5.13 ou à une autre version du noyau cette année. Enfin, comme souligné plus haut, une partie de l'attrait pour Rust vient des caractéristiques de sécurité de la mémoire de Rust, en particulier par rapport au C, dans lequel le noyau Linux est actuellement codé. Une partie du problème, cependant, est que Rust est compilé sur la base de LLVM, par opposition à GCC, et supporte donc moins d'architectures.
C'est un problème auquel la communauté a assisté récemment lorsque la bibliothèque de chiffrement Python a remplacé une partie de l'ancien code C par Rust. En effet, cela a conduit à une situation où certaines architectures ne seront pas prises en charge. Actuellement, la proposition d'inclure Rust dans le noyau Linux limite ce problème en disant que Rust serait utilisé, au moins initialement, pour écrire des pilotes qui « ne seraient de toute façon jamais utilisés sur les architectures les plus obscures ».
Certaines entreprises n'ont toutefois pas attendu que l'équipe de développement du noyau Linux donne son aval pour la prise en charge de Rust, avant de commencer leurs propres efforts. Si vous cherchez un exemple de l'utilisation et de l'utilité de Rust dans le développement du noyau Linux, vous pouvez consulter les travaux d'Amazon Web Services avec Bottlerocket, une distribution Linux pour les conteneurs qui est largement écrite en Rust.
Sources : rust-for-linux, AWS Bottlerocket
Et vous ?
Quel est votre avis sur le sujet ?
Voir aussi
Les développeurs semblent d'accord à l'unanimité pour la prise en charge de Rust pour le développement du noyau Linux lors de la conférence Linux Plumbers
L'année 2020 est-elle celle de Rust au sein du noyau Linux ? C'est ce que suggère une sortie de Linus Torvalds, qui donne des instructions sur l'introduction de son support au système de build
« 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
Rust : les développeurs révèlent pourquoi ils ne sont pas plus nombreux à utiliser le langage de programmation, en pointant du doigt un manque d'adoption en entreprise, d'après un sondage