Rust dans le noyau Linux : nouvelles bisbilles, Linus Torvalds s’en mêle
Plume assassine

Le noyau Linux contient du code Rust depuis bientôt trois ans. De petits ajouts, qui ont surtout consisté pendant un temps à permettre à du code Rust d’être ajouté, notamment dans les pilotes. Mais la progression du langage dans le noyau reste complexe.
Le 10 février à 16h15
4 min
Logiciel
Logiciel
C’est ce qu’a tenté de faire Hector Martin. Si le nom vous parle, c’est peut-être parce qu’il est le fondateur et développeur principal de la distribution Asahi Linux, spécialisée dans le support matériel des Mac équipés d’une puce Apple Silicon. Un travail qui l’a mené d’ailleurs à la faille « M1RACLES » dans les puces M1. Ou peut-être parce qu’il fut un redoutable hacker, spécialisé dans les consoles de jeu, tout particulièrement les PlayStation et la Wii.
Garde-barrières
Le développeur a toutefois un problème : il promeut activement l’usage de Rust dans le noyau Linux et le processus de révision de ce dernier est bien trop lent selon lui. Le mois dernier, il a souhaité pousser un patch qui aurait permis aux pilotes de périphériques écrits en Rust de faire appel à la fonction DMA (Direct Memory Access) du noyau. Refus catégorique de Christoph Hellwig, mainteneur principal du noyau.
Ces tensions entre promoteurs du Rust et mainteneurs habitués au C n’est pas nouvelle. Elles avaient notamment provoqué des départs dans l’équipe de Rust for Linux. Il y a quelques jours, The Register signalait la tension montante entre Hector Martin et Christoph Hellwig, le premier poussant l’équipe de Rust for Linux à ignorer les remarques du second et d’envoyer quand même leurs propositions de modifications. Tout du moins tant que Linus Torvalds n’intervenait en personne.
« Le problème vient peut-être de vous »
Et Linus Torvalds est intervenu. Répondant directement à Hector Martin qui expliquait combien ces tensions le fatiguaient, le père du noyau Linux s’est montré franc dès la première ligne : « Et si vous acceptiez le fait que le problème vient peut-être de vous ? ». Il continue : « Vous pensez que vous savez mieux [que les autres]. Mais le processus actuel fonctionne. Il a des problèmes, mais les problèmes font partie de la vie. La perfection n’existe pas ».
Dans la suite du message, il accuse Hector Martin de « brigadage » sur les réseaux sociaux et Reddit, le développeur ayant essayé d’alerter de la situation. « Parce que si nous avons des problèmes dans le modèle de développement du noyau, alors les médias sociaux ne sont certainement pas la solution. De la même manière qu'ils n'étaient pas la solution à la politique », a ajouté Linus Torvalds.
Torvalds n'est pas contre le Rust
Au sein du noyau Linux, la priorité reste le code en C. Le mélange de deux langages est considéré comme risqué. Christoph Hellwig l’a même comparé à un « cancer », ce qui faisait dire à Hector Martin que le propos violait probablement les règles de bonne conduite. L’expression rappelle également les propos que Steve Ballmer, ancien CEO de Microsoft, avait tenu au sujet de Linux lui-même.
Linus Torvalds, de son côté, n’a rien contre le Rust en tant que tel. Sa position est connue depuis septembre dernier, lors de la version européenne de l'Open Source Summit. « Certaines discussions deviennent désagréables. Je ne sais pas vraiment pourquoi Rust est un domaine si controversé. Cela me rappelle ma jeunesse. Les gens se disputaient entre vi et EMACS. Pour une raison ou pour une autre, toute la discussion sur Rust contre C a pris des accents presque religieux dans certains domaines », avait-il alors indiqué.
Il s’était montré philosophe : « Rust est très différent, et beaucoup de gens sont habitués au modèle C. Ils n'aiment pas les différences, mais ce n'est pas grave ». Il avait toutefois plaidé pour qu’on laisse sa chance au langage : « Cela ne fait que deux ans que nous travaillons avec Rust, il est donc bien trop tôt pour dire que Rust est un échec ».
Rust dans le noyau Linux : nouvelles bisbilles, Linus Torvalds s’en mêle
-
Garde-barrières
-
« Le problème vient peut-être de vous »
-
Torvalds n'est pas contre le Rust
Commentaires (41)
Abonnez-vous pour prendre part au débat
Déjà abonné ? Se connecter
Cet article est en accès libre, mais il est le fruit du travail d'une rédaction qui ne travaille que pour ses lecteurs, sur un média sans pub et sans tracker. Soutenez le journalisme tech de qualité en vous abonnant.
Accédez en illimité aux articles
Profitez d’un média expert et unique
Intégrez la communauté et prenez part aux débats
Partagez des articles premium à vos contacts
Abonnez-vousLe 10/02/2025 à 16h34
Mais je comprend aussi que les mainteneurs ne veuillent pas un mélange de C et de Rust dans leur code.
Ca serait davantage de boulot seulement pour faire plaisir à la nouvelle garde.
Donc je mise sur une énoooorme inertie des mainteneurs du noyau.
Si les dev Rust sont pressés, je leur conseillerais plutôt de participer à un Redox, ou un projet de réécriture de Linux en Rust... ou, plus simplement, de maintenir leur API/Abstraction Rust pour Linux en dehors du kernel (dans un SDK/DDK).
Le 10/02/2025 à 21h18
Linux sur Apple Silicon (le projet ou travail Hector Martin) est très bien avancé, avec encore du développement à faire, c'est utilisable quotidiennement.
Linux supporte très bien Aarch64, les pilotes broadcom déjà présents, le pagesize de 16k, mesa3d avec OpenGL, Vulkan, OpenCL, l'émulation x86 via FEX-EMu, etc...
Modifié le 11/02/2025 à 09h52
Sur ce point je donne raison à Hector Martin : Christoph Hellwig n'avais pas de bonne raison de s'opposer. Dans la mesure ou il a été acté que l'on voulait pouvoir faire des drivers en Rust, c'est la meilleure méthode avec le moins d'impact possible sur les développement en C. Si on suit ses préconisations en s'opposant a tout code Rust même bien séparé du code C existant, c'est juste rendre impossible le projet Rust for Linux.
Ceci dit je rejoint Linus Torvald sur la critique de la manière dont Hector Martin c'est exprimée sur les réseaux sociaux, pour pousser Linus à prendre parti, plutôt que de le joindre directement, ce qui a jeté inutilement de l'huile sur le feu.
Le 10/02/2025 à 17h05
Difficile de laisser sa chance à un nouveau langage quand chaque PR est systématiquement rejetée parce qu'elle utilise le dit langage...
Le 10/02/2025 à 17h37
L'idéal pour Rust serait la création d'un tout nouveau sous-système écrit from-scratch en Rust.
Mais c'est pas tous les jours que Linux a besoin d'un nouveau sous-système :)
Et puis faut bien avouer que Rust... Comment dire...
C'est légèrement chiant comme syntaxe et frustrant en terme de limitations quand tu viens du C.
Perso j'ai découvert Zig et je ne veux pas retourner à Rust.
Ca me fait le même effet que TypeScript vs Javascript.
Modifié le 10/02/2025 à 20h35
Et dès qu'on essaye du fonctionnel ça devient très vite illisible et la POO avec Rust est encore plus immonde qu'en Fortran.
Le 10/02/2025 à 19h30
Ça rajoute aussi de la complexité dans la syntaxe quand on doit spécifier la portée des paramètres, mais ça m’a moins gêné que le point précédent.
Le 10/02/2025 à 20h44
Ce qui m'a le plus gêné en Rust, c'est la complexité inutile de sa syntaxe et, dans une moindre mesure, la difficulté à faire produire un code performant par le compilateur. Je trouve que pour un langage qui se dit concurrencer le C on est en deçà de ce point essentiel.
Modifié le 11/02/2025 à 09h24
Le patch en question était juste une abstraction de l'API C pour le DMA pour permettre aux drivers Rust d'y accéder avec une interface adaptée au langage. Ca n'avait aucun impact sur le code existant.
En l’occurrence ça arrive souvent pour les drivers et ça tombe bien c'est le premier objectif du projet Rust for Linux : pouvoir faire des drivers en Rust. C'est pour cela qu'il mettent en place une API en Rust pour accéder au sous-systèmes existants
Pour ce qui est de la syntaxe Rust, je suppose que tu ne t'y est pas trop attardé trop longtemps. Ça m'a fait ça aussi au début, mais quand on a pris l'habitude, c'est la syntaxe du C qui parait bizarre.
Quant au limitation, il n'y en a pas vraiment. Certaines choses potentiellement dangereuses sont justes plus complexes a réaliser, mais c'est volontaire car il vaut mieux être sur de ne pas les faire par erreur.
Modifié le 10/02/2025 à 18h04
Pour ce qui est en prise directe avec le matériel je ne crois pas a Rust. Assez de pb avec une complexité croissante de ce côté pour cumuler avec un langage egalement plus complexe et moins proche de la suite d'opcodes que le processeur va dérouler. Sans même parler de l'aspect perf ou chaque % compte pour se démarquer.
Pas oublier que parmi les gros contributeurs côté support materiel il y a les fondeurs quibse tirent la bourre. Tant que Rust laissera ne serait-ce qu'un % au C il sera out.
Modifié le 10/02/2025 à 18h37
Le code C tellement proche du hardware que c'est limite du code machine, c'est une infime portion du noyau.
La plupart du code c'est celui des sous-systèmes, et eux ils manipulent surtout des états dans des zones mémoire. Donc un langage "memory-safe by design" aurait tout son intérêt.
Actuellement c'est du "memory safe by good coding practices".
Ca nécessite de l'expérience/rigueur, et des phases d'intégrations + non-régressions.
Le 10/02/2025 à 20h42
Le 10/02/2025 à 21h42
Tout le noyau Linux est juste écrit en C! C'est de l'open source, va y voir... Quel autre langage permet de coder un OS complet de A à Z? Et même l'applicatif si on le souhaitait (c'est alors moins optimal).
Si c'est Mozilla qui a initié Rust, car ils font de l'applicatif qui évolue beaucoup et en frontal réseau avec une interface chaise-clavier aux commandes: C'est pas forcément un hasard et là, OK, cela a du sens.
Le 10/02/2025 à 22h40
C'est assez catégorique. Il est possible de trouver un langage qui fait ça, je suppose (en fait...).
Le 10/02/2025 à 22h37
Ca nécessite de l'expérience/rigueur, et des phases d'intégrations + non-régressions.*"
Ça s'appelle "développer". Aucun langage ne fera le ménage dans la tête des développeurs !
Si certains pouvaient apprendre le pattern Singleton et utiliser un peu plus les références plutôt que des copies ; le monde se porterait bien mieux.
Le 11/02/2025 à 11h19
Modifié le 11/02/2025 à 09h37
Rust a des performances comparables au C, parfois meilleur, parfois en dessous, globalement au même niveau. Les règles d'ownership permettent notamment certaines optimisations difficiles en C.
Le 11/02/2025 à 18h54
Modifié le 13/02/2025 à 16h48
D'ailleurs quand Rust a activé cette optimisation, ça a permis de détecter des bugs dans la gestion du noalias de LLVM, et par conséquence dans l’implémentation de "restrict" de clang. Ces bugs étaient là depuis des années mais on ne s'en était pas rendu compte avant car "restrict" est très peu utilisée en C, alors qu'il est utilisée implicitement partout en Rust.
Le 12/02/2025 à 18h58
La dernière fois que j'ai du mettre du restrict, c'était parce que le code servait de doc en même temps et que donc il fallait préciser ce point.
Donc en gros Rust interdit aliasing de pointeur.
Modifié le 13/02/2025 à 16h27
Si GCC faisait vraiment ça, ça voudrait dire qu'il produirait des programmes carrément faux selon la norme.
Modifié le 13/02/2025 à 16h50
Rust est bien par défaut plus optimal. Il faut rajouter restrict au paramètre 'a' pour que le C génère le même code que Rust.
Le 13/02/2025 à 18h56
C'est ma faute, en substance je compile toujours avec l'option -frename-registers qui n'empêche pas l'aliasing mais qui fait que GCC "découple". Si tu reprends ton exemple du haut en C et que tu rajoutes cette option, tu verras que les deux variables sont chargés dans des registres différents puis additionner. ça n'a pas choqué au début car j'ai toujours retenu que l'aliasing fait mov, add , mov. ça reste vrai qu'il y a aliasing et que le processeur fait deux load au lieu d'un, mais en pratique les deux codes s’exécuteront de la manière sur le processeur.
Dans le cas de Rust, les deux additions ne pourront s'effectuer qu'une fois que l'instruction mov sera retiré. Dans le cas du C, les deux instructions moves seront executés ensemble, puis au cycle suivant les deux instructions add. Finalement, il faudra bien 2 cycles d'horloge au deux codes pour arriver au même résultat.
D'où le fait que je ne voyais pas la différence car finalement il faut le même nombre d'horloge pour arriver à ce résultat.
Le 10/02/2025 à 21h26
Il y a aussi les redifs de 7h...
Le 11/02/2025 à 09h10
- Le coeur du noyau ne doit utiliser qu'un et un seul langage
- il n'est pas contre Rust, il est contre l'inclusion de tout autre langage que le C dans le coeur du noyau (maintenir le code du noyau est déjà très difficile avec un seul langage, s'il fallait en plus en connaitre plusieurs pour y arriver, cela serait extrêmement dur)
- son objectif premier est la maintenabilité, pas la diffusion du code rust (et pourtant il dit du bien de rust dans un ce ses commentaires). Il n'a aucun problème à ce qu'un driver soit fait en rust, tant que cela reste cloisonné au driver. Par contre, le coeur du noyau, écrit en C depuis plus de 20 ans, non.
Quelques extraits de ces interventions : others.
Et au delà des problèmes de lecture du code et de maintenabilité, il y a aussi des outils qui scanne le code du noyau voire qui apporte des modifications automatiquement (changement d'API interne par exemple). Ces outils sont fait pour du C, pas pour du Rust.
Le 11/02/2025 à 09h50
Les interface pour les drivers écrits en C restent en C, mais c'est normal que les drivers écrits en Rust aient une interface écrite en Rust tant qu'elle est maintenue à part et n'a pas d'impact sur le code C sous-jacent.
S'il grep le code qu'il maintient, il n'est pas impacté.
L'interface étant maintenue à part par le groupe Rust for Linux, et pas directement dans le sous-domaine DMA. Dupliquer cette interface dans chaque driver poserait beaucoup de problème et ne résout rien.
Le 11/02/2025 à 10h11
1. est-ce qu'un mainteneur peut émettre un PR "C only" qui casse la compilation Rust ?
=> Ca sera aux équipes Rust de corriger le code APRES que le PR soit mergé.
2. est-ce qu'un mainteneur doit émettre un PR "C + Rust" qui ne casse pas la compilation Rust.
=> C'est au mainteneur de modifier/corriger le code Rust AVANT que le PR soit mergé.
Christoph Hellwig pointe que Linus a refusé un PR émis par un mainteneur parce que le PR cassait la compilation Rust. Mais c'était un cas particulier d'un PR sur la toolchain... donc c'était pas clair pour le cas général.
Le 11/02/2025 à 10h18
C'est là où tu te trompes. Une des forces (et des faiblesses !) du noyau linux, est que son API interne peut changer à tout moment. Quand c'est le cas, l'équipe qui a fait la modification reporte la modification sur les drivers impactés lorsque c'est possible. C'est actuellement faisable car quasiment tout le code de Linux est en C.
Demain, si l'équipe en charge du DMA décide de changer son API, non seulement il faut mettre à jour tous les drivers écrit en C, mais il faut aussi :
- mettre à jour le wrapper Rust
- mettre à jour les drivers écrit en Rust.
Il faut donc des compétences en Rust. Compétences que tout le monde n'a pas.
Sans compter qu'en cas de problème avec un driver DMA avec un driver rust, il faudra trouver si le problème vient du code DMA en C ou du Wrapper en Rust.
On peut ne pas être d'accord. Cloisonner l'usage de Rust aux "drivers" terminaux me semble une sage décision, d'autant plus dans un projet legacy où le cross language apporte de la complexité supplémentaire et où certains paradigmes de programmation sont très différents.
Comme le dit Linus, le système actuel n'est pas parfait mais à fait ses preuves. Autoriser le R4L a gérer ça et intégrer du code Rust pour le coeur du noyau, c'est ouvrir une boite de Pandore en l'état actuel des choses.
Le cloisonnement par driver a aussi un avantage relativement simple : en cas de besoin (absence de mainteneur compétent en Rust par exemple), on peut plus ou moins facilement réécrire le driver en question en C, sans trop d'impacts sur le reste du système.
Si aujourd'hui on autorise un wrapper Rust dans le coeur de Linux, demain ce sera du code Rust dans le coeur de Linux.
Une fois encore, on peut ne pas être d'accord avec la stratégie. Maintenant, il ne faut pas oublier que Linux est un logiciel libre, sous GPL-v2. Libre à l'équipe R4L de faire un fork pour intégrer directement ses wrappers s'il le souhaite. L'équipe de maintenance du noyau ne pourra rien dire. Grsecurity le faisait (fait ?) depuis fort longtemps par exemple.
Linux a des règles, qui peuvent paraitre rigides, mais c'est sans doute aussi grâce à ces règles que le noyau a pu se développer ainsi et perdurer pendant presque 30 ans.
Le 11/02/2025 à 13h24
A partir du moment où on a décidé qu'on permettait les drivers en Rust, le problème de la maintenance est inévitable. Refuser une API Rust commune pour le DMA ne résout rien : le code d’adaptation à l'API C va juste se retrouver dupliqué dans chaque driver et résoudre les impacts d'une évolution de l'API C sera encore plus complexe.
Pour limiter le poids sur les mainteneurs actuels qui ne connaissent que le C que le projet Rust for Linux c'est engagé a mettre a jour l'API et les drivers Rust en cas de changement dans l'API C.
Et c'est bien le cas. Encore une fois le projet Rust for Linux crée juste des wrapper Rust pour permettre au drivers Rust de s'interfacer plus naturellement avec le code C du coeur du noyau. Il ne le modifie pas directement.
Le wrapper permet au contraire d'établir une frontière claire entre le Rust du driver d'un coté, et le C du coeur de l'autre coté.
Le 11/02/2025 à 13h38
Un changement d'API au niveau C peut provoquer des problèmes de compilation pour certains drivers Rust. Avec cette modification, un changement d'API au niveau C peut provoquer des problèmes de compilations pour TOUS les drivers Rust.
Comme je le disais, la création de cette interface, c'est ajouter un coeur Rust au coeur C.
En créant une interface Rust qui devient, de facto, une partie du coeur.
Je comprends parfaitement les motivations des développeurs Rust. Je comprends aussi parfaitement les motivations des développeurs & mainteneurs du noyau qui préfère le C.
Actuellement, il y a des règles qui ont été établies. Le Rust est autorisé pour les drivers. Point barre. Il n'a pas été autorisé pour autre chose. C'est une des raisons pour lesquels le patch a été refusé. Le code est dans un drvier ? non => patch refusé.
On peut espérer que le patch et son refus ouvre des discussions et surtout une prise de décision consensuelle sur ce qui est, ou n'est pas, autorisé au sein du noyau Linux.
Et encore une fois, si l'équipe R4L n'est pas contente de la direction prise, libre a elle de forker le noyau pour intégrer les modifications comme elles le souhaitent. Ainsi, aucune maintenance supplémentaire pour l'équipe "historique" du noyau.
A partir du moment où l'équipe R4L souhaite rester dans le giron du projet Linux, c'est à elle de se conformer aux règles qui ont été établies.
Modifié le 11/02/2025 à 22h42
Les drivers et le noyau font partie du code Linux (entre autre). Il n'y aurait pas de sens à mettre ailleurs la couche qui s'intercale entre les deux.
Qu'ils soient écrits en Rust ou en C, les drivers n'ont pas de raison d'être impactés la modification d'une API qu'ils n'utilisent pas. Le wrapper n'y change rien.
J'ai du mal a comprendre pourquoi les bindings Rust devraient être considérés comme faisant partie du cœur de Linux :
- D'un point de vue technique, ils ne permettent pas d'interagir plus que les drivers C avec les différents composants du noyau. Ils passent par les mêmes API.
- D'un point de vue organisationnel, ils sont dans le répertoire "rust" à la racine du projet, les drivers sont dans le répertoire "driver" et le cœur du noyau est dans le répertoire "kernel". Il n'y a actuellement aucun code Rust en dehors des bindings et des drivers Rust.
Sauf que cette règle n'a jamais existé, c'est juste l'idée trouvé par Christoph Hellwig pour refuser le patch sans admettre que c'était un soucis pour faire des drivers en Rust. La couche d’abstraction à toujours été le maillon essentiel de l'intégration du code Rust dans Linux. La refuser c'est justement aller contre le fonctionnement défini.
Ce point là a été décidé avant même le début du projet, ça n'est pas un problème.
Le vrai soucis, c'est que le ton c'est envenimé des deux coté :
- Christoph Hellwig a levé des objection sans prendre en compte les choix fait lors de l'introduction de Rust dans le noyau et de manière de plus en plus véhémente alors que les gens du projet Rust for Linux lui expliquaient les effort qu'il faisaient pour garantir un impact minimal.
- Hector Martin de son coté à essayé de pousser sur les réseaux sociaux pour prendre à partie la communauté et Linux Torvalds ce qui a agavé la situation.
Le 12/02/2025 à 00h17
Pourtant, c'est dans les règles : chaque sous-système fait comme il le souhaite. Some subsystems may decide they do not want to have Rust code for the time being, typically for bandwidth reasons. This is fine and expected.
Comme je le disais plus haut, chaque sous-système fait comme il le souhaite vis-à-vis de Rust (et c'est R4L qui le rappel !). Je comprends la frustration des développeurs Rust, mais ils veulent un peu le beurre (Rust) et l'argent du beurre (au sein du noyau linux).
Encore une fois, le noyau Linux existe depuis 3 décennies maintenant. 3 décennies de code C. Même des portions écrites en assembleur (généralement, pour des raisons d'optimisations) sont réécrites en C pour plus de maintenabilité et de portabilité.
Intégrer un nouveau langage dans un projet de 30 ans d'âge, c'est tout sauf anodin, et cela ne doit pas se faire n'importe comment. Le comportement d'Hectore Martin a jouer les pleureuses sur les réseaux sociaux est très loin de faire avancer le débat, et ne pourra, au contraire, que le cristaliser.
Christoph Hellwig refuse peut être le patch un peu brutalement, mais il le dit lui-même : pas de code rust pour ce sous-système (et c'est une règle tout à fait applicable comme le rappel R4L).
Une fois encore, si la politique d'intégration de Rust au sein du noyau pose problème, libre à l'équipe de R4L de forker le noyau et/ou de le fournir sous forme de patch (c'est faisable, grsecurity le faisait très bien par le passé). Ils auront moins de soucis de gouvernance, pourront faire les choix qu'ils veulent, mais auront plus de boulot de maintenance.
Modifié le 12/02/2025 à 07h18
Là on est dans la définition ad-hoc sur un point trop spécifique. Ça n'a pas vraiment de sens où on va devoir classer la lib C dans le noyau, vu quelle est utilisée par les drivers en tant que bibliothèque au même titre que les wrapper.
La encore c'est trop spécifique pour avoir un sens.
Rien n’empêcherai techniquement d'utiliser du Rust dans des sous-systèmes qui font manifestement partie du cœur d'un OS comme le scheduler par exemple. Ça ne deviendrait pas des drivers pour autant.
Et pire encore : les drivers en C deviendraient le noyau
En effet et les wrapper Rust ne font pas partie du sous-système DMA (dans /kernel/dma). Ils sont dans leur propre domaine(/rust). Les retirer n'aurait aucun impact sur le code DMA, juste sur les drivers Rust qui l'utilisent
Il faut vraiment comprendre que ce wrapper n'est qu'une bibliothèque utilisée par les drivers Rust. ils pourraient tout a fait être dans le code des drivers, mais ça serait de la duplication inutile de code complexe.
Le 12/02/2025 à 08h50
Qui plus est, attention avec la notion de wrapper. Un wrapper peut vite devenir plus qu'un wrapper. C'est plus que cela. Cela devient souvent a minima un adapteur.
Il faut comprendre que le sous-système ce n'est pas qu'une arborescence au sein de linux. Le /rust/kernel/dma fait, pour moi, parti du sous-système /kernel/dma. Ca n'a pas de sens de définir un sous-système sur la base d'un langage et non pas sur la base de la fonctionnalité/scope.
Ah mais je comprends très bien, rassure toi (le dev, c'est mon métier, et les wrappers, j'en ai déjà fait plein !). Je sais aussi qu'un wrapper ne reste rarement qu'un wrapper, et peut vite devenir un adapteur. Et ici, dans le cadre d'un projet comme le noyau linux, c'est une des pires choses qui puissent arriver je pense, car tu peux avoir une interface en C qui soit ait évolué à la version n+1 tendu que la version en rust continu d'utiliser la version n, car le wrapper joue la glue nécessaire pour rendre compatible la version n avec la version n+1 (et devient donc un adapteur).
Maintenant, Linus a très bien résumé la situation je trouve. Et pour la dernière fois, l'intégration de Rust a été autorisée de manière très cadrée. Si cela ne plait pas à l'équipe de R4L, alors, comme je ne cesse de le répéter => fork, patch, etc.
Modifié le 13/02/2025 à 07h11
Si on considère que ce qui utilise l'API DMA fait partie du domine DMA, tous les drivers qui utilisent le DMA font partie du domaine DMA.
Linus a surtout critiqué a raison la forme de la discussion. Il n'a, à ma connaissance, pas tranché le problème du point de vue technique.
Le 13/02/2025 à 08h41
Mais qu'importe ton avis ou le mien (il n'y en a pas un de meilleur que l'autre, de toute façon). C'est à l'équipe noyau de trancher. Equipe au sens large (incluant R4L).
Non. Ca n'a pas de sens. Mais le wrapper n'est pas une partie qui utilise le DMA. C'est une partie qui fourni le DMA (bon, ok, techniquement, en fait, elle fait les deux !!)
Alors, quand je disais qu'il a bien résumé la situation, ce n'était pas du point de vue technique, effectivement. Il a juste dit 2 choses :
- que les développeurs Rust ont parfois du mal à se remettre en question
- que ces discussions doivent avoir lieu "en interne" et pas sur les réseaux sociaux.
Modifié le 22/02/2025 à 14h48
Le 21/02/2025 à 10h28
sa réponse est très intéressante je trouve, et assez explicite
concernant Linus lui-même, j'aime beaucoup le "I say some stupid things at times, there needs to be people who just stand up to me and tell me I'm full of shit.", je trouve ça sain
Le 21/02/2025 à 11h31
Modifié le 21/02/2025 à 10h56
Mais tu m'as devancé. Mais le mien est en français :p
Le 11/02/2025 à 13h58
Peut être qu'il y a plusieurs composantes sur le sujet, qui met en balances plusieurs points de vues éventuellement difficilement conciliables. Vous me diriez que peut être que je sur interprète. Je répondrais "peut être" ou "peut être pas". Donc voici les signaux faibles qui me font douter :
- on sais maintenant que dans ce pays, déstabiliser une personne par l'action du chef en dépassant la politesse tacite (et explicite) peut parfois être une manière de faire diversion pour cacher une politique qui ne sera pas débattue. Un "grand chef" de Linux qui humilie une personne en public peut être vu comme un problème caractériel, le choix sage du chef pour les cheffistes, ou comme un acte politique. C'est léger, mais c'est un signal faible quand même.
- demander à ce que la discussion se fasse en privé, c'est mieux pour la cohérence de l'équipe, mais moins bien pour la transparence
- Linus Torvald a déjà été approché pour qu'il mette une porte dérobée dans Linux. Là, c'est plutôt un signal fort.