Bun.sh

Grégory Houllier

Bun.sh

Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one

Bun est un nouvel arrivant dans l'écosystem JavaScript, il s'agit d'une chaine d'outil "tout-en-un" (runtime, bundler, package manager, ...)

Contrairement à Deno Bun assume complètement l'historique de Node.js, il supporte les node_modules, ainsi que de CommonJS.

Son créateur Jarred Sumner est particulièrement attentif aux performances.

Différences sous le capot

  • Bun est basé sur JSCore au lieu de v8
  • Bun est écris en Zig au lieu de Rust et C++

Différences visible

  • Bun est compatible avec le système de résolution des node_modules
  • Bun supporte la syntaxe TypeScript nativement, par contre il ne typecheck pas votre code, cela reste de la responsabilité de tsc

🐣 Premières impressions

J'ai joué avec Bun dans le cadre de fp-nutshell un projet qui implémente certains pattern de programmation fonctionnelle.

🏎 Rapidité

Bun est vraiment rapide, l'installation des dépendances ne prend que quelques secondes, de même pour l'éxécution des tests.

🔋 Efficacité

La philosophie de Bun est d'offrir un outil tout-en-un, pas besoin d'installer Jest/Vitest, ESBuild/SWC.

bun install

Bun Install

bun test

Bun Test

Limitations

bun --bun n'est pas encore compatible avec toute les modules npm mais le développement de Bun avance vite et la v1.0 devrait arriver d'ici quelques semaines, reste a espérer que cela sera résolu lors du passage en version stable.

Conclusion

Bun a le potentiel de changer la donne dans l'écosystème JavaScript.

Contrairement à Deno qui a été créé pour résoudre les problèmes de conception de NodeJS, Bun a une approche moins clivante qui embrasse l'historique de NodeJS.