Dans un billet d’actualités mensuel, publié le 8 juillet, Clément Lefebvre, fondateur et principal développeur de la distribution Linux Mint, a indiqué que le support de Wayland dans Cinnamon n’était plus expérimental.
La prochaine version majeure de Linux Mint, estampillée 23 et prévue pour la fin de l’année, proposera donc une « vraie » session Wayland, aux côtés de la session X11 classique, qui restera telle quelle. Le développeur ne dit pas en revanche si la session Wayland sera utilisée par défaut, ou si le choix sera plus conservateur. La décision sera probablement annoncée dans les mois qui viennent.
Clément Lefebvre indique que le travail sur le support de Wayland a été intense, avec de nombreux résultats positifs. On note ainsi des améliorations pour la stabilité générale, la gestion des fenêtres, le support du multi-écran, la prise en charge du HiDPI et de l’échelle fractionnaire ou encore des GPU NVIDIA.
Illustration : Flock
Ces nouveautés étant prévues pour la prochaine version de Cinnamon, elles seront automatiquement reprises dans Linux Mint 23, qui doit arriver en décembre. S’agissant de la première mouture à sortir après la publication d’Ubuntu 26.04, elle en reprendra donc les bases, avec à la clé une vaste modernisation de la base technique.
Les améliorations citées ne seront pas les seules. Lefebvre évoque par exemple une cartographie correcte de la taille et de la position des fenêtres quand Cinnamon est utilisé avec Wayland. Même chose pour les applets et les menus de contenu. Le prochain Cinnamon intègrera aussi un mécanisme de prévention du vol de focus (« focus stealing » en VO), pour s’assurer que la saisie ou les clics ne se fassent pas dans une autre application sans interaction explicite de l’utilisateur. Nous avions souligné ce risque de sécurité dans notre dossier consacré à la transition de X11 vers Wayland.
D’autres apports sont prévus et seront probablement accueillis avec joie par les utilisateurs. Par exemple, l’accélération matérielle a été intégrée au compositeur, au bureau et aux clients Wayland et XWayland (mécanisme de compatibilité pour les applications X11 dans une session Wayland). On note aussi la prise en charge de la session graphique de systemd pour améliorer la compatibilité avec d’autres distributions (Cinnamon peut être installé sur d’autres systèmes, comme Ubuntu et Fedora)
Dans un billet d’actualités mensuel, publié le 8 juillet, Clément Lefebvre, fondateur et principal développeur de la distribution Linux Mint, a indiqué que le support de Wayland dans Cinnamon n’était plus expérimental.
La prochaine version majeure de Linux Mint, estampillée 23 et prévue pour la fin de l’année, proposera donc une « vraie » session Wayland, aux côtés de la session X11 classique, qui restera telle quelle. Le développeur ne dit pas en revanche si la session Wayland sera utilisée par défaut, ou si le choix sera plus conservateur. La décision sera probablement annoncée dans les mois qui viennent.
Clément Lefebvre indique que le travail sur le support de Wayland a été intense, avec de nombreux résultats positifs. On note ainsi des améliorations pour la stabilité générale, la gestion des fenêtres, le support du multi-écran, la prise en charge du HiDPI et de l’échelle fractionnaire ou encore des GPU NVIDIA.
Illustration : Flock
Ces nouveautés étant prévues pour la prochaine version de Cinnamon, elles seront automatiquement reprises dans Linux Mint 23, qui doit arriver en décembre. S’agissant de la première mouture à sortir après la publication d’Ubuntu 26.04, elle en reprendra donc les bases, avec à la clé une vaste modernisation de la base technique.
Les améliorations citées ne seront pas les seules. Lefebvre évoque par exemple une cartographie correcte de la taille et de la position des fenêtres quand Cinnamon est utilisé avec Wayland. Même chose pour les applets et les menus de contenu. Le prochain Cinnamon intègrera aussi un mécanisme de prévention du vol de focus (« focus stealing » en VO), pour s’assurer que la saisie ou les clics ne se fassent pas dans une autre application sans interaction explicite de l’utilisateur. Nous avions souligné ce risque de sécurité dans notre dossier consacré à la transition de X11 vers Wayland.
D’autres apports sont prévus et seront probablement accueillis avec joie par les utilisateurs. Par exemple, l’accélération matérielle a été intégrée au compositeur, au bureau et aux clients Wayland et XWayland (mécanisme de compatibilité pour les applications X11 dans une session Wayland). On note aussi la prise en charge de la session graphique de systemd pour améliorer la compatibilité avec d’autres distributions (Cinnamon peut être installé sur d’autres systèmes, comme Ubuntu et Fedora)
Ubuntu 26.10 remplace enfin dbus-daemon par dbus-broker comme implémentation par défaut de D-Bus, un changement essentiellement interne visant à améliorer les performances, la robustesse et l’extensibilité. Aucun impact particulier n’est attendu sur les applications.
D-bus est un bus de messages : grâce à lui, les processus Linux peuvent communiquer entre eux. Ce composant est crucial, car il permet aux fonctions d’avoir le résultat attendu. Par exemple, le gestionnaire de fichiers demande au système de monter une clé USB pour en afficher le contenu, le panneau de configuration modifie la luminosité de l’écran, une application demande l’ouverture du sélecteur de fichiers, etc.
Pour quoi faire ?
À compter d’Ubuntu 26.10, le composant chargé des messages internes sera changé. dbus-daemon sera remplacé par dbus-broker, avec à la clé de sérieux avantages techniques : traitement asynchrone des messages, meilleure gestion des ressources, comptabilisation plus précise des clients, ou encore meilleure résistance générale lors de pics de trafic D-bus.
Il ne devrait y avoir aucun changement visible dans la grande majorité des scénarios. Bien que dbus-broker soit plus moderne, il est davantage pensé pour éviter les goulets d’étranglement que pour fournir une accélération dans les opérations basiques.
Si Canonical a décidé ce remplacement, c’est que dbus-daemon a été créé il y a 22 ans. Malgré son âge vénérable, il a reçu de nombreuses évolutions. Cependant, il accuse le poids des années : son architecture a été conçue à une époque où le nombre de services système était bien plus faible qu’aujourd’hui, où les environnements de bureau étaient plus simples et les charges de travail beaucoup moins importantes.
Pourquoi pas avant ?
Cette décision n’a rien d’avant-garde. Fedora, souvent la première distribution à opérer des changements techniques d’envergure, a déjà réalisé cette bascule en 2019. Pourquoi Canonical a-t-elle attendu si longtemps ? L’entreprise cite deux raisons :
Il a fallu attendre que GDM (le gestionnaire de connexion/bureau de GNOME) se débarrasse de ses dépendances à dbus-daemon, ce qui a fini par arriver avec GNOME 49
et attendre que dbus-broker atteigne une compatibilité complète avec AppArmor, notamment pour certaines fonctions liées à la gestion des paquets Snap
La stratégie de Canonical face à la nouveauté ne change pas. Les bascules ne s’opèrent que lorsque l’entreprise estime que la situation s’y prête. On se souvient par exemple que le passage à Wayland s’était fait plusieurs années après d’autres distributions, un peu plus de cinq ans après celle de Fedora, par exemple. Le remplacement des composants historiques se fait progressivement, pour éviter une cassure chez les utilisateurs, Ubuntu étant la distribution Linux la plus utilisée au monde.
Ubuntu 26.10 remplace enfin dbus-daemon par dbus-broker comme implémentation par défaut de D-Bus, un changement essentiellement interne visant à améliorer les performances, la robustesse et l’extensibilité. Aucun impact particulier n’est attendu sur les applications.
D-bus est un bus de messages : grâce à lui, les processus Linux peuvent communiquer entre eux. Ce composant est crucial, car il permet aux fonctions d’avoir le résultat attendu. Par exemple, le gestionnaire de fichiers demande au système de monter une clé USB pour en afficher le contenu, le panneau de configuration modifie la luminosité de l’écran, une application demande l’ouverture du sélecteur de fichiers, etc.
Pour quoi faire ?
À compter d’Ubuntu 26.10, le composant chargé des messages internes sera changé. dbus-daemon sera remplacé par dbus-broker, avec à la clé de sérieux avantages techniques : traitement asynchrone des messages, meilleure gestion des ressources, comptabilisation plus précise des clients, ou encore meilleure résistance générale lors de pics de trafic D-bus.
Il ne devrait y avoir aucun changement visible dans la grande majorité des scénarios. Bien que dbus-broker soit plus moderne, il est davantage pensé pour éviter les goulets d’étranglement que pour fournir une accélération dans les opérations basiques.
Si Canonical a décidé ce remplacement, c’est que dbus-daemon a été créé il y a 22 ans. Malgré son âge vénérable, il a reçu de nombreuses évolutions. Cependant, il accuse le poids des années : son architecture a été conçue à une époque où le nombre de services système était bien plus faible qu’aujourd’hui, où les environnements de bureau étaient plus simples et les charges de travail beaucoup moins importantes.
Pourquoi pas avant ?
Cette décision n’a rien d’avant-garde. Fedora, souvent la première distribution à opérer des changements techniques d’envergure, a déjà réalisé cette bascule en 2019. Pourquoi Canonical a-t-elle attendu si longtemps ? L’entreprise cite deux raisons :
Il a fallu attendre que GDM (le gestionnaire de connexion/bureau de GNOME) se débarrasse de ses dépendances à dbus-daemon, ce qui a fini par arriver avec GNOME 49
et attendre que dbus-broker atteigne une compatibilité complète avec AppArmor, notamment pour certaines fonctions liées à la gestion des paquets Snap
La stratégie de Canonical face à la nouveauté ne change pas. Les bascules ne s’opèrent que lorsque l’entreprise estime que la situation s’y prête. On se souvient par exemple que le passage à Wayland s’était fait plusieurs années après d’autres distributions, un peu plus de cinq ans après celle de Fedora, par exemple. Le remplacement des composants historiques se fait progressivement, pour éviter une cassure chez les utilisateurs, Ubuntu étant la distribution Linux la plus utilisée au monde.
Bun, un environnement d’exécution JavaScript et un gestionnaire de paquets, a annoncé le 8 juillet une conversion complète de son code vers Rust en un temps record. L’opération a été en grande partie menée grâce à l’utilisation de Claude Fable 5. Bien qu’il s’agisse d’un exemple concret en production, il ne peut pas être appliqué à tout type de projet.
Bun est un environnement et un gestionnaire de paquets pour JavaScript. Il est développé avec le langage Zig, est open source et sous licence MIT. Le projet est relativement récent sur la scène du développement, car la version 1.0 stable est sortie en septembre 2023. La dernière révision stable est la 1.3, publiée fin 2025. Elle a notamment ajouté le remplacement à chaud des modules (Bun est également un groupeur de modules, ou module bundler).
Les projecteurs se sont brusquement braqués sur Bun au même moment, quand Anthropic a annoncé son rachat. Une opération logique pour Anthropic, Bun étant déjà utilisé pour certains composants de Claude Code.
Et voilà que Bun vient d’annoncer la réécriture complète de son code Zig en Rust… en seulement 11 jours, entre les 3 et 14 mai.
Dans son billet, Jarred Sumner, à la tête du développement de Bun, explique que la version initiale de Bun avait été écrite en un an et en Zig, avant l’apparition des LLM. Aujourd’hui, le CLI (interface en ligne de commande) de Bun est téléchargé 22 millions de fois par mois. Alors pourquoi une réécriture totale en Rust ?
Selon Sumner, le choix n’est pas idéologique, mais motivé par une liste précise de bugs récurrents dans la version Zig : des dizaines de bugs de type use-after-free (le noyau réutilise un pan de mémoire qu’il a déjà libéré), double-free (double utilisation de la fonction free() sur la même adresse mémoire) et fuites mémoire dans des modules critiques (node:zlib, node:http2, UDPSocket, crypto.scrypt, TLS…).
L’argument central de Sumner est que Zig, comme le C, ne gère pas la mémoire pour vous, et ne dispose pas de constructeurs/destructeurs. Le nettoyage repose sur le mot-clé explicite defer. Il est manuel et il faut donc penser à l’utiliser, rendant l’erreur humaine quasi inévitable à grande échelle.
« Chaque allocation mémoire doit être examinée avec minutie. Où ces octets sont-ils libérés ? Comment s’assurer qu’il ne soit libéré qu’une seule fois ? Avons-nous bien vérifié les exceptions JavaScript ? Ce pointeur collecté à la poubelle est-il visible pour le scanner de pile conservateur ? Est-ce de la mémoire récupérée ou de la mémoire gérée manuellement ? », liste Jarred Sumner, parmi les questions récurrentes.
Après avoir envisagé le C++, il se tourne finalement vers le Rust, car une bonne partie des problèmes rencontrés sont liés à la gestion de la mémoire. Avec le « nouveau » langage, loué pour la sécurité induite justement en mémoire, ces problèmes apparaissent à la compilation. Encore faut-il que le code soit en Rust « sûr » (safe).
Sumner aborde d’ailleurs ce point. 4 % du code Rust de Bun se trouvaient ainsi dans un bloc unsafe, soit environ 13 000 mots-clés unsafe dans environ 27 000 lignes sur un total d’environ 780 000. La totalité du code ne peut pas être en Rust safe, car Bun continue d’embarquer des dépendances C/C++ significatives, comme JavaScriptCore, uWebSockets, BoringSSL, SQLite et lshpack/lsquic.
Le rôle prépondérant de Claude Fable 5
Le billet détaille amplement les méthodes utilisées. Par exemple, le choix d’une réécriture complète (plutôt qu’incrémentale) a été motivé par la propre expérience de Jarred Sumner dans ce type d’opération, et par la disponibilité d’une suite de tests indépendante du langage d’implémentation. Selon Sumner, elle a permis de garder un filet de sécurité comportemental identique pour l’avant/après.
On apprend en outre que la « revue adversariale » a été faite par deux instances Claude en contexte séparé, chargées de débusquer les bugs et présentées comme le mécanisme central de contrôle qualité. Et c’est justement la présence de Fable 5 au cœur du mécanisme qui rend l’annonce si visible.
La version de test a été produite en 11 jours. Les chiffres associés sont impressionnants : 5,9 milliards de tokens d’entrée non mis en cache, 690 millions de tokens de sortie, et 72 milliards de tokens d’entrée lus en cache. Soit environ 165 000 dollars au tarif de l’API, contre une estimation d’environ un an de travail pour trois ingénieurs à temps plein sur le code existant pour les 535 496 lignes de code, selon Jarred Sumner.
Source : Bun
Cette performance – en moyenne 1 300 lignes de code à la minute – concerne cependant la phase de génération brute, pas le code fonctionnel. Le billet précise qu’à ce stade, « absolument rien ne fonctionnait encore ». Une performance à relativiser également sur l’utilisation du LLM, car elle n’avait rien de « naïf ». L’orchestration humaine a été lourde, avec environ 50 flux de travail dynamiques et jusqu’à 64 instances de Claude en parallèle, réparties en quatre arbres de travail (worktrees). Sumner dit avoir lui-même surveillé manuellement les sorties pendant l’essentiel des 11 jours de travail.
Le billet documente aussi des échecs répétés du modèle dans des cas précis : interprétation erronée de consignes, ajout de commentaires justificatifs longs pour masquer des contournements… Un comportement suffisamment problématique pour que Sumner ait fini par ajouter une règle explicite aux réviseurs adversariaux : « Si vous avez besoin d’un paragraphe entier pour justifier qu’un contournement est correct, c’est que le code n’est pas bon – corrigez le code ».
Bon… et alors ?
Selon Jarred Sumner, les avantages de Rust sont évidents dans la préversion. Allègement des binaires, consommation de mémoire réduite, résolution de nombreux bugs liés à la mémoire existants dans la version actuelle 1.3.14… Sur le plan des performances, les gains sont plus mesurés, avec 2 à 5 % en moyenne selon les scénarios.
Jarred Sumner veut pour preuve de sa réussite que la version 2.1.181 de Claude Code, publiée le 17 juin, utilise la version de Bun réécrite en Rust. Cela signifie-t-il que tout est parfait et que tout le monde devrait se lancer dans le même type d’opération ? Pas du tout.
Le billet de Bun est assez transparent sur les défis restants. Bun 1.4.0 sera bien la première version intégralement en Rust et des corrections continueront pendant toute la phase de test. Mais plusieurs éléments méritent d’être soulignés, dont le caractère même du billet : intéressant dans le retour d’expérience qu’il rapporte, mais qui reste une communication d’entreprise puisque Jarred Sumner travaille pour Anthropic et a pu bénéficier de Fable 5 quand presque plus personne n’y avait droit en mai.
On pourrait souligner également que des régressions peuvent apparaître avant et après la version finale. 19 ont ainsi été détectées et corrigées, mais la suite de tests, malgré le grand nombre d’exercices (plus de 60 000) a été écrite avant la réécriture de Bun, son périmètre n’est donc pas optimal. En outre, Jarred Sumner ne dit rien des bugs qui ont pu échapper aux instances adversariales bâties sur Claude et qui ont pu être détectés avec d’autres méthodes. Faisons remarquer aussi que les 165 000 dollars présentés comme facture de la migration peuvent être trompeurs : ils n’incluent pas le lourd temps humain de supervision pendant les 11 jours, ni l’infrastructure de calcul, ni le travail de fusion et post-fusion du code.
Ce cas ne peut pas être généralisé. Même si la réécriture de Bun doit s’avérer une franche réussite, elle le devra en bonne partie à la suite de tests indépendants du langage d’implémentation, qui a permis la validation des opérations menées par les agents, en comparant les situations avant et après.
Le résultat ne sera pas non plus un code Rust « idiomatique ». Il sera loin d’être parfait et de répondre aux standards de sécurité auxquels un code dans ce langage peut prétendre, mais le billet est transparent sur la question. Sumner indique que l’objectif était bien la parité comportementale. Le code safe et profitant vraiment de tous les avantages de Rust viendra plus tard, lors de « refactorings ultérieurs ». Il ne donne pas plus de précisions.
Enfin, il ne s’agit clairement pas d’un scénario « lancer et oublier ». Le cas présenté est celui d’un ingénieur senior utilisant des agents comme amplificateurs, pas en remplacement de son expertise. Lancer Fable 5 et lui demander simplement de réécrire du code en Rust n’a aucune chance de donner un résultat approchant.
Le projet Bun disposait d’ailleurs de conditions favorables à la base, comme sa structure pensée pour la portabilité, l’absence de dépendance à des paradigmes très spécifiques au C/C++, ou même le fait que Jarred Sumner est l’auteur principal, travaillant seul sur une bonne partie des tâches.
Un projet C/C++ ancien, avec de multiples contributeurs, des conventions peu claires, des dépendances à des extensions spécifiques de compilateur, ou surtout une suite de tests incomplète ou couplée au langage source, rencontrerait des difficultés bien plus importantes avec cette même méthode. Et les coûts s’envoleraient d’autant.
Bun, un environnement d’exécution JavaScript et un gestionnaire de paquets, a annoncé le 8 juillet une conversion complète de son code vers Rust en un temps record. L’opération a été en grande partie menée grâce à l’utilisation de Claude Fable 5. Bien qu’il s’agisse d’un exemple concret en production, il ne peut pas être appliqué à tout type de projet.
Bun est un environnement et un gestionnaire de paquets pour JavaScript. Il est développé avec le langage Zig, est open source et sous licence MIT. Le projet est relativement récent sur la scène du développement, car la version 1.0 stable est sortie en septembre 2023. La dernière révision stable est la 1.3, publiée fin 2025. Elle a notamment ajouté le remplacement à chaud des modules (Bun est également un groupeur de modules, ou module bundler).
Les projecteurs se sont brusquement braqués sur Bun au même moment, quand Anthropic a annoncé son rachat. Une opération logique pour Anthropic, Bun étant déjà utilisé pour certains composants de Claude Code.
Et voilà que Bun vient d’annoncer la réécriture complète de son code Zig en Rust… en seulement 11 jours, entre les 3 et 14 mai.
Dans son billet, Jarred Sumner, à la tête du développement de Bun, explique que la version initiale de Bun avait été écrite en un an et en Zig, avant l’apparition des LLM. Aujourd’hui, le CLI (interface en ligne de commande) de Bun est téléchargé 22 millions de fois par mois. Alors pourquoi une réécriture totale en Rust ?
Selon Sumner, le choix n’est pas idéologique, mais motivé par une liste précise de bugs récurrents dans la version Zig : des dizaines de bugs de type use-after-free (le noyau réutilise un pan de mémoire qu’il a déjà libéré), double-free (double utilisation de la fonction free() sur la même adresse mémoire) et fuites mémoire dans des modules critiques (node:zlib, node:http2, UDPSocket, crypto.scrypt, TLS…).
L’argument central de Sumner est que Zig, comme le C, ne gère pas la mémoire pour vous, et ne dispose pas de constructeurs/destructeurs. Le nettoyage repose sur le mot-clé explicite defer. Il est manuel et il faut donc penser à l’utiliser, rendant l’erreur humaine quasi inévitable à grande échelle.
« Chaque allocation mémoire doit être examinée avec minutie. Où ces octets sont-ils libérés ? Comment s’assurer qu’il ne soit libéré qu’une seule fois ? Avons-nous bien vérifié les exceptions JavaScript ? Ce pointeur collecté à la poubelle est-il visible pour le scanner de pile conservateur ? Est-ce de la mémoire récupérée ou de la mémoire gérée manuellement ? », liste Jarred Sumner, parmi les questions récurrentes.
Après avoir envisagé le C++, il se tourne finalement vers le Rust, car une bonne partie des problèmes rencontrés sont liés à la gestion de la mémoire. Avec le « nouveau » langage, loué pour la sécurité induite justement en mémoire, ces problèmes apparaissent à la compilation. Encore faut-il que le code soit en Rust « sûr » (safe).
Sumner aborde d’ailleurs ce point. 4 % du code Rust de Bun se trouvaient ainsi dans un bloc unsafe, soit environ 13 000 mots-clés unsafe dans environ 27 000 lignes sur un total d’environ 780 000. La totalité du code ne peut pas être en Rust safe, car Bun continue d’embarquer des dépendances C/C++ significatives, comme JavaScriptCore, uWebSockets, BoringSSL, SQLite et lshpack/lsquic.
Le rôle prépondérant de Claude Fable 5
Le billet détaille amplement les méthodes utilisées. Par exemple, le choix d’une réécriture complète (plutôt qu’incrémentale) a été motivé par la propre expérience de Jarred Sumner dans ce type d’opération, et par la disponibilité d’une suite de tests indépendante du langage d’implémentation. Selon Sumner, elle a permis de garder un filet de sécurité comportemental identique pour l’avant/après.
On apprend en outre que la « revue adversariale » a été faite par deux instances Claude en contexte séparé, chargées de débusquer les bugs et présentées comme le mécanisme central de contrôle qualité. Et c’est justement la présence de Fable 5 au cœur du mécanisme qui rend l’annonce si visible.
La version de test a été produite en 11 jours. Les chiffres associés sont impressionnants : 5,9 milliards de tokens d’entrée non mis en cache, 690 millions de tokens de sortie, et 72 milliards de tokens d’entrée lus en cache. Soit environ 165 000 dollars au tarif de l’API, contre une estimation d’environ un an de travail pour trois ingénieurs à temps plein sur le code existant pour les 535 496 lignes de code, selon Jarred Sumner.
Source : Bun
Cette performance – en moyenne 1 300 lignes de code à la minute – concerne cependant la phase de génération brute, pas le code fonctionnel. Le billet précise qu’à ce stade, « absolument rien ne fonctionnait encore ». Une performance à relativiser également sur l’utilisation du LLM, car elle n’avait rien de « naïf ». L’orchestration humaine a été lourde, avec environ 50 flux de travail dynamiques et jusqu’à 64 instances de Claude en parallèle, réparties en quatre arbres de travail (worktrees). Sumner dit avoir lui-même surveillé manuellement les sorties pendant l’essentiel des 11 jours de travail.
Le billet documente aussi des échecs répétés du modèle dans des cas précis : interprétation erronée de consignes, ajout de commentaires justificatifs longs pour masquer des contournements… Un comportement suffisamment problématique pour que Sumner ait fini par ajouter une règle explicite aux réviseurs adversariaux : « Si vous avez besoin d’un paragraphe entier pour justifier qu’un contournement est correct, c’est que le code n’est pas bon – corrigez le code ».
Bon… et alors ?
Selon Jarred Sumner, les avantages de Rust sont évidents dans la préversion. Allègement des binaires, consommation de mémoire réduite, résolution de nombreux bugs liés à la mémoire existants dans la version actuelle 1.3.14… Sur le plan des performances, les gains sont plus mesurés, avec 2 à 5 % en moyenne selon les scénarios.
Jarred Sumner veut pour preuve de sa réussite que la version 2.1.181 de Claude Code, publiée le 17 juin, utilise la version de Bun réécrite en Rust. Cela signifie-t-il que tout est parfait et que tout le monde devrait se lancer dans le même type d’opération ? Pas du tout.
Le billet de Bun est assez transparent sur les défis restants. Bun 1.4.0 sera bien la première version intégralement en Rust et des corrections continueront pendant toute la phase de test. Mais plusieurs éléments méritent d’être soulignés, dont le caractère même du billet : intéressant dans le retour d’expérience qu’il rapporte, mais qui reste une communication d’entreprise puisque Jarred Sumner travaille pour Anthropic et a pu bénéficier de Fable 5 quand presque plus personne n’y avait droit en mai.
On pourrait souligner également que des régressions peuvent apparaître avant et après la version finale. 19 ont ainsi été détectées et corrigées, mais la suite de tests, malgré le grand nombre d’exercices (plus de 60 000) a été écrite avant la réécriture de Bun, son périmètre n’est donc pas optimal. En outre, Jarred Sumner ne dit rien des bugs qui ont pu échapper aux instances adversariales bâties sur Claude et qui ont pu être détectés avec d’autres méthodes. Faisons remarquer aussi que les 165 000 dollars présentés comme facture de la migration peuvent être trompeurs : ils n’incluent pas le lourd temps humain de supervision pendant les 11 jours, ni l’infrastructure de calcul, ni le travail de fusion et post-fusion du code.
Ce cas ne peut pas être généralisé. Même si la réécriture de Bun doit s’avérer une franche réussite, elle le devra en bonne partie à la suite de tests indépendants du langage d’implémentation, qui a permis la validation des opérations menées par les agents, en comparant les situations avant et après.
Le résultat ne sera pas non plus un code Rust « idiomatique ». Il sera loin d’être parfait et de répondre aux standards de sécurité auxquels un code dans ce langage peut prétendre, mais le billet est transparent sur la question. Sumner indique que l’objectif était bien la parité comportementale. Le code safe et profitant vraiment de tous les avantages de Rust viendra plus tard, lors de « refactorings ultérieurs ». Il ne donne pas plus de précisions.
Enfin, il ne s’agit clairement pas d’un scénario « lancer et oublier ». Le cas présenté est celui d’un ingénieur senior utilisant des agents comme amplificateurs, pas en remplacement de son expertise. Lancer Fable 5 et lui demander simplement de réécrire du code en Rust n’a aucune chance de donner un résultat approchant.
Le projet Bun disposait d’ailleurs de conditions favorables à la base, comme sa structure pensée pour la portabilité, l’absence de dépendance à des paradigmes très spécifiques au C/C++, ou même le fait que Jarred Sumner est l’auteur principal, travaillant seul sur une bonne partie des tâches.
Un projet C/C++ ancien, avec de multiples contributeurs, des conventions peu claires, des dépendances à des extensions spécifiques de compilateur, ou surtout une suite de tests incomplète ou couplée au langage source, rencontrerait des difficultés bien plus importantes avec cette même méthode. Et les coûts s’envoleraient d’autant.