Rust for Linux : une initiative qui provoque des divisions dans la communauté du noyau
Le projet Rust for Linux vise à intégrer le langage de programmation Rust au sein du noyau Linux, historiquement écrit en C et en assembleur. Lancé en 2020, ce projet a pour objectif principal de tirer parti des garanties de sécurité mémoire offertes par Rust afin de réduire les bogues et vulnérabilités dans le développement des pilotes du noyau. Toutefois, bien que le projet soit jugé prometteur, il semble que les choses ne se passent pas comme prévu.
Certains craignent que la multiplicité des langages rende plus difficile la maintenance de ce super-projet open source, d'autres ne sont pas d'accord. Et aujourd'hui, les développeurs qui tentent d'ajouter du code Rust au noyau Linux se heurtent à l'opposition des responsables du noyau. Certains responsables du noyau estiment notamment que l'utilisation de plusieurs langages est une « complication indésirable et risquée ». C'est le cas de Christoph Hellwig.
Des inquiétudes sont apparues en août 2024 lorsque l'ingénieur logiciel de Microsoft Wedson Almeida Filho s'est retiré du projet Rust for Linux, citant sa frustration face à des « absurdités non techniques », ce qui est une façon de décrire la difficulté de collaborer avec ceux qui ont des objectifs différents.
Le problème s'est à nouveau posé en janvier 2025, lorsqu'une proposition d'abstraction permettant aux pilotes de périphériques écrits en Rust d'appeler l'API DMA de Linux principalement basé sur le langage C s'est heurtée à l'opposition ferme de Christoph Hellwig, un responsable du noyau.
Plus précisément, un contributeur du noyau a soumis un correctif pour permettre aux pilotes Rust d'utiliser la fonction C dma_alloc_coherent() de l'API DMA afin d'allouer et de faire correspondre de grandes zones de mémoire pour un accès direct à la mémoire. Christoph Hellwig s'est opposé à ce correctif.
Dans un message adressé à la liste de diffusion du noyau Linux, Christoph Hellwig a écrit : « pas de code Rust dans kernel/dma, s'il vous plaît ». Par la suite, Miguel Ojeda, le développeur principal du projet Rust for Linux, a demandé à Christoph Hellwig de suggérer une alternative.
Christoph Hellwig : « ne me forcez pas à travailler avec votre langage brillant du jour »
En adoptant Rust, la communauté autour du noyau Linux devrait mettre à profit les atouts du langage sur le C. Et elle devrait faire d’une pierre deux coups, étant donné que Rust peut faciliter l’arrivée de nouveaux contributeurs. C’est en tout cas ce que laisse entrevoir une étude de l’université de Waterloo. Mais les habitués du langage C désapprouvent l'initiative et n’entendent pas se laisser embarquer dans ce qu’ils appellent la nouvelle religion du Rust.
En réponse à Miguel Ojeda, Christoph Hellwig a déclaré : « gardez les wrappers dans votre code au lieu de rendre la vie difficile aux autres », et a poursuivi en affirmant que « les interfaces de l'API DMA devraient rester dans un code C lisible et non dans des bindings bizarres afin qu'il [reste] greppable et maintenable ».
Le souhait de Christoph Hellwig semble être que les pilotes qui ne sont pas écrits en C aient leurs propres liaisons privées avec le code C, et que ces abstractions ne soient pas maintenues séparément, pas même dans l'arbre rust/kernel. Interrogé par Danilo Krummrich, un ingénieur logiciel de Red Hat impliqué dans le projet Rust for Linux, Christoph Hellwig a clairement fait savoir qu'il n'est tout simplement pas intéressé par le code Rust :
Envoyé par Christoph Hellwig
Mais Christoph Hellwig ne semble pas intéressé par le fait que les abstractions DMA Rust soient maintenues séparément. Christoph Hellwig a expliqué qu'il ne voulait pas d'un autre mainteneur. Il a poursuivi en affirmant que le fait de demander à d'autres de maintenir la couche d'abstraction Rust pour l'allocateur cohérent DMA en tant que composant séparé n'améliore pas les choses et entrave la maintenabilité du noyau Linux :
Envoyé par Christoph Hellwig
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 conduite
Hector 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.
Envoyé par Hector Martin
« Le développement de la plate-forme Apple/ARM se poursuivra en aval. Si j'ai envie d'envoyer moi-même des correctifs en amont à l'avenir, pour quelque sous-arbre que ce soit, je le ferai, ou je ne le ferai pas. Tous ceux qui ont envie de se battre en amont eux-mêmes sont les bienvenus », a-t-il ajouté.
Le noyau Linux a ajouté la prise en charge du code Rust le 3 octobre 2022, peu après que Mark Russinovich, directeur technique de Microsoft Azure, a affirmé que les nouveaux projets de programmation devraient être écrits en Rust plutôt qu'en C ou C++. Mark Russinovich a justifié sa position par le fait que le code Rust peut être écrit de manière à éviter les bogues de sécurité de la mémoire (par exemple, les débordements de mémoire tampon).
Ces bogues affectent depuis longtemps le code C et C++ et représentent la majorité des vulnérabilités sérieuses dans les grands projets. Le point de vue de Mark Russinovich a depuis lors attiré le soutien de nombreuses organisations gouvernementales de sécurité dans le monde entier.
Peu après que l'ingénieur logiciel de Microsoft Wedson Almeida Filho a annoncé son départ de Rust for Linux l'année dernière, Linus Torvalds a abordé la question des frictions entre les développeurs C et Rust lors du sommet Open Source de la Fondation Linux à Vienne, en Autriche. « Il est clair que certaines personnes n'aiment pas la notion de Rust et le fait que Rust empiète sur leur domaine », a déclaré Linus Torvalds.
« Les gens ont même dit que l'intégration de Rust était un échec... Nous faisons cela depuis deux ans maintenant, il est donc bien trop tôt pour dire cela, mais je pense aussi que même si cela devenait un échec - et je ne pense pas que ce sera le cas - c'est comme cela que l'on apprend », a-t-il ajouté.
Source : liste de diffusion du noyau Linux (1, 2) ; Christoph Hellwig, responsable du noyau Linux (1, 2) ; Hector Martin, chef de projet d'Asahi Linux (1, 2)
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous des remarques du responsable du noyau Linux sur le code Rust ?
Selon vous, ses remarques violent-elles le code de conduite de la communauté ? Pourquoi ?
Selon vous, pourquoi l'intégration de Rust dans le noyau crée autant de division parmi les mainteneurs ?
Quels impacts les frictions entre les développeurs C et Rust pourraient-ils avoir sur le développement de Linux ?
Les contributeurs au noyau se raréfient. Pensez-vous que l'avenir du noyau Linux dépend de la réussite du projet Rust for Linux ?
Voir aussi
Linus Torvalds s'exprime à nouveau à propos du débat sur le choix entre C ou Rust pour le développement du noyau Linux et laisse entendre que le Rust peut aider à corriger des erreurs commises en C
L'un des responsables de la maintenance du noyau Linux Rust se retire du projet, invoquant des "absurdités non techniques"
Rust dans le noyau Linux: un projet prometteur, mais pas sans complications. La communauté dresse un bilan lors de l'édition 2023 du Kernel Maintainers Summit