Deux camps continuent de s'opposer sur le sujet de l'intégration de Rust dans le noyau Linux : ceux qui voient Rust comme une opportunité d'améliorer la sécurité et la robustesse de Linux et ceux qui rejettent le mélange des langages C et Rust. Christoph Hellwig, l'un des mainteneurs du noyau, appartient au deuxième groupe et assimile ce mélange à un « cancer ». Toutefois, il a rapporté que le créateur de Linux, Linus Torvalds, est favorable à l'ajout de Rust dans le noyau et veut aller de l'avant dans ce projet. Selon Christoph Hellwig, Linus Torvalds aurait déclaré en privé qu'il passera outre le veto des mainteneurs pour fusionner le code du noyau Rust.Linus Torvalds reste ouvert à l'idée d'intégrer le langage Rust dans le noyau LinuxCes derniers mois ont été marqués par des discussions houleuses sur la question de l'ajout de Rust comme le deuxième langage de développement du noyau Linux. Le débat est devenu encore plus intense lorsque
Christoph Hellwig a assimilé le mélange de Rust et de C dans le noyau Linux à un « cancer ». Christoph Hellwig, l'un des responsables du noyau, s'oppose catégoriquement à cette idée et affirme que « le mélange rendrait Linux impossible à maintenir ».
Il a déclaré : « si vous voulez rendre Linux impossible à maintenir à cause d'une base de code interlangage, faites-le dans votre pilote pour que vous ayez à le faire au lieu de répandre ce cancer dans les sous-systèmes centraux... Je ne veux pas qu'il s'approche d'une énorme base de code C que je dois maintenir ».
Mais Christoph Hellwig a récemment mentionné un échange privé avec Linus Torvalds qui montre que ce dernier veut tenter l'aventure Rust. Dans cet échange, Linus Torvalds aurait précisé qu'il passerait outre le veto des mainteneurs sur le code Rust au sein du noyau. Christoph Hellwig critique cette décision.

Envoyé par
Christoph Hellwig
« Certains sous-systèmes peuvent décider de ne pas avoir de code Rust pour le moment, généralement pour des raisons de bande passante. C'est une bonne chose et on s'y attend ». Alors que Linus a dit en privé qu'il allait absolument fusionner du code Rust malgré l'objection d'un mainteneur. (Il l'a fait en privé au cas où vous chercheriez une référence.)
Ainsi, à partir de maintenant, en tant que développeur ou mainteneur Linux, vous devez faire face à Rust, que vous le vouliez ou non.
Le code Rust ne signifie pas seulement du code Rust [1] - les bindings ne ressemblent en rien à du code Rust idiomatique, ce sont des bêtes très différentes qui essaient de combler un énorme fossé sémantique. Et ils ne le font pas dans quelques endroits, parce qu'ils sont montrés dans chaque petit sous-système et bibliothèque en ce moment.
Ainsi, ces bindings se répandent partout comme un cancer et nous passons très rapidement d'un projet logiciel qui permet et s'efforce d'apporter des changements globaux qui améliorent le projet dans son ensemble à une compartimentation croissante [2]. Cela transforme Linux en un projet écrit dans plusieurs langages sans directives claires quant au langage à utiliser et à l'endroit où il doit être utilisé [3].
Même en dehors des bindings, une grande partie du code Rust ne sera pas très idiomatique en raison des structures de données du noyau qui sont intrusives et des structures de données autoréférencées comme les listes chaînées omniprésentes. Ne rendons-nous pas un mauvais service à la fois à ceux qui essaient d'amener la base de code existante dans un espace plus sûr et aux personnes qui font de la programmation système en Rust ?
Ayant travaillé sur des bases de code de ce type, elles sont mon pire cauchemar, parce qu'il y a une constante réécriture de parties du langage A au langage B pour une raison X, puis de nouveau pour une raison Z. Et cela sans l'habituel processus « créatif » de Linux qui consiste en des luttes intestines entre mainteneurs.
Les remarques de Christoph Hellwig contrastent avec les analyses du créateur de Linux, Linus Torvalds. Il est d'avis que Rust peut aider à corriger des erreurs commises en C. Il pense que Rust est une solution d’avenir pour le développement du noyau. Ainsi, Linus Torvalds considère la prise en charge de Rust pour le développement du noyau Linux comme une « une étape importante vers la capacité d'écrire les pilotes dans un langage plus sûr ».
Il a déclaré : « le C est, en fin de compte, un langage très simple. C'est l'une des raisons pour lesquelles j'apprécie le C et pour lesquelles beaucoup de programmeurs C apprécient le C, même si le revers de la médaille est évidemment que, parce qu'il est simple, il est aussi très facile de faire des erreurs ».
Les remarques de Christoph Hellwig sont jugées en violation du code de conduiteHector Martin, chef de projet d'Asahi Linux, estime que « les remarques de Christoph Hellwig constituent une violation du code de conduite », mais doute que des mesures disciplinaires soient prises. Il estime que les développeurs de Rust for Linux devraient ignorer les préoccupations de Christoph Hellwig et soumettre leur correctif à l'approbation du patron du noyau, Linus Torvalds. Selon lui, l'avenir de Rust for Linux dépendra de la réponse de Linus Torvalds.
Et à en croire Christoph Hellwig, Linus Torvalds a bien l'intentien de fusionner le code du noyau Rust. Christoph Hellwig ajoute qu'il ne voit pas l'intérêt d'intégrer Rust. Selon lui, si l'objectif est de résoudre les problèmes liés à la sécurité de la mémoire, « d'autres pistes sont possibles et sont meilleures ».

Envoyé par
Christoph Hellwig
J'aimerais comprendre quel est l'objectif de cette « expérience » Rust : si nous voulons résoudre les problèmes existants en matière de sécurité de la mémoire, nous devons le faire pour le code existant et trouver des moyens de l'adapter. Beaucoup de travail a été fait dans ce sens récemment et nous avons besoin de beaucoup plus.
Mais cela montre aussi à quel point les mainteneurs du noyau sont découragés par des choses triviales comme la vérification des débordements d'entiers ou la synchronisation imposée par le compilateur (comme dans l'assainisseur de threads de clang). Comment allons-nous combler le fossé entre une partie du noyau qui n'accepte même pas des règles relativement faciles pour améliorer la sécurité et une autre qui applique des règles encore plus strictes.
Si nous voulons simplement faciliter l'écriture de pilotes, un nouveau langage pour cela représente encore plus de travail et augmente la charge de travail des personnes déjà surchargées qui maintiennent l'infrastructure de base en forme. Je ne pense donc pas que ce document politique soit très utile. Pour l'instant, la règle est que Linus peut vous imposer ce qu'il veut (c'est son projet évidemment) et je pense qu'il doit l'énoncer clairement, y compris les attentes des contributeurs.
En ce qui me concerne, je peux m'occuper de Rust et je le fais très bien, j'adorerais amener le noyau dans un monde plus sûr pour la mémoire, mais m'occuper d'une base de code multilangage non contrôlée est un moyen assez sûr de me faire passer mon temps libre à autre chose. J'ai entendu quelques autres personnes marmonner quelque chose de similaire, mais tout le monde n'est pas aussi franc.
[1] J'ai écrit et travaillé sur une bonne partie du code Rust en espace utilisateur, mais je ne suis en aucun cas un expert, alors prenez ceci avec un grain de sel.
[2] L'idée de pilotes dans eBPF comme le fait HID n'est pas non plus très utile, même si j'aime eBPF pour certains cas d'utilisation.
[3] À moins que Linus ne l'impose à votre sous-système, ou que Dave ne décide que tout ce qui touche au matériel Nvidia doit être en Rust bien sûr.
Christoph Hellwig pourrait se retirer du projet Linux si Linus Torvalds fusionne le code du noyau Rust. Il reste donc à voir si Linus Torvalds acceptera directement le code du noyau Rust après un examen plus approfondi et une mise au point à l'avenir ou si Christoph Hellwig le fera passer lui-même après tout.
Le 7 février 2025, Hector Martin a demandé à être retiré de la liste des mainteneurs de Linux. « Je n'ai plus aucune confiance dans le processus de développement du noyau ou dans l'approche de la gestion de la communauté », a-t-il écrit dans une note adressée à la liste de diffusion du noyau Linux.
[B]
Pourquoi intégrer Rust dans le noyau Linux ?[...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en
prenant un abonnement pour que nous puissions continuer à vous proposer des publications.