Sortie de Bun 1.3
(bun.sh)- Bun 1.3 est une version majeure où l’environnement d’exécution JavaScript full-stack prenant en charge à la fois le développement frontend et backend franchit une nouvelle étape
- Des fonctionnalités clés ont été intégrées, comme un serveur de développement frontend intégré avec bundle React et CSS, ainsi que des clients MySQL·PostgreSQL·SQLite·Redis
- La prise en charge de la compilation en exécutable unique via
bun build, ainsi que de la signature de code et de la compilation croisée, améliore la facilité de déploiement - Le gestionnaire de paquets introduit des fonctions adaptées aux grands monorepos, comme les installations isolées (isolated installs), l’API de scanner de sécurité et le catalogue de dépendances (catalog)
- Des améliorations majeures ont été apportées à presque tous les domaines — test runner, Web API, sécurité, compatibilité Node.js, performances — faisant de Bun une « plateforme d’exécution complète »
Intégration d’un runtime full-stack
- Bun 1.3 intègre à
Bun.serve()des fonctions de développement full-stack comme l’exécution HTML, le routage, le hot reload et WebSocket- Prise en charge de React Fast Refresh et du HMR natif
- Le backend et le serveur frontend sont unifiés dans un seul processus, ce qui résout fondamentalement les problèmes de CORS
- Avec
bun build --compile, il est possible de regrouper frontend et backend dans un exécutable unique
Prise en charge des bases de données et de Redis
- Bun.SQL prend en charge MySQL·MariaDB·PostgreSQL·SQLite via une API unique
- Le helper
sql.arraypermet de gérer facilement les types tableau de PostgreSQL - Améliorations fines : connexions par socket de domaine Unix, protocole de requête simple, gestion des valeurs null, etc.
- Le helper
- Ajout d’un client Redis intégré, avec jusqu’à 7,9 fois plus de performances qu’ioredis et une prise en charge complète de Pub/Sub
Bundler et fonctions de build
- L’API
Bun.build()permet de générer des exécutables depuis le code - Prise en charge de la signature de code (macOS·Windows), de la compilation croisée (Linux/macOS/Windows) et de la configuration des métadonnées
- Un minifier plus intelligent supprime le code inutilisé et prend en charge les options de configuration JSX ainsi que les motifs Glob
Extension des fonctions de gestion de paquets
- Les isolated installs sont appliquées par défaut, chaque workspace n’ayant accès qu’à ses propres dépendances
- La fonction Catalog permet de gérer centralement les versions de dépendances dans un monorepo
- L’API de scanner de sécurité et minimumReleaseAge renforcent la défense contre les attaques sur la supply chain
- Des outils de gestion au niveau de npm·pnpm sont fournis, comme
bun why,bun update --interactive,bun info,bun audit
Améliorations du test et du débogage
bun testajoute l’intégration à VS Code Test Explorer, les tests parallèles (test.concurrent), l’exécution aléatoire et les tests de type (expectTypeOf)- Prise en charge des chaînes
.failing,.serial,.eachet préservation automatique de l’indentation dans les snapshots - Blocage de
test.onlyen environnement CI et meilleure cohérence de l’ordre des tests
Renforcement des Web API et des standards du runtime
- Parsing/sérialisation YAML intégrés, avec import direct possible des fichiers
.yaml - L’API
request.cookiesprend en charge la gestion automatique des cookies - Prise en charge de helpers de flux comme ReadableStream .text()/.json(), de la compression Zstandard et du chargement en streaming de WebAssembly
- L’implémentation de DisposableStack/AsyncDisposableStack simplifie la libération des ressources
Sécurité et fonctions système
Bun.secretspermet d’utiliser les stockages sécurisés du système d’exploitation (Keychain, etc.)Bun.CSRFfournit une API de génération et de validation de jetons CSRF- Le module crypto est 400 fois plus performant, avec des améliorations pour Diffie-Hellman, HKDF et les calculs sur les nombres premiers
Compatibilité Node.js améliorée
- Plus de 800 tests Node.js supplémentaires sont désormais réussis, avec une prise en charge fortement étendue de
node:test,node:vm,worker_threads,fs,http2 - Prise en charge complète de la plupart des modules cœur, dont require.extensions, process.binding(), contrôle des native addons, perf_hooks, tls, cluster
- Compatibilité N-API de plus de 98 %, avec une identification du runtime au niveau de Node.js 24.3.0
Améliorations de l’expérience développeur
- Modification de la configuration TypeScript par défaut (
"module": "Preserve") - Variable d’environnement
BUN_OPTIONS,--console-depth,--user-agent: davantage de contrôle sur le runtime - Prise en charge des scripts de preload (
BUN_INSPECT_PRELOAD) et de SQL Preconnect - Amélioration de
bunxpermettant aussi d’exécuter des paquets dont le nom diffère de celui du binaire
Performances et stabilité
- Réduction de l’utilisation CPU au repos, optimisation du GC, 10 à 30 % de mémoire en moins, 60 % de gain sur la vitesse de build
postMessagejusqu’à 500 fois plus rapide,bun install2,5 fois plus rapide,Array.includes2,8 fois plus rapide- Des optimisations au niveau WebKit·Zig accélèrent l’ensemble du runtime
- Des centaines de corrections de bugs et de fuites mémoire résolues améliorent fortement la stabilité
Changements majeurs
- Modification de la structure de types de
Bun.serve()et renommage destaticenroutes - Le mode d’appel du client SQL passe d’un style fonctionnel à des tagged templates
- Sous Linux, le signal GC est remplacé par SIGPWR
- La version Node.js affichée passe de 22.x à 24.3.0
Bun 1.3 marque un tournant, dépassant le simple runtime pour s’imposer comme une « plateforme intégrée couvrant Node·Deno·Vite·pnpm »
5 commentaires
C’était bref, mais pour l’avoir essayé dès le début, je trouve que les progrès sont énormes, au point de me donner envie de le réessayer une fois de plus haha
J’espère que ça évoluera bien.
Je vois qu’il y avait un tel projet !!
J’aime le fait que l’interface SQL ait été unifiée.
Il doit y avoir une raison pour laquelle Vite ne l’a pas intégré, mais je serais curieux d’avoir des retours d’expérience sur Bun en usage réel.