Bun présente une réécriture intégrale en Rust, réalisée en 11 jours avec Fable 5
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.
Bun est un environnement d’exécution pour le langage JavaScript et un gestionnaire de paquets, similaire à Node.js, mais conçu pour être plus performant. Développé initialement en Zig (un langage de programmation moderne), il est open source et sous licence MIT. Sa première version stable est sortie en septembre 2023. Bun est notamment utilisé par Anthropic pour certains composants de son outil Claude Code. En mai 2025, Bun a annoncé avoir réécrit intégralement son code en Rust, un autre langage de programmation, en seulement 11 jours. Cette migration a été réalisée entre le 3 et le 14 mai 2025.
La version initiale de Bun, écrite en Zig, présentait des bugs récurrents liés à la gestion manuelle de la mémoire. Parmi ces problèmes figuraient des use-after-free (utilisation d’une zone mémoire déjà libérée), des double-free (libération deux fois de la même zone) et des fuites mémoire dans des modules critiques comme node:zlib, node:http2, UDPSocket, crypto.scrypt ou TLS. Le langage Zig, comme le C, ne gère pas automatiquement la mémoire : il faut utiliser explicitement des instructions comme defer pour libérer les ressources. Ces erreurs humaines étaient quasi inévitables à grande échelle, selon Jarred Summer, responsable du développement de Bun. Ces bugs posaient des risques majeurs pour la stabilité et la sécurité du logiciel.
Jarred Summer a choisi de migrer Bun vers Rust pour résoudre les problèmes de gestion mémoire. Rust est un langage réputé pour sa sécurité mémoire : il détecte automatiquement les erreurs de ce type à la compilation, réduisant ainsi les risques de bugs en production. Cependant, environ 4 % du code Rust de Bun reste en unsafe (zones non sécurisées), soit 13 000 mots-clés unsafe sur 27 000 lignes, car Bun intègre encore des dépendances en C ou C++ comme JavaScriptCore, uWebSockets ou BoringSSL. Ces dépendances ne peuvent pas être entièrement réécrites en Rust safe pour l’instant.
La réécriture complète du code de Bun en Rust a été réalisée en 11 jours grâce à l’utilisation de l’agent Claude Fable 5, un outil d’intelligence artificielle développé par Anthropic. Summer a opté pour une réécriture totale plutôt qu’incrémentale, s’appuyant sur une suite de tests indépendante du langage pour valider les changements. Deux instances de Claude ont effectué une revue adversariale (vérification croisée) pour identifier les bugs. La phase de génération brute a produit 5,9 milliards de tokens d’entrée non mis en cache et 690 millions de tokens de sortie, pour un coût estimé à 165 000 €. Cependant, cette performance ne reflète pas la qualité du code final, qui nécessitait une supervision humaine constante.
La version pré-Rust de Bun montre des améliorations : réduction de la taille des binaires, baisse de la consommation mémoire et résolution de nombreux bugs liés à la mémoire. Les gains de performance sont modestes, entre 2 % et 5 % selon les scénarios. La version 2.1.18 de Claude Code, publiée le 17 juin 2025, utilise déjà cette nouvelle version de Bun. Cependant, des défis persistent : 19 régressions ont été détectées et corrigées, et la suite de tests, bien que vaste (plus de 60 000 exercices), n’a pas été conçue pour valider une réécriture en Rust. Le code généré n’est pas encore idiomatique (respectant les bonnes pratiques de Rust) et nécessite des refontes ultérieures pour exploiter pleinement les avantages du langage.
Cette migration n’est pas reproductible à l’identique pour tous les projets. Bun bénéficiait de conditions favorables : une structure portable, l’absence de dépendances à des paradigmes spécifiques au C/C++, et une équipe réduite avec Jarred Summer comme principal contributeur. Un projet plus ancien, avec de multiples contributeurs et des dépendances complexes, rencontrerait des difficultés bien plus importantes. Le coût de 165 000 € ne couvre que l’utilisation de l’API de Claude Fable 5 et n’inclut pas la supervision humaine, l’infrastructure technique ni les corrections post-migration. Summer souligne que cette opération a été menée par un ingénieur senior utilisant les agents comme outils d’amplification, et non comme remplaçants de l’expertise humaine.
Bun 1.4.0 sera la première version entièrement écrite en Rust, mais des corrections supplémentaires sont prévues. Jarred Summer insiste sur le fait que cette migration n’est pas un modèle à suivre aveuglément. Elle illustre plutôt une utilisation avancée des agents d’IA pour accélérer des tâches complexes, sous supervision humaine constante. Le code *safe* et optimisé selon les standards de Rust viendra plus tard, lors de refontes ultérieures. Summer reste transparent sur les limites du projet, soulignant que les avantages de Rust sont évidents, mais que la réussite dépendra des corrections et améliorations continues.

