Bun 1.4.2 expliqué : build Elysia et fuite AsyncLocalStorage 2026
Blog officiel Bun le 5 septembre : v1.4.2 corrige des régressions v1.4.1 qui cassaient les builds Elysia et fuyaient AsyncLocalStorage. JPEG CMYK et une montée WebKit sur la même page.
Le 5 septembre 2026, le blog officiel Bun a publié v1.4.2. La phrase d’ouverture nomme deux régressions de v1.4.1 : une collision de noms dans bun build qui cassait Elysia, et une fuite AsyncLocalStorage. La même page liste un blocage de @discordjs/ws, le décodage JPEG CMYK dans Bun.Image, un crash JIT rare et un crash GC sur musl.
Le terme de recherche est le numéro de rustine. Texte officiel : mettre à jour avec bun upgrade. Cet article ne vérifie que ce blog. Ce n’est pas un guide d’install, ni l’histoire Zig vers Rust de 1.4.0 en août.
Ce que les textes publics impriment
| Point | Texte public | Limite |
|---|---|---|
| Build | bun build a renommé un var imbriqué sur un let du même bloc | Les builds qui importent Elysia ne chargeaient plus |
| Mémoire | Les timers dans exit / run imbriqué gardaient le store extérieur | getStore() restait juste ; seule la mémoire croissait |
| Worker | online n’était pas premier ; @discordjs/ws ratait le premier message | L’ordre suit maintenant Node.js |
| Moteur | Environ 350 commits WebKit amont | Pas un nouveau produit runtime |
Lire cette version
- 1
C’est une rustine 1.4.1
Le texte officiel place les deux régressions dans la première phrase. Ce n’est pas un nouvel envoi de la réécriture Zig vers Rust de 1.4.0, ni un nouveau framework.
- 2
L’échec de build a une erreur imprimée
Le blog imprime la sortie cassée : var exports2 = exports2. L’erreur est SyntaxError: Cannot declare a var variable that shadows a let/const/class variable. Le même défaut pouvait aussi donner à un let le nom d’un paramètre ou d’une liaison catch et calculer de mauvaises valeurs.
- 3
La fuite ne change pas getStore()
Un timer, immediate ou promesse en attente créé dans store.exit() ou un store.run() imbriqué gardait le store extérieur tant que la poignée existait. Texte officiel : la valeur de retour restait juste ; seule la mémoire était retenue.
- 4
Images et moteur partagent la page
Bun.Image décode maintenant les JPEG CMYK et YCCK à quatre composantes et les convertit en RGB ; auparavant Image: decode failed. La même page dit environ 350 commits WebKit : Intl, TypedArray, un crash Proxy, des Date moins chers.
Le reste de la même page
Erreurs JSON alignées sur JSON.parse
.json() sur Response, Blob, Bun.file() ou proc.stdout ne rejette plus un JSON invalide avec seulement Failed to parse JSON. Il affiche le texte SyntaxError de JSON.parse.
Install et Alpine
bun install et bun add pouvaient panic si bun.lockb ou un manifeste en cache stockait un hachage de nom de paquet qui ne correspondait pas au nom. Sur musl (Alpine), splice, shift ou raccourcir length sur un tableau d’objets pouvait planter sur un fil GC ou bloquer pendant le marquage.
Descripteurs de fichiers Linux
Si l’enregistrement epoll d’un FileSink Bun.file().writer() échouait (par exemple fs.epoll.max_user_watches épuisé), le descripteur pouvait être fermé deux fois.
Limites
La page officielle ne date pas 1.4.3. Ensuite : bun.com/blog/bun-v1.4.2. Pour une courte réunion sans mur de compte, wbstorm est un identifiant de salle — voir créer ou rejoindre une salle et bases du tableau.
# Sources
# bun.com/blog/bun-v1.4.2
# 2026-09-05Est-ce la réécriture Zig vers Rust ?
Non. Ce billet est la rustine v1.4.2. L’histoire de réécriture 1.4.0 date d’août, pas de cette page.
Elysia a-t-elle elle-même livré un bogue ?
Texte officiel : bun build de v1.4.1 a renommé un var imbriqué sur un let du même bloc. Les builds qui importaient Elysia ne chargeaient plus. Ce n’est pas une note de version Elysia.
Est-ce un mode d’emploi produit ?
Non. Cet article ne vérifie que le blog Bun du 5 septembre. Ce n’est pas un guide bun upgrade.