La PR de réécriture de Bun en Rust a été fusionnée
(github.com/oven-sh)- La PR #30412 apporte une modification de réécriture de Bun en Rust, fusionnée de la branche
claude/phase-a-portversmainle 14 mai 2026 - L’ampleur du changement est indiquée comme 6 755 commits, 2 188 fichiers, et
+1,009,257/-4,024lignes - Jarred-Sumner a indiqué qu’un article de blog détaillant le sujet serait publié prochainement
- Il est expliqué que cette modification fait passer la suite de tests existante de Bun sur toutes les plateformes, et qu’elle a corrigé plusieurs fuites mémoire et tests instables
- La taille du binaire a diminué de 3 à 8 Mo, et les benchmarks sont présentés comme neutres ou meilleurs en termes de performances
- La raison la plus importante avancée est que les bugs mémoire, qui ont coûté à l’équipe d’importants efforts de développement et de débogage pendant des années, peuvent désormais être détectés et évités grâce aux outils d’assistance du compilateur
- Il est précisé que la base de code reste globalement la même, et que l’architecture et les structures de données ont également été conservées
- Bun continue d’utiliser peu de bibliothèques tierces, et il est explicitement précisé que async Rust n’est pas utilisé
- Les utilisateurs peuvent tester ce changement avec
bun upgrade --canary - Jarred-Sumner a demandé de signaler les problèmes en ouvrant une issue, et a indiqué qu’il pourrait verrouiller le fil si les échanges s’échauffent
- Des travaux d’optimisation restent encore à faire avant l’intégration dans la version non-canary
- Un travail de nettoyage reste également à faire, et sera mené dans une série de PR de suivi
4 commentaires
Waouh, une PR d’un million de lignes mergée. Ils passent carrément de Zig à Rust en une seule fois.
Il disait qu’il ne savait pas si ça allait être mergé ou pas~~ et une semaine plus tard, ils remplacent d’un coup le langage d’un code qui fonctionnait déjà bien haha
J’ai l’impression qu’il se passe quelque chose de monumental grâce au codage assisté par IA.
Sérieux ? Ils disaient que c'était juste pour tester et qu'ils risquaient fort de ne pas l'utiliser.
Comme Zig ne le fait pas, ils passent direct à Rust avec un culot impressionnant mdr
Commentaires sur Hacker News
Quand l’annonce dit que la réécriture a pris une semaine, on se demande combien de temps a été nécessaire pour préparer ce fichier d’instructions très détaillé qui mappe les idiomes Zig vers les idiomes Rust : https://github.com/oven-sh/bun/commit/46d3bc29f270fa881dd573...
En plus, si on regarde les sections
Pointers & ownershipetCollections, la base de code de Bun utilisait déjà des types internes de smart pointers préparés pour correspondre en 1:1 à leurs équivalents Rust, et le crate Rustbun_collectionsexistait déjàCette réécriture semble avoir été préparée de longue date, et ressemble à quelque chose que l’équipe Bun a proposé pendant les négociations d’acquisition par Anthropic
Les montants en jeu sont tellement énormes qu’il y a clairement une incitation à infiltrer la communauté avec des astroturfers marketing, et certains tombent simplement dans la logique de camp
Maintenant qu’Anthropic possède Bun, ils ont aussi tout intérêt à faire paraître ce travail plus facile qu’il ne l’était réellement
L’ampleur de la sortie donne l’impression d’un effet multiplicateur
Je me demande en revanche combien de connaissance implicite a été nécessaire pour élaborer ces règles, et combien de fois ce fichier a été amélioré de manière itérative
Par exemple, j’aimerais savoir quelle part de ces règles provient de cas d’échec rencontrés au fil des itérations de traduction
using internal smart pointer types that map 1-to-1 to Rust equivalents, mais les smart pointers n’ont pas été inventés par RustSi tu écris du code dans un autre langage avec des pointeurs, tu modélises déjà mentalement les mêmes types
Et c’est faux de dire que le crate Rust
bun_collectionsexistait déjàIl ne s’agit que d’une partie du PR de la base de code, pas de quelque chose qui existait auparavant
Pour réduire le scepticisme et encore mieux alimenter l’ambiance pré-IPO, il serait pourtant très facile de publier dans un dépôt séparé le travail caché nécessaire pour faire avancer l’IA, afin que tout le monde puisse reproduire le résultat
Après tout, ce que les clients veulent obtenir, c’est bien 1 million de lignes de code utilisables en “7 jours”, non ?
Tout le monde pourrait essayer de le reproduire dans son propre workflow, et les métriques d’usage d’Anthropic grimperaient aussi
Si c’était vraiment un résultat formidable, j’aurais pensé qu’ils commenceraient par un billet de blog avec lien et consignes
Cela dit, il est possible qu’un billet soit en train d’être rédigé pendant que j’écris, et que cela me donne tort
C’est ça le cœur de la théorie du complot ?
bun_collectionsnon plus n’a pas l’air beaucoup plus ancien que le guide de portage+1009257 -4024: Bun dépasse désormais 1 million de lignes de code RustOn se rapproche de la taille du compilateur Rust lui-même
Cela dit, BunJS est essentiellement un wrapper d’interpréteur JavaScript et une réimplémentation de bibliothèques NodeJS, donc assez proche d’un wrapper de la bibliothèque standard Rust
BunJS devient un peu le canari de la gestion de la complexité logicielle à l’ère des LLM
mostly a JavaScript interpreter wrappern’est pas exactBun est un transpileur (parseur) JavaScript et CSS batteries incluses, un minifier, un bundler, un gestionnaire de paquets façon npm, un test runner façon Jest, et il fournit aussi des API runtime intégrées comme des clients Postgres, MySQL et Redis
Il est donc naturel que le volume de code soit énorme
Bun utilise JavaScriptCore comme moteur JS, donc Bun lui-même ne fait pas, ou en tout cas ne devrait pas faire, le parsing JavaScript, l’interprétation ni le JIT
Édition : j’avais mal lu. Comme il était écrit “JavaScript interpreter wrapper”, c’est bien formulé
+au début ou d’un autre facteur qui fait détecter ça comme un numéro de téléphone sur iOS, mais sur mobile la variation du nombre de lignes est soulignée et on peut taper dessus pour appelerSi c’est seulement à cause de la taille du diff, c’est assez drôle
Il n’y a rien d’étrange à ce que la réécriture aboutisse à un nombre de lignes comparable
$ rg 'unsafe [{]' src/ | wc -ldonne 10428, et$ rg 'unsafe [{]' src/ -l | wc -ldonne 736Par langage, on a : Rust 1443 fichiers, 929213 lignes ; Zig 1298 fichiers, 711112 lignes ; TypeScript 2604 fichiers, 654684 lignes ; JavaScript 4370 fichiers, 364928 lignes ; C 111 fichiers, 305123 lignes ; C++ 586 fichiers, 262475 lignes ; C Header 779 fichiers, 100979 lignes
Comment recherche-t-on le code dangereux en Zig ?
Ou faut-il simplement partir du principe qu’il est partout ?
unsafe, ça ne ressemble pas à une bonne réécritureSi presque la moitié du code reste unsafe, quel est alors l’intérêt de le réécrire en Rust ?
Ce qu’il y a à la maison :
10428On est encore en train d’écrire le billet de blog sur le sujet, et on partagera plus de détails
Si vous voulez du contexte, parcourez la liste de correctifs dans les notes de version de Bun v1.3.14 et des versions précédentes
Rust ne corrigera pas tout cela. Les fuites dues à des références conservées trop longtemps, ou tous les problèmes de réentrance à travers les frontières JS, restent de notre responsabilité
Mais une bonne partie de cette liste concerne des use-after-free, des double-free, ou des oublis de libération sur des chemins d’erreur, et ceux-là deviennent soit des erreurs de compilation, soit du nettoyage automatique
I work on Bun and this is my branchThis whole thread is an overreaction. 302 comments about code that does not work. We haven’t committed to rewriting. There’s a very high chance all this code gets thrown out completely.Ce n’était peut-être pas une surréaction, finalement ?
[0]: https://news.ycombinator.com/item?id=48019226
Je me demande si vous comptez exécuter côte à côte les binaires Zig et Rust sur un large éventail d’applications réelles, ou si possible en shadow execution en production, afin d’éliminer les bugs
Pouvez-vous donner un ordre de grandeur ?
J’aimerais aussi connaître le plan concret pour publier cette version sans casser les workflows des utilisateurs
Il y a environ 9 jours, Jarred écrivait qu’il n’était pas du tout certain que cela soit fusionné et que tout ça relevait de la surréaction
C’est ironique
Imaginez le chaos si Linus disait qu’il n’allait pas réécrire le noyau Linux, puis qu’un beau matin il fusionnait une réécriture Rust assistée par machine de l’ensemble du code
Il fallait bien justifier les coûts en tokens engagés
Waouh, ça va être fascinant à suivre
Il n’y a aucune chance que ce code ait été relu, mais peut-être sommes-nous désormais entrés dans une ère post-humaine où l’on peut faire confiance aux modèles pour écrire et relire du code
C’est comme Gastown, mais dans un projet bien plus connu
Je suis curieux de voir comment ce projet va pouvoir ajouter de nouvelles fonctionnalités à l’avenir, voire s’il pourra encore en ajouter
Est-ce que quelqu’un sait exactement comment Anthropic utilise Bun ?
Est-ce une partie de Claude Code ?
Utiliser Bun m’inquiète pas mal à l’avenir, mais je ne sais pas dans quelle mesure cette inquiétude s’applique aussi à l’usage de Claude
Si on ne peut pas faire confiance à une suite de tests pour détecter une traduction automatique entre langages, alors on ne devrait de toute façon pas lui faire confiance du tout :)
Je suis en fait enthousiaste à l’idée d’expérimenter la traduction automatique, mais j’ai peur que cela génère beaucoup de problèmes de rétrocompatibilité
J’ai commencé à regarder les commits, et grosso modo ils résolvent les problèmes de “tests qui ne passent pas” en modifiant les tests eux-mêmes
Le vrai travail pour faire en sorte que ça fonctionne correctement sur des programmes déjà déployés ne fait que commencer
Le seul point rassurant, c’est que la communauté JS côté serveur semble déjà habituée, pour une raison ou une autre, aux ruptures fréquentes
Mais si ça fonctionne réellement sans gros problème, ce sera assez stupéfiant
GPT/Codex est plus honnête sur ce point
Je suis sceptique sur l’ensemble de cette réécriture, et Jarred Sumner a une audience internet si énorme que cela donne une impression de publicité
Formidable ! Il suffit d’ajouter arbitrairement
sleep(1)dans les tests. Ne vous inquiétez pas, tout ira bien !Les quelques projets dans lesquels j’utilise Bun vont être migrés vers autre chose
Je n’ai pas confiance dans une gouvernance qui autorise des changements aussi téméraires
Il est bien conçu à la base, donc il n’a même pas besoin d’être réécrit
D’un côté, regarder comment se passera ce baptême du feu sera intéressant, et à long terme j’ai quand même l’impression que les problèmes finiront par être résolus
Il y a un fil très instructif. Il date d’il y a une semaine, quand Jarred se désengageait encore une fois de la décision de fusion, tandis qu’une foule de fantassins attaquait les gens qui prédisaient que cela serait bientôt fusionné :
https://news.ycombinator.com/item?id=48073680
Avec le recul, ça n’a pas très bien tenu, n’est-ce pas ?
Si ça se passe ne serait-ce qu’un peu mal, les moqueries sur le dealer défoncé à sa propre marchandise vont être interminables et sinistres
Tu as lu le papier Mythos ? L’anthropomorphisme y est vraiment intense
C’est peut-être juste du buzz à bas coût, mais s’ils croient vraiment que les LLM sont conscients… wow