
« je ne veux pas qu'il s'approche d'une énorme base de code C que je dois maintenir », dit-il à propos de Rust
L'intégration du langage Rust dans le noyau Linux continue de créer des divergences d'opinions dans le rang des mainteneurs. Certains voient en Rust une opportunité d'améliorer la sécurité et la robustesse de Linux, notamment grâce à sa gestion de la mémoire et à sa prévention des erreurs courantes en C. D'autres expriment des réserves, soulignant la complexité du langage et les risques liés à son adoption dans un projet aussi vaste que Linux. Un responsable du noyau, Christoph Hellwig, s'est récemment opposé à l'intégration d'un correctif écrit en Rust dans le noyau, indiquant clairement qu'il n'est tout simplement pas intéressé par le code Rust.
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 :

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 :

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.

« 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 ?






Voir aussi



Vous avez lu gratuitement 83 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.