Connexion Abonnez-vous

L’arrivée de Rust dans APT provoque des débats dans la communauté Debian

L’arrivée de Rust dans APT provoque des débats dans la communauté Debian

L'un des développeurs de Debian a annoncé l'inclusion prochaine de code en Rust dans le gestionnaire APT. La décision reflète une volonté de renforcer la sécurité du composant, mais soulève de nombreuses questions et critiques.

Le 06 novembre à 09h30

Comme nous l’avons vu récemment à travers notre interview de Sylvestre Ledru, directeur de l’ingénierie chez Mozilla, le langage Rust s’insinue partout. Ses performances et ses mécanismes de sûreté de la mémoire en font la nouvelle coqueluche de bon nombre d’entreprises pour la programmation système.

Du Rust dans APT

Dans la sphère Linux, son arrivée provoque davantage de remous, avec des débats relatifs à son utilisation dans le noyau. Dans Debian, le développeur Julian Andres Klode a publié le soir d’Halloween un message important :

« Je prévois d'introduire des dépendances Rust et du code Rust dans APT, au plus tôt en mai 2026. Cela concernera dans un premier temps le compilateur Rust, la bibliothèque standard et l'écosystème Sequoia. Notre code d'analyse des fichiers .deb, .ar et .tar, ainsi que le code de vérification des signatures HTTP, bénéficieraient particulièrement de l'utilisation de langages sécurisés en mémoire et d'une approche plus rigoureuse des tests unitaires. Si vous maintenez un port sans chaîne d'outils Rust fonctionnelle, veuillez vous assurer qu'il en dispose dans les six prochains mois, ou supprimez le port. Il est important pour l'ensemble du projet de pouvoir aller de l'avant et de s'appuyer sur des outils et des technologies modernes, sans être freiné par la tentative d'adapter des logiciels modernes à des appareils informatiques rétro »

Dans le courant de l’année prochaine, le gestionnaire de paquet APT va donc commencer à intégrer du code en Rust. Autrement dit, Debian elle-même aura une exigence stricte sur la prise en charge du langage sur toutes les architectures.

Critiques et inquiétudes

Pour les utilisateurs de la distribution, cela ne devrait rien changer. Pour les développeurs en revanche, il y aura des travaux plus ou moins importants, car il faudra prévoir une chaine de compilation Rust fonctionnelle en plus des outils traditionnels comme GCC. En clair, la complexité va monter d’un cran, notamment sur les architectures moins courantes où le langage n’est pas bien supporté.

Pourquoi ce problème ? Parce que le compilateur Rust repose sur l’infrastructure LLVM, quand l’immense majorité des compilations dans les systèmes Linux sont effectuées avec GCC. Si LLVM présente certains avantages (comme la compilation Just-in-time), il est également supporté par un plus petit nombre d’architectures, contrairement à GCC qui est plus ancien, plus éprouvé et présent pratiquement partout.

Dans les commentaires de Phoronix, on peut lire différentes inquiétudes au sujet de cette annonce. La principale est qu’en l’absence de compilateur Rust sur une partie des architectures supportées par Debian, la distribution risque de perdre son côté « universel » à sa prochaine itération majeure. Certains commentaires mettent aussi en avant la fiabilité éprouvée de GCC, qui correspond à la philosophie de Debian de ne pas bondir sur les dernières technologies, privilégiant la plus grande stabilité possible.

Citons également le poids : le compilateur Rust et sa chaine d’outils sont plus volumineux que GCC et sa compilation est plus lente, ce qui pourrait poser problème pour les systèmes embarqués et des configurations plus anciennes. D’autres encore s’inquiètent d’une dépendance accrue envers l’écosystème Rust et ses binaires précompilés, créant des interrogations sur la sécurité et l’auditabilité du code.

Commentaires (53)

votre avatar
Pour moi, le coeur du problème c'est la trop lente adoption de l’infrastructure LLVM, malgrés ses avantages sur l'historique GCC. Certes LLVM vient avec son lot de problèmes (lourdeurs), mais rien qu'on ne pourrait résoudre s'il était massivement adopté.

Ca rappelle X/Wayland, initd/systemd, IPv4/v6...
votre avatar
D'accord avec toi. On ne peut pas maintenir des outils éternellement même si ils ont fait un super job jusque là. Rust existe depuis quasiment 20 ans et est reconnu pour ses avantages. Quant à la lourdeur, on est plus sur des machines avec 2Ko de mémoire non plus (je grossis le trait volontairement).
votre avatar
Ca rappelle X/Wayland, initd/systemd, IPv4/v6...
La diff avec systemd, c'est qu'il est aujourd'hui la norme avec des distribs qui maintiennent l'exception.
Il est important pour l'ensemble du projet de pouvoir aller de l'avant et de s'appuyer sur des outils et des technologies modernes, sans être freiné par la tentative d'adapter des logiciels modernes à des appareils informatiques rétro
Bon, par contre, si je voulais être cynique, il veut en gros faire ce que Microsoft a fait avec Windows 11 qui s'est fait tirer dessus à boulets rouges à cause de la compatibilité cassante du hardware :transpi:
votre avatar
Oui sauf que là on parle de machines qui ne sont plus fabriquées depuis au moins 20 ans, alors que Windows 11 pose soucis avec des PC vieux de moins de 5 ans.
votre avatar
Microsoft, c'est pour d'autres raisons n'ayant rien à voir avec les chaînes de génération et langages/architectures supportés (totalement ridicule en comparaison).
Maintenant, autant voir du rust arriver sur des dépendances dispensables ou pour des modules destinés à supporter du nouveau matériel, pourquoi pas.
Mais sur un composant au cœur du système d'installation/mise à jour, c'est plus le même problème. L'avantage, c'est qu'on voudrait démontrer les problèmes posés par l'inclusion de rust qu'on ne s'y prendrait pas autrement. Pour un existant bien mature, je trouve que c'est en prime du boulot parfaitement inutile qui serait mieux employé ailleurs: Un truc stable, on a tout intérêt à utiliser les outils d'analyse de code existants pour trouver les failles qui peuvent rester sur des trucs codés en C/C++: C'est certes long, mais sur du stable qui bouge peu on s'en fout car ce sera pas souvent.
En prime, faut pas oublier le poids de Linux dans l'embarqué. Et là, les industriels, tant que C restera plus performant que Rust il ne sera pas question de changer. Surtout quand le problème de la gestion mémoire que Rust prétends résoudre est résolu depuis des années par les progrès des outils de génération (qui si on monte le niveau de check ne laissent plus passer grand chose, ce qui est parfois un peu casse-couille quand on doit polluer le code avec les déclarations ad-hoc pour faire passer l'utilisation d'un pointeur weak à coverity ou un break non présent à dessein dans une branche de case) et de check sources derrière.
votre avatar
Ça se comprend un peu. A chaque fois qu'un truc sort c'est comme les politiques : Il promet tout et ne tient pas pas grand chose. Avec le sempiternel "on peut tout faire"... sauf...


C'est aussi un problème de communication. A chaque fois que ces produits sortent; ils oublient de présenter clairement les intérêts majeurs par rapport à ses concurrents. Et le comment faire ce qu'on faisait avant avec ceci.

Enfin il y a les gens ou les entreprises elles mêmes qui ne sont pas prêts à tout reprendre d'un coup sans avoir des certitudes. Celles-ci ne sont pas livrés avec le schmilblick. Organisation, formation, menace sur l'emploi du dev, bugs. Pendant la migration on ne fait pas autre chose.

Le meilleur exemple que j'ai était .Net6 à sa sortie. Net MAUI était censé résoudre tout les problèmes de l'humanité. Bon, WPF est encore là...
votre avatar
Ça se comprend un peu. A chaque fois qu'un truc sort...
Oui, enfin c'est sorti il y a 20 ans et c'est utilisé par tous les gros éditeurs/fondeurs qui proposent un compilateur spécifique pour leur hardware (intel, amd, nvidia, arm, ...).
Le meilleur exemple que j'ai était .Net6 à sa sortie. Net MAUI était censé résoudre tout les problèmes de l'humanité. Bon, WPF est encore là...
Microsoft propose un nouveau SDK graphique unifié et révolutionnaire à chaque version de windows. Donc bien trop souvent pour espérer une adoption. C'est pas trop comparable avec la timeline de LLVM , wayland, ...
votre avatar
Oui, enfin c'est sorti il y a 20 ans
La première version de Rust oui. La première version stable de Rust, ça fait 10 ans.

Les premières années, Rust était un langage "instable" avec des évolutions permanentes, pas forcément compatible (retrait du ramasse-miettes par exemple).

Si le choix de Rust pour de nouveaux projets est effectivement plus simple à faire, pour des projets existants, c'est prendre un risque. Risque de créer des incompatibilités, risque d'alourdir les tâches de maintenance et la correction de bogue, risque d'alourdir l'ajout de nouvelles fonctionnalités, etc.

Avoir un projet utilisant plusieurs langages, c'est pas forcément une bonne idée si le besoin derrière n'est pas un besoin impérieux. Le choix d'inclure ou non Rust doit se faire en contrebalançant avantages et inconvénients, pas juste sur un "effet de mode".

Dans le cas d'APT, c'est la perte du support de certaines architectures qui me semble le plus impactant. C'est loin d'être anodin pour un projet comme Debian.
votre avatar
La première version de Rust oui. La première version stable de Rust, ça fait 10 ans.
Je parlais surtout de LLVM, pas de rust. :)
votre avatar
Ah pardon ^^ J'avais mal compris ;)
votre avatar
Je ne justifie pas. N'y approuve. Je décris.
votre avatar
"tous les gros éditeurs/fondeurs qui proposent un compilateur spécifique pour leur hardware (intel, amd, nvidia, arm, ...)"

PowerPC, MIPS??? Ah bin non en fait! Pour ne citer que 2 qui restent très présents en embarqué, en particulier télécoms...
votre avatar
Tu mentionnes X/Wayland.
Le changement majeur de système d'affichage nécessite d'être en capacité (connaissance, savoir-faire) pour aller trifouiller de la base de code d'il y a maintenant parfois 40 piges, en y allouant du temps, tout en s'assurant de la rétro-compatibilité avec des matériels qui ne sont pas nécessairement sous la main.
Ce serait facile de critiquer avec les bras croisés, comme toujours, et comme c'est souvent le cas d'ailleurs.

Tu mentionnes Systemd vs SysVinit (et en fait… tout les autres init).
Il ne faut pas oublier que la résolution Debian ayant fait basculer le système init sur Systemd résulte simplement d'un passage en force : la communauté était singulièrement divisée, à 50/50. La bonne approche aurait consisté en la reconnaissance de cet état et au maintien du statu quo.
Ce monde ne sachant décidément pas gérer les situations complexes sans passer en force, c'est bien comme cela que Systemd est devenu un pilier d'une distribution majeure, centrale pour beaucoup d'autres… avec tout ce que cette hydre monolithique (en)traîne de négatif.
Imagine que cette incapacité arrive dans la sphère politique : ce serait incroyable. Sorti de ma pure imagination, imagine une Première Ministre dégainer 23 49.3 à la sulfateuse en 18 mois : ce serait d'une violence inouïe et une fontaine d'injustice touchant la vie d'êtres humains. Comme toujours lors des passages en force.

Tu mentionnes IPv4 vs IPv6… en balayant d'un revers de la main l'infinie complexité d'IPv6, et du cauchemar à maitriser ses différents mécanismes : SlAAc, DHCPv6 (rien à voir avec DHCP), ses modes RA & PD, et les différentes problématiques relatives à l'anonymisation et à la double pile.
Je ne mentionne même pas la difficulté niveau matériel, dans un monde qui y est très dépendant.
Alors certes, ce n'est pas une justification pour ne pas s'y mettre, mais si les techniques, les petites mains, avaient à disposition les cordons de la bourse, il en serait différemment, car c'est du temps, beaucoup de temps, et des problèmes en cascade, donc de la monnaie sonnante & trébuchante, à prévoir.

Je passe sur LLVM présente que sous l'angle d'avantages supposés sur GCC présenté comme historique (comprendre vieillot) : je pense que ceci se passe de commentaire.

Une liste qui semblait homogène, et non-terminée par l'ellipse, et qui n'avait donc pour seul raisonnement sous-jacent qu'un modernisme implicite, rassemble finalement donc que des situations radicalement différentes, des problématiques spécifiques, et qui n'ont qu'en commun que l'importance des moyens (gens, temps, volonté) à y consacrer… qui généralement manquent.

Ne s'agirait-il là encore, au fond, que d'un sempiternel argumentum ad novitatem ?
votre avatar
Ne s'agirait-il là encore, au fond, que d'un sempiternel argumentum ad novitatem ?
C'est possible.

Mais je crois qu'il y a aussi beaucoup, beaucoup de gatekeepers qui veulent rester sur la techno qu'ils maitrisent et ont la flemme (ou la crainte) de voir leur monde changer.

Perso, je n'aime pas la syntaxe de Rust. Mais ca ne m'empêche pas de reconnaitre qu'il y a un engouement autour de ce langage et qu'il propose des avantages par rapport au C. Donc tant pis pour moi si je ne l'aime pas, il mérite que j''accepte son adoption.

Pareil avec IPv6.

Bon, pour wayland j'ai toujours trouvé que X fonctionnait à l'envers, même si l'idée est conceptuellement "logique". Donc j'ai accueilli Wayland comme une amélioration.
votre avatar
@Berbe

Je vais juste rebondir sur IPv4/IPv6 et ton affirmation: « l'infinie complexité d'IPv6, et du cauchemar à maîtriser ses différents mécanismes : SlAAc, DHCPv6 (rien à voir avec DHCP), ses modes RA & PD, et les différentes problématiques relatives à l'anonymisation et à la double pile ».

Ce que tu décrit est un ressenti qui t'est personnel ; mon expérience et mon ressenti sont diamétralement opposée. Ce qui me gène donc est que tu décrit ton ressenti comme une vérité absolue.

Perso, ce qui me fait chier quotidiennement, dans mon travail, mes occupations associatives et mes expériences perso, c'est IPv4 et toutes les bidouilles que l'on doit se coltiner pour essayer de compenser ses défauts.

Mon ressenti est qu'IPv6 me simplifie grave la vie. Tout est tellement plus simple pour moi en IPv6 que j'ai bien du mal à comprendre pourquoi on n'a pas encore arrêté IPv4.

La seule chose qui m'agace avec IPv6 c'est DHCPv6 dont même les concepteurs ont reconnu que c'était une très mauvaise idée. DHCP mérite d'être enterré avec IPv4, vraiment. C'est une des raisons pour moi de fuir Orange pour la fibre et de préférer free.

Pour le coup, je loue Google pour le doigt d'honneur qu'ils font en bloquant le protocole DHCPv6 dans Android. Je dis rarement du bien de Google mais je dois bien leur être reconnaissant dans le cas présent.

Mon conseil pour une transition zen, oublie totalement DHCP et utilise exclusivement les annonce de route.

Au plaisir de débattre de ce sujet avec toi à l'occasion.
votre avatar

Perso je trouve IPv6 aussi compliqué que IPv4.

IPv4 c'est compliqué pour la communication LAN/WAN
C'est à dire 99.9% des usages domestiques "box internet"

IPv6 c'est compliqué pour la communication sur le meme LAN.
C'est à dire 99.9% des usages domestiques "2nd PC, NAS, printer, ..."

J'aurais tendance a dire que IPv6 est plus simple dans l'idée, mais pas dans l'implémentation avec ses préfixes magiques et ses workarounds pour faire cohabiter IPv6/v4.
votre avatar
La complexité apparente d'IPv6 vient principalement de 2 facteurs :
- la cohabitation avec l'IPv4
- ceux qui connaissent IPv4 et qui veulent faire de l'IPv6 comme ils faisaient de l'IPv4.

Mais en soit, l'IPv6 n'est pas plus compliqué que l'IPv4 (j'ai même trouvé ça plus simple perso).
votre avatar
Mais en soit, l'IPv6 n'est pas plus compliqué que l'IPv4 (j'ai même trouvé ça plus simple perso).
Le principe de base de IPv6 est plus simple et davantage en phase avec les usages modernes.
Mais..
MAIS...
Quelqu'un s'est dit "Hey ! pour faciliter l'adoption on va gérer des cas particuliers"

:eeek2:
votre avatar
Quelqu'un s'est dit "Hey ! pour faciliter l'adoption on va gérer des cas particuliers"
Tu as la même chose avec IPv4 hein ;)
votre avatar
Tu as la même chose avec IPv4 hein ;)
Tout a fait. Mais on était en droit d'attendre que IPv6 fasse mieux. Non ?

Là où le format des adresses IPv4 n'avait rien de prévu pour différencier les usages (d'où les valeurs magiques de subnet), le format IPv6 avait tout loisir d'y réfléchir. D'ailleurs les premiers bits ont une sémantique dans IPv6. Mais visiblement ca a du merder quelque-part et on a réintroduit les valeurs magiques de global/link.
votre avatar
Je ne comprends pas ce que tu veux dire. Que reproches tu exactement ?

Les classes d'usage n'ont pas besoin d'être "technique". Cela ne ferait que complexifier le protocole pour rien. Le retour d'IPv4 montrait justement que cela fonctionnait très bien. C'est même plus simple je trouve en IPv6, car la répartition des adresses n'est pas fragmentée entre du global (IP publique )et du local (IP privée).

D'ailleurs, si tu regardes la représentation binaire, les classes sont justement des bits mis à 0 ou 1. Les classes en IPv6 ne sont donc que l'expression des premiers bits, et absolument pas des valeurs magiques choisies arbitrairement (comme cela pouvait être le cas en IPv4 avec les adresse en 10.x.x.x, 192.168.x.x, etc.)
votre avatar
C'est compliqué quand personne ne supporte IPv6. OpenWRT, OpenSense, Ubiquity... aucun ne supporte correctement IPv6 sauf pour les trucs très basiques
votre avatar
Qu'est-ce qui n'est pas supporté et qui pose problème ? Pour Ubiquity, je ne peux pas dire, ne l'ayant jamais utilisé. Mais OpenWRT et OpenSense, dire qu'ils ne supportent pas IPv6 correctement, j'ai besoin d'exemple.
votre avatar
@127.0.0.1
IPv6 c'est compliqué pour la communication sur le meme LAN. C'est à dire 99.9% des usages domestiques "2nd PC, NAS, printer, ..."
Il va falloir m'expliquer là car je ne vois pas où tu veux en venir
votre avatar
Il va falloir m'expliquer là car je ne vois pas où tu veux en venir
Fait pas semblant de découvrir que IPv6 impose d'avoir deux adresses différentes LAN/WAN sur chaque appareil, chacune ayant son format/valeur partiellement imposé. Là ou IPv4 n'impose qu'une adresse par appareil, sans limitations particulières (*).

(*) sauf quelques valeurs réservées, qu'on a aussi en IPv6.
votre avatar
Fait pas semblant de découvrir que IPv6 impose d'avoir deux adresses différentes LAN/WAN sur chaque appareil, chacune ayant son format/valeur partiellement imposé. Là ou IPv4 n'impose qu'une adresse par appareil, sans limitations particulières (*).
Ne fait pas semblant de ne pas savoir que l'on retrouve exactement les mêmes types d'adresse avec les mêmes limitations d'usage en IPv4:
- Des adresses link local non routables: 169.524.0.0/24
- Des adresses locales routables: 10.0.0.0/8, 172.16.0.0/12 et 192.168.0.0/16
- Des adresses globales avec des plages diverses.

La grosse différence est que tu peux avoir les trois types en même temps en IPv6 alors que IPv4 impose de choisir l'une d'entre-elles. C'est donc IPV4 qui impose et qui limite alors qu'IPv6 permet d'avoir jusqu'à 16 adresses de plusieurs types (un bonheur pour les serveurs).
Qui plus est, les plages sont bien plus simples à gérer (un bonheur pour les pare-feux).

Donc, en quoi IPv6 te pose-t-il réellement problème ?
votre avatar
Donc, en quoi IPv6 te pose-t-il réellement problème ?
Mon problème est indiqué dans mon premier post: c'est adopté trop lentement.

Et le pire c'est que ca été volontairement complexifié pour pouvoir cohabiter avec IPv4 et assurer une transition "facile". Au final c'est plus complexe que nécessaire et l'adoption n'est pas au rendez-vous.

Est-ce que tu appelles cela une réussite ?
votre avatar
Pour le coup de la transition, on est bien d'accord que cela prend bien trop de temps et que cette phase bien trop longue induit une complexité inutile.

Quand on y regarde bien, les opérateurs y sont pour quelque chose mais les politiques aussi car il suffirait de statuer légalement que la fourniture d'une connectivité IPv4 n'est pas obligatoire dans une offre d'accès ou d'hébergement mais que celle d'IPv6 l'est et cela bougerait bien plus vite.

Quand on voit des hébergeurs comme o2switch qui ne proposent pas d'IPv6 alors qu'ils ont un préfixe alloué, on se dit qu'il y a manifestement des claques qui se perdent.
votre avatar
Il ne faut pas oublier que la résolution Debian ayant fait basculer le système init sur Systemd résulte simplement d'un passage en force : la communauté était singulièrement divisée, à 50/50. La bonne approche aurait consisté en la reconnaissance de cet état et au maintien du statu quo.
Il y a eu de longues discussions suivies par un vote par Condorcet avec plusieurs nuances, incluant "plus de discussions sont nécessaires", et la communauté a clairement voté pour SystemD:
https://www.debian.org/vote/2019/vote_002

Mais bon, il semble que même avec le système le plus démocratique possible il y en a toujours pour hurler au passage en force.

Des fois des ruptures sont nécessaires, ce qui implique des tensions, c'est normal. Le status quo est parfois aussi très violent. La manière dont Debian gère ces débats et ces tensions normales tout en préservant sa capacité d'évoluer est plutôt exemplaire à mon avis.
votre avatar
ON A PEUR DU CHANGEMENT OKEY ?
votre avatar
Je pense que toutes ces migrations vers Rust ne corrigeront pas le problème de fond : ce n'est pas un outil qui va corriger de mauvaises pratiques.
votre avatar
Rust ne pourra évidement pas résoudre tous les problèmes, mais ce qui fait son intérêt au niveau de la sécurité, c'est justement qu'il contrait à appliquer certaines règles qui sont juste des bonnes pratiques en C et C++, où l'on peut les violer aussi bien par méconnaissance que par erreur.
votre avatar
Dis autrement, Rust est justement un outil qui va forcer à corriger un certain nombre de mauvaise pratiques.

Ensuite, Rust et son écosystème standard va faciliter d'autres bonnes pratique. Son apprentissage va même parfois permettre de se rendre compte que certaine pratique que l'on avait sont mauvaises, alors que l'on ne pensait pas.
Le langage complété de l'écosystème, une fois un apprentissage minimal fait, va rendre moins couteux intellectuellement d'appliquer les bonnes pratique, de vérifier le code existant ou les propositions de changements.
votre avatar
Je rajouterais également que :
- Rust est un outil qui facilite l'apprentissage des bonnes pratiques par des programmeurs "débutant".
- utiliser Rust est un moyen d'attirer de nouveau contributeurs et notamment des personnes attachées à l'usage de bonne pratique.

En tant que programmeur, malgré l'envie j'ai toujours eu du mal à contribuer à des programmes écrit en C/C++, alors que c'était mon langage professionnel. Alors qu'en Rust j'ai beaucoup plus facilement pu contribuer à différent projets open-source.
votre avatar
Donc en gros, la critique, c'est qu'il ne faut pas sauter sur les dernières technos?
Euh...LLVM a 22 ans et Rust en a 13.....
votre avatar
Ca m'aurait intéressé d'avoir des informations plus détaillées dans l'article sur quelles architectures ne sont pas supportées par LLVM ou n'ont pas de toolchain Rust au niveau nécessaire. L'archive de la mailing list donne un peu plus d'info mais c'est quand même pas ouf. Est-ce que ça serait pas les commentateurs de phoronix qui s'affolent pour pas grand chose ? Notament l'auteur répond dans la mailing list que Rust est déjà une dépendance dure pour toutes les archis sauf une liste plutôt réduite (et pour autant que je puisse en juger assez obscure et/ou antédilluvienne).

EDIT: Alpha, Motorola 68000, HP, et sh4 dont j'avais même jamais entendu parler.
votre avatar
Apparu en 1979, le Motorola 68000 est un microprocesseur CISC 16/32 bits développé par Motorola. C'est le premier de la famille de microprocesseurs souvent appelée m68k ou 680x0, qui comprend notamment les microprocesseurs Motorola 68010,[...]

:accident:
votre avatar
(oui celui que je connaissais pas c''était le sh4, j'ai eu un Atari ST à la maison il y a ... au moins pas mal de lurettes)
votre avatar
EDIT: Alpha, Motorola 68000, HP, et sh4 dont j'avais même jamais entendu parler.
(la communauté Amiga/Atari entre dans la discussion...)
votre avatar
Bring it on !
J'ai pas suivi la communauté des émulateurs depuis qques années, mais avoir relancé un Dungeon Master sur Steem m'avait bien fait plaisir :) Comme quoi on grandit pas des masses.
votre avatar
Toutes les architectures officiellement supportées par Debian sont compatibles avec Rsut et LLVM.

Edit : c'est également évoqué dans les commentaires de l'article de Phoronix : https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1588502-debian-s-apt-will-soon-begin-requiring-rust-debian-ports-need-to-adapt-or-be-sunset?p=1588518#post1588518
votre avatar
"Si vous maintenez un port sans chaîne d'outils Rust fonctionnelle, veuillez vous assurer qu'il en dispose dans les six prochains mois, ou supprimez le port."

Quel cynisme. Ça revient à : démerdez-vous pour porter clang sur une nouvelle archi ! Bien sûr, ça se fait en 3 minutes.
votre avatar
En même temps c'est des architectures très particulières qui ne seront jamais utilisées sur des machines critiques. Est-ce qu'elles ont vraiment besoin de la dernière version de Debian, au point que ça justifie de le contraindre dans ses choix techniques ?
votre avatar
D’autres encore s’inquiètent d’une dépendance accrue envers l’écosystème Rust et ses binaires précompilés, créant des interrogations sur la sécurité et l’auditabilité du code.
Voilà le vrai problème de fond, de mon point de vue, si ça limite la capacité d'audit du système, et donc la reproductibilité en partant du code source, c'est un problème et c'est a priori incompatible avec la philosophie Debian (voire du Libre "as in logiciel libre" :p)
L'histoire, pas si vieille de xz, doit remonter en mémoire chez pas mal de gens.

La compatibilité aux différentes archi est également un gros sujet, mais je pense que ça peut être contourné, probablement au prix de l'universalité effectivement, mais il y a peut-être d'autres voies.
votre avatar
Sauf que Rust n'a pas plus de problème de binaire pré-compilés que C. Au contraire, en Rust la distribution du source est privilégiée vu qu'il faut pouvoir recompiler les dépendance statique (privilégiées en Rust a cause de l'ABI non estabilisée).
votre avatar
C’est quoi cette histoire de binaire precompilés svp ?
votre avatar
Nous avons donc affaire à un message prenant les autres par surprise, sous forme d'ultimatum de 6 mois à la communauté de la part d'un développeur ne prenant même pas la peine de concerter d'autres ou de motiver sa décision.
On pourrait exiger de soi-même un minimum d'empathie avec les autres, notamment sur ce genre de changement d'ampleur, quand on ne veut pas être violent.

Cette décision semble effectivement contraire à l'adoption de technologies éprouvées sur le plus grand nombre possible d'architecture : c'est la nature, le cœur, la signature Debian.
D'ailleurs, cela forme la source des sempiternelles critiques de modernistes qui préfèrent taper sur un outil qui ne leur correspond manifestement pas plutôt que d'en choisir un qui le ferait.

La chaine d'outils LLVM est loin d'être la panacée (n'en déplaise aux modernistes), et une des véritables souffrances actuelle de Rust est de ne pas bénéficier d'une compilation GCC.
Je suis donc étonnée d'une charrue mise avant les bœufs, à vouloir faire rentrer un langage (que j'attends pourtant de mes vœux !) dont l'écosystème n'est pas prêt dans cette distribution.

Une solution, évoquée nulle part par personne, est le fait qu'un groupe se démène pour tenter d'amener le support de Rust par GCC.
Peut-être faudrait-il commencer par là, y mettre de l'effort, donc y allouer des gens avec des compétences et du temps, afin d'aboutir à une solution fonctionnelle qu'il faudra ensuite rendre mature par l'usage, les retours d'expérience et la stabilisation de l'outil, avant d'envisager l'introduction de Rust dans Debian ?

En somme, il y a encore beaucoup à faire pour que l'écosystème Rust soit exploitable par des endroits recherchant des technologies matures & stables.
L'approche pragmatique dicterait donc que les plus fervents soutiens de Rust au sein de l'écosystème Debian aillent aident à faire avancer cette part du Schmilblick afin de pouvoir l'introduire sans renier les fondamentaux du projet.
Et que chacun s'assure que ses envies personnelles, aussi aiguës soient-elles, ne saccagent pas un projet et ne brutalisent pas les autres humains participent à son écosystème.
votre avatar
GCC étant l'acconyme de Gnu C Compiler, pour compiler du rust, ce serait plutôt un programme appelé GRC non ?
votre avatar
Petite erreur. GCC signifie Gnu Compiler Collection :cap:

La suite GCC supporte de nombreux langages. C, C++, Cobol, Ada, Fortran, etc. et j'en oublie très certainement.

Après, dans la suite, chaque compilateur peut avoir son binaire (gcc pour C, g++ pour le C++, gfortran pour le Fortran, etc.).

Il faut donc faire attention de ne pas confondre gcc (le binaire) avec la suite GCC (l'ensemble des compilateurs de GNU).
votre avatar
C'est devenu GNU Compiler Collection du fait du nombre de langages supportés.

Edit: Grillé. :transpi:
votre avatar
Rust est déjà aujourd'hui une dépendance de Debian, et du noyau Linux.

Rust est déjà utilisé en production et à grande échelle par de nombreux systèmes industriels, embarqués etc.

Un exemple parmi de nombreux :
https://blog.cloudflare.com/async-quic-and-http-3-made-easy-tokio-quiche-is-now-open-source/
Powering Cloudflare’s Proxy B in Apple iCloud Private Relay and our next-generation Oxy-based proxies, tokio-quiche handles millions of HTTP/3 requests per second with low latency and high throughput
C'est normal de devenir plus conservateur avec l'age, mais il faut pas non plus pousser mémé dans les orties avec des histoires de brutalité et d'empathie, pour justifier de toujours garder le status quo avec des exigences sans fin.

Les évolutions technologiques ont toujours fait partie du métier.
votre avatar
... Quand ce ne sont pas des régressions in fine.
(je parle en général)
votre avatar
Un avis éclairé que j'apprécie. Il est vrai que GCC est parfaitement intégré pour l'usage qui en est fait et permet une cohabitation de plusieurs versions de manière aisée et l'arrivée de LLVM/Clang a été suivi rapidement de nombreux changements quant à son intégration en tant que toolchain et il en été de même avec Rust par la suite.

Sur Gentoo Linux, j'ai pu observé pas à pas l'évolution de l'intégration de LLVM et Rust. Leur intégration au sein d'une méta distribution en rolling release expose parfaitement la complexité de LLVM comparé à GCC.
Lorsque j'ai vu apparaître le support alpha de Rust dans GCC, mon premier réflexe a été de poser la question si le but à terme était de pouvoir utiliser GCC comme compilateur Rust pour le système et en effet c'est l'espoir qui en est fait sur le long terme. Espoir simplement car le support de Rust par GCC n'en est qu'à ses débuts mais, à la vue du nombre de projets qui sont soit natif ou portés sur Rust dont pas des moindres tel certaines parties du kernel Linux, il est important de penser et concevoir pour le long terme car le support en parallèle d'une double toolchain GCC/LLVM est actuellement très coûteux.

Autant je peux comprendre le choix de rust pour sécuriser du code critique, autant je ne comprends pas que l'on puisse imposer un choix si lourd de conséquence à toute une communauté avec une deadline qui ressemble plus à un ultimatum qu'à un objectif sensé.

L'analogie faites avec systemd est plutôt bonne car systemd a été imposé très (voir trop) rapidement et je me rappelle encore très bien des comparaisons, lors de débats souvent houleux, des différents systèmes d'init dont certains ont été passé complètement sous silence (openrc au hasard).
Au final certains aspects de systemd sont toujours critiqués par des personnes compétentes dont le système d'init est primordial dans leur activité professionnelle. Cela donne l'amère impression d'un travail de lobbyiste pour imposer une technologie sans se soucier des réels utilisateurs de la technologie, ce qui me semble se rapproche bien plus d'une logique propriétaire qu'open source.

L’arrivée de Rust dans APT provoque des débats dans la communauté Debian

  • Du Rust dans APT

  • Critiques et inquiétudes

Fermer