
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.

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.