veilletech.fr
21 août Feed du jour
#02 BUN Article

Bun 1.4 : cinq fois moins de CPU au repos

Moins de dépendances à jour soi-même, plus de confiance à accorder au runtime.

Bun 1.4 est la première version stable dont le cœur est écrit en Rust. L'annonce s'appuie sur des mesures : consommation processeur divisée par cinq au repos, mémoire d'un serveur Fastify ramenée de 233 à 120 Mo, démarrage deux fois plus rapide sur Linux. Quinze dépendances npm sont désormais intégrées au binaire.

3 min de lecturevidéo 1:22
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Les chiffres
  3. Ce qui entre dans le binaire
  4. Ce que ça change
  5. À retenir

Ce qui se passe

Bun publie sa version 1.4. C'est la première version stable dont le cœur est écrit en Rust et non plus en Zig — un chantier qui inquiétait une partie de la communauté, faute de version stable pendant plusieurs mois.

L'annonce répond en mesures. Elle revendique 2 900 correctifs et 1 517 tests supplémentaires de la suite Node.js depuis la 1.3.

Une précision de lecture : le billet couvre tout ce qui a été livré depuis la 1.3.0. Plusieurs API présentées comme nouvelles sont en réalité arrivées dans les versions intermédiaires — Bun.WebView en 1.3.12, Bun.Image en 1.3.14.

Les chiffres

Le travail de fond porte sur les allocateurs. Jusqu'ici Bun en faisait tourner deux : libpas, celui de JavaScriptCore, et mimalloc. JavaScriptCore utilise désormais mimalloc lui aussi, étendu avec un nettoyage partiel des pages et un fil de récupération qui libère la mémoire pendant que JavaScript est inactif.

Processeur. Sur un « hello world », l'usage au repos est divisé par cinq. Le chiffre le plus parlant vient d'une application réelle : pour Claude Code, construit sur Bun, l'usage processeur en production a été divisé par deux — p99 de 24 % à 10 %, p50 de 5,8 % à 2,5 %.

Mémoire. Les serveurs HTTP gagnent entre 13 et 48 %. Sous une charge d'un million de requêtes, Fastify passe de 233 à 120 Mo — sous les 156 Mo de Node.js 26. En rendu serveur Next.js, un motif App Router qui fuyait sans limite en 1.3 se stabilise à 238 Mo sur 4 000 pages, contre 410 Mo pour Node.

Démarrage. Sur Linux, hello.js passe de 10,9 à 5,1 ms. Sur Windows, de 39 à 15,5 ms. Le binaire maigrit jusqu'à 17 %.

Ce qui entre dans le binaire

Le second axe de la version, c'est l'absorption de quinze dépendances npm directement dans le runtime :

Côté outillage : bun run --parallel remplace npm-run-all et concurrently, avec sortie préfixée par nom de script, correspondance par glob et diffusion sur les espaces de travail via --filter. S'ajoutent bun test --parallel, bun audit fix, bun dedupe et bun prune.

Sur la compatibilité Node, node:http, node:fs, node:cluster, node:vm et node:stream passent 97 % des tests officiels ; node:events et node:sqlite, 100 %.

Ce que ça change

Le bénéfice est réel, la contrepartie mérite d'être posée. Faire entrer quinze dépendances dans le runtime, c'est déléguer à l'équipe Bun la responsabilité de leurs correctifs de sécurité. On gagne un package.json plus court et une surface d'installation réduite ; on perd la main sur le rythme des mises à jour.

Aucune rupture majeure n'est annoncée. La marche à suivre est classique : bun upgrade sur une branche, mesure de votre propre empreinte mémoire sous charge, puis inventaire des outils que le runtime rend superflus.

Source : bun.com — bun.com/blog/bun-v1.4

Fiche de veille rédigée à partir de l'article original. Le contenu ci-dessus est une synthèse personnelle, pas une reproduction.