Bun v1.4.2 corrige des régressions critiques sur Elysia et AsyncLocalStorage
La nouvelle version de correctif de Bun vient résoudre plusieurs bogues introduits récemment, notamment une erreur d'empaquetage liée au framework Elysia et une fuite de mémoire. Elle apporte également une mise à jour du moteur JavaScriptCore ainsi que des stabilisations sous Linux et Alpine.
Fil « Publication de Bun 1.4.2 corrigeant des régressions sur AsyncLocalStorage et le compilateur JIT »

Correction de régressions sur le bundler et la mémoire
L'équipe du projet Bun (runtime alternatif pour JavaScript et TypeScript) a publié la version 1.4.2. Ce correctif résout deux régressions majeures introduites dans la version 1.4.1. La première touchait le bundler (outil d'empaquetage de code) lors de l'utilisation du framework web Elysia : une collision de noms de variables renommait une variable var imbriquée avec le même nom qu'un let dans le même bloc, déclenchant une erreur de syntaxe (SyntaxError). La deuxième régression causait une fuite de mémoire avec l'API AsyncLocalStorage (mécanisme de transmission de contexte à travers des opérations d'E/S asynchrones), où un minuteur ou une promesse créée dans un store.exit() conservait indéfiniment la valeur du stockage parent.
Stabilité accrue sur le multithreading et l'écosystème Linux
Côté exécution, le module node:worker_threads émet désormais l'événement online avant de recevoir les messages, ce qui résout un blocage complet constaté sur la bibliothèque @discordjs/ws. La gestion de la mémoire s'améliore aussi sur la bibliothèque C musl (utilisée notamment par la distribution Alpine Linux) : la manipulation de tableaux d'objets ne provoque plus de plantage du GC (Garbage Collector, le ramasse-miettes). Sur Linux, Bun élimine une double fermeture de descripteur de fichier en cas d'échec d'enregistrement avec epoll (mécanisme du noyau pour surveiller les événements d'E/S).
Un exemple concret de la régression du bundler
Le bogue de renommage de variables générait du code invalide à la compilation. Voici la transformation qui provoquait l'erreur désormais corrigée :
// Code source d'origine
function foo() {
{
let exports2 = {};
var exports = exports2;
}
return exports;
}
// Code généré par bun build dans la v1.4.1 (SyntaxError)
function foo() {
{
let exports2 = {};
var exports2 = exports2; // Redéclaration invalide de let
}
return exports2;
}
Mise à jour du moteur JavaScriptCore et traitement d'images
Bun v1.4.2 intègre environ 350 commits amont en provenance du projet WebKit pour son moteur JavaScriptCore. Cette mise à niveau corrige un plantage rare du compilateur JIT (Just-In-Time, la compilation à la volée du code) dans les processus à longue durée de vie, résout un problème d'effondrement sur les objets Proxy, et optimise la création d'instances Date. En parallèle, l'API Bun.Image prend désormais en charge le décodage des fichiers JPEG en profils de couleurs CMYK et YCCK en les convertissant en RGB. Enfin, les méthodes .json() renvoient désormais les messages d'erreur détaillés de JSON.parse au lieu d'une erreur générique.
La mise à niveau s'effectue directement via la commande bun upgrade.