- Le REPL a été entièrement réécrit en Zig, offrant un lancement instantané et une interface terminal riche, avec de nombreuses fonctions comme la copie dans le presse-papiers, l’autocomplétion par tabulation et la sauvegarde de l’historique
- La commande de compilation vers une cible navigateur permet de générer un unique fichier HTML avec tout en ligne, exécutable même sans serveur
- Les décorateurs ES standard TC39 sont entièrement pris en charge, ce qui permet d’utiliser les syntaxes récentes comme
accessor, Symbol.metadata et addInitializer
- De nombreuses améliorations de plateforme et de performances sont incluses, comme la prise en charge de Windows ARM64, l’optimisation des barrel imports, les options de nouvelle tentative pour les tests et un moteur JavaScriptCore plus performant
- Dans l’ensemble, cette version améliore nettement l’expérience développeur, les performances et la compatibilité de Bun
Nouveau REPL
- Le REPL a été remplacé par une implémentation native basée sur Zig, exécutable instantanément sans dépendance à des packages npm externes
- Prise en charge de la coloration syntaxique, des raccourcis Emacs, de l’autocomplétion, de la sauvegarde de l’historique et de la saisie multiligne
- Fournit des commandes intégrées comme
.copy, .help, .exit et .editor
- Conserve les déclarations
const/let et prend en charge à la fois le top-level await et import/require
--compile --target=browser
bun build --compile --target=browser génère un HTML avec JavaScript, CSS et ressources intégrés en ligne
- Les balises
<script src="..."> et <link rel="stylesheet"> sont converties respectivement en code inline
- Exécutable même dans un environnement
file://, sans contrainte CORS
- Prise en charge de TypeScript, JSX, React, CSS, ESM et CJS
Décorateurs ES standard TC39
- Prise en charge complète des décorateurs standard Stage-3
- Implémentation des spécifications récentes, dont le mot-clé
accessor, Symbol.metadata et ClassMethodDecoratorContext
- Prise en charge des décorateurs de champs, de méthodes et de classes, ainsi que des initialiseurs (
addInitializer)
- Les décorateurs expérimentaux existants de TypeScript (
experimentalDecorators) continuent également de fonctionner
Prise en charge de Windows ARM64
- Bun peut être exécuté et compilé sur Windows basé sur ARM64, comme les machines Snapdragon
- Prise en charge de la compilation croisée avec la cible
bun-windows-arm64
- Utilisable de la même façon côté CLI et API
Optimisation des barrel imports
- Détection automatique des structures de réexport via des barrel files comme
import { Button } from 'antd'
- Optimisation automatique si l’option
"sideEffects": false est définie
- Peut aussi être activée explicitement via l’option
optimizeImports
- En n’analysant que les sous-modules nécessaires, la vitesse de build peut être jusqu’à 2 fois plus rapide
Optimisation de la sortie du bundle
- Réduction du nombre de closures et de l’utilisation de mémoire du tas dans les bundles ESM/CJS
- Nombre d’objets réduit de 11 %, taille du tas réduite de 4 Mo, forte baisse du nombre de fonctions et d’objets d’environnement
- Application automatique sans modification du code
bun test --retry
- Possibilité de définir un nombre de nouvelles tentatives par défaut pour l’ensemble des tests (
--retry N)
- L’option
{ retry: N } définie sur un test individuel reste prioritaire
- Le reporter JUnit XML enregistre chaque tentative sous la forme d’un
<testcase> distinct
Amélioration de Bun.generateHeapSnapshot("v8")
- L’option
"arraybuffer" permet de renvoyer un heap snapshot sous forme d’ArrayBuffer
- Supprime le surcoût de conversion en chaîne lors du traitement de snapshots volumineux
Mises à jour TLS et certificats
- Amélioration des performances grâce à la prise en charge du keepalive pour mTLS et les connexions avec CA personnalisée
- Les mêmes paramètres TLS sont dédupliqués dans un registre global
- Les certificats racine ont été mis à jour vers NSS 3.119 (Firefox 147.0.3)
- Suppression de 4 certificats racine CommScope
Mise à niveau du moteur JavaScriptCore
- De nombreuses améliorations de performances, dont x168 sur le découpage de chaînes, x10,5 sur
endsWith, x1,6 sur l’accès aux drapeaux RegExp, et jusqu’à x7 sur path.parse()
structuredClone est jusqu’à 25 fois plus rapide sur les tableaux et tableaux d’objets
Buffer.slice() et subarray() progressent d’environ 1,8 fois
- Optimisations internes sur
BigInt, les itérateurs de chaînes et les opérations sur entiers
Principales corrections de bugs
- Résolution d’un problème de compatibilité des pipes avec les serveurs MCP Python asyncio (
Bun.spawn)
- Compatibilité Node.js : nombreuses corrections concernant
AsyncLocalStorage, fs.watch, le traitement des en-têtes http, ainsi que des plantages liés au GC
- API Bun : résolution de crashs et de fuites mémoire liés à
spawn, plugin, sql et build
- Amélioration générale de la stabilité de WebSocket, bun install, du parseur CSS, de bun shell et de l’environnement Windows
- Vulnérabilités de sécurité : correction de l’injection d’en-têtes HTTP, de la traversée de chemin dans les tarballs et des fuites de flux S3
Aucun commentaire pour le moment.