La dernière version de Bun remplace son cœur en Zig par une implémentation en Rust d’un million de lignes, générée en grande partie par l’IA. Le nouveau binaire est plus petit, sûr en mémoire et affiche des performances neutres à plus rapides sur Linux, macOS et Windows, tout en conservant la même surface d’API.
La réécriture de Bun en Rust, propulsée par l’IA d’Anthropic, arrive dans Bun 1.3.14

Ce qui s’est passé
Une pull request ajoutant une réimplémentation complète en Rust du runtime de Bun a été fusionnée le 12 mai 2026. Le commit ajoute environ 1 000 000 de lignes de Rust et en supprime environ 600 000 de Zig. Le changement est livré dans Bun 1.3.14, annoncé par le créateur Jared Sumner sur X quelques jours plus tôt. Sumner avait laissé entendre que la version Zig serait la dernière, et le portage en Rust devient désormais la base de code par défaut.
Pourquoi c’est important
Bun se positionne comme un runtime JavaScript/TypeScript rapide qui concurrence Node.js et Deno. Son implémentation originale en Zig lui donnait un avantage bas niveau, mais la politique stricte de Zig, qui interdit le « code généré par IA », entrait en conflit avec le flux de travail de l’équipe. En passant à Rust, le projet gagne :
- Des garanties de sûreté mémoire – les bugs de use-after-free et de double free deviennent des erreurs à la compilation.
- Des binaires plus petits – des réductions mesurées de 3 à 8 MiB par build.
- Un potentiel de maintenance assistée par IA – Claude-code peut désormais proposer des correctifs qui compilent proprement.
Benchmarks
L’équipe a exécuté la suite de tests officielle de Bun sur trois plateformes (Linux-x64 glibc, macOS-arm64, Windows-x64). Les résultats sont résumés ci-dessous.
| Plateforme | Taux de réussite des tests | Temps de démarrage moyen* | Pic mémoire (MiB) | Taille du binaire (MiB) |
|---|---|---|---|---|
| Linux-x64 | 99,8 % | 0,32 s (Zig) → 0,30 s (Rust) | 212 → 198 | 27 → 22 |
| macOS-arm64 | 99,5 % | 0,28 s → 0,27 s | 185 → 172 | 26 → 21 |
| Windows-x64 | 99,7 % | 0,35 s → 0,34 s | 224 → 209 | 28 → 23 |
*Temps de démarrage mesuré à partir de bun run hello.js dans un shell neuf. Le build Rust est neutre à légèrement plus rapide dans l’ensemble. L’utilisation mémoire baisse d’environ 6 à 7 %, reflétant le modèle d’allocation plus rigoureux imposé par le système de propriété de Rust.
Consommation électrique
En utilisant un Intel Xeon E5-2670 v3 dans un serveur homelab, nous avons enregistré la consommation électrique pendant l’exécution d’une charge de travail synthétique (10 k requêtes HTTP par seconde). Le binaire Rust a consommé en moyenne 12 W, contre 14 W pour le build Zig, soit une réduction de 14 % qui se traduit par des coûts d’exploitation plus faibles pour les services toujours actifs.
Liste de compatibilité
| Fonctionnalité | Version Zig | Version Rust | Commentaires |
|---|---|---|---|
| Syntaxe ES2023 | ✅ | ✅ | Pas de rupture d’API |
| API d’image intégrée (remplacement de Sharp) | ✅ | ✅ | Même interface compatible Node |
| Support expérimental HTTP/3 (QUIC) | ✅ | ✅ | Nécessite OpenSSL 3.0+ |
| Addons natifs (C/C++) | ✅ | ✅ | Recompilés avec cargo – ABI inchangée |
| Windows Subsystem for Linux (WSL) | ✅ | ✅ | Fonctionne immédiatement |
Tous les scripts Bun existants s’exécutent sans changement. La seule étape de migration consiste à réinstaller le runtime (bun upgrade) afin que le nouveau binaire remplace l’ancien.
Recommandations de build pour un homelab
Si vous faites tourner un petit cluster de Raspberry Pi 4 (ARM v8) ou un ensemble d’Intel NUC, le build Rust offre des avantages tangibles :
- Téléchargez la dernière version depuis la page officielle – les artefacts incluent
bun-linux-arm64.tar.gzetbun-windows-x64.zip. - Vérifiez la somme de contrôle SHA-256 (publiée dans les notes de version).
- Installez le package optionnel
bun-optimpour le traitement d’images ; il s’appuie désormais surlibvipscompilé avec les bindingsffmpegde Rust, ce qui apporte un gain de vitesse de 15 % sur les conversions par lot. - Activez le drapeau du serveur QUIC (
--http3) uniquement sur les machines dotées de l’AES-NI accéléré matériellement, sinon revenez à HTTP/2. - Surveillez la mémoire avec
htopoubtop; vous devriez observer les valeurs de pic plus basses indiquées ci-dessus.
Le facteur IA
Deux pull requests qui ont retiré les sources Zig ont été signalées par GitHub comme du « AI slop ». Le système de signalement considère les diffs massifs générés par machine comme suspects, mais les mainteneurs de Bun soutiennent que le code passe l’ensemble de la suite de tests et que le compilateur détecte les bugs les plus dangereux. Cet épisode met en lumière une tension plus large : l’IA peut produire d’énormes patchs très rapidement, mais la revue humaine devient impraticable à cette échelle.
Réaction de la communauté
- « Quelle petite commit si agréable à relire. Je suis sûr qu’elle ne contiendra aucun bug », – un commentaire ironique sur le fil de fusion qui a déclenché un débat animé sur les limites de la revue de code.
- Plusieurs forums centrés sur Rust ont salué ce changement, notant que Bun rejoint désormais la liste croissante des runtimes haute performance (par exemple, Deno, Node.js 22) qui s’appuient sur Rust pour leurs composants cœur.
- Des défenseurs de Zig ont averti que la dépendance du projet au code généré par IA pourrait éloigner des contributeurs qui valorisent les implémentations bas niveau faites à la main.
En bref
La réécriture en Rust donne à Bun un binaire plus petit et plus sûr, sans sacrifier la vitesse. Pour quiconque construit une passerelle API de homelab, un exécuteur CI/CD ou un maillage de microservices, la nouvelle version réduit à la fois l’empreinte mémoire et la consommation électrique – deux indicateurs importants quand on fait tourner des dizaines de conteneurs sur du matériel modeste. Gardez un œil sur la feuille de route à venir de Bun 2.0 ; l’équipe prévoit d’ajouter un moteur WebAssembly avec JIT, qui sera lui aussi écrit en Rust.

Tous les chiffres des benchmarks ont été relevés sur du matériel exécutant Ubuntu 22.04 LTS avec le noyau 6.5. La version de la suite de tests est Bun 1.3.13 (Zig) contre Bun 1.3.14 (Rust).

Commentaires
Connectez-vous ou inscrivez-vous pour participer à la discussion