Bientôt du code Rust dans le noyau Linux ?

Par:
fredericmazue

ven, 04/09/2020 - 15:21

Un article public publié sur LWN (anciennement Linux Weekly News) nous apprend que la question d'écrire des parties du noyau Linux avec le langage Rust est très sérieusement étudiée.

Des travaux à ce sujet ont déjà été effectués l'année dernière et présentés lors d'une conférence donnée par les développeurs Alex Gaynor et Geoffrey Thomas. A la suite de quoi Linus Torvalds et d'autres mainteneurs principaux du noyau ont exprimé leur ouverture de principe à l'utilisation de Rust pour le développement du noyau.

Lors de la conférence virtuelle Linux Plumbers 2020, des participants ont travaillé sur certaines des exigences pour permettre éventuellement à Rust d'être intégré dans l'arbre. Les travaux de Alex Gaynor et Geoffrey Thomas ayant servi de base à la discussion.

Les partisans de Rust soulignent que les deux tiers des vulnérabilités du noyau auxquelles des CVE ont été attribuées dans Android et Ubuntu découlent de problèmes de sécurité de la mémoire. Rust, en principe, peut complètement éviter cette classe d'erreur via des API plus sûres activées par son système de type et son vérificateur d'emprunt. Il ne s'agit toutefois pas de réécrire le noyau Linux en Rust, mais de se déplacer vers un monde dans lequel le nouveau code peut être écrit en Rust.

Bien sûr, il y a des difficultés à résoudre. Par exemple, Linux fait un usage intensif des macros de préprocesseur et des fonctions en ligne, qui ne sont pas facilement supportées par bindgen et l'interface de fonction étrangère de Rust.

Autre exemple : puisque Rust est (actuellement) compilé via LLVM, et que le noyau est le plus souvent construit avec GCC, relier du code Rust au noyau peut signifier mélanger le code émis par GCC et LLVM. Toutefois un développeur travaillerait déjà à un frontal Rust pour GCC, permettant potentiellement à Rust de cibler toute architecture prise en charge par GCC.

Une autre piste est le projet mrustc qui est un compilateur Rust expérimental qui émet du code C. L'utilisation de mrustc permettrait potentiellement à Rust d'être compilé via le même compilateur C qui compile le reste du noyau.

Vu le travail à faire, du code Rust dans le noyau Linux ce n'est pas tout à fait pour demain, mais peut-être pour dès après-demain, car l'idée soulève un grand enthousiasme d'après l'article de LWN.