Bun 1.4.2 explained: 2026 Elysia build and AsyncLocalStorage leak

Official Bun blog on 5 September: v1.4.2 patches v1.4.1 regressions that broke Elysia builds and leaked AsyncLocalStorage. CMYK JPEGs and a WebKit bump share the page.

On 5 September 2026 the official Bun blog shipped v1.4.2. The lead sentence names two regressions from v1.4.1: a bun build name clash that broke Elysia, and an AsyncLocalStorage leak. The same page also lists a hang in @discordjs/ws, CMYK JPEG decoding in Bun.Image, a rare JIT crash, and a GC crash on musl.

The search term is the patch number. Official text: upgrade with bun upgrade. This article only checks that blog. It is not an install guide, and it is not the August Zig-to-Rust 1.4.0 story.

Official blog1.4.1 regressionsWho got named

What the public notes print

1.4.2
Patch version
9/5
Blog date
350
WebKit commits (about)
ItemWhat they wroteLimit
Buildbun build renamed a nested var onto a same-block letBuilds importing Elysia failed to load
MemoryTimers inside exit / nested run kept the outer storegetStore() stayed correct; only memory grew
Workeronline was not first; @discordjs/ws missed the first messageOrder now matches Node.js
EngineAbout 350 upstream WebKit commitsNot a new runtime product

How to read this release

  1. 1

    This is a 1.4.1 patch

    The official lead puts both regressions in the first sentence. Do not treat it as a re-ship of the 1.4.0 Zig-to-Rust rewrite, or as a new framework.

  2. 2

    The build failure has a printed error

    The blog prints the broken output: var exports2 = exports2. The error is SyntaxError: Cannot declare a var variable that shadows a let/const/class variable. The same bug could also give a let the name of a parameter or catch binding and compute wrong values.

  3. 3

    The leak does not change getStore()

    A timer, immediate, or pending promise created inside store.exit() or a nested store.run() kept the outer store alive for as long as that handle existed. Official text: the return value was still right; only memory was held.

  4. 4

    Images and the engine share the page

    Bun.Image now decodes four-component CMYK and YCCK JPEGs and converts them to RGB; they used to fail with Image: decode failed. The same page says about 350 WebKit commits landed: Intl, TypedArray, a Proxy crash, cheaper Date objects.

What else the same page lists

01

JSON errors match JSON.parse

.json() on Response, Blob, Bun.file(), or proc.stdout no longer rejects invalid JSON with only Failed to parse JSON. It now surfaces the SyntaxError text JSON.parse would give.

02

Install and Alpine

bun install and bun add could panic when bun.lockb or a cached manifest stored a package-name hash that did not match the name. On musl (Alpine), splice, shift, or shrinking length on an array of objects could crash on a GC thread or hang while the GC was marking.

03

Linux file descriptors

If registering a Bun.file().writer() FileSink with epoll failed (for example fs.epoll.max_user_watches exhausted), the descriptor could be closed twice.

Limits

The official page does not date 1.4.3. Next step is bun.com/blog/bun-v1.4.2. If you only needed a short meeting without another account wall, wbstorm is a browser room ID — see also create or join a room and whiteboard basics.

# Sources
# bun.com/blog/bun-v1.4.2
# 2026-09-05
Is this the Zig-to-Rust rewrite?

No. This post is the v1.4.2 patch. The 1.4.0 rewrite story is from August and is not this page’s date.

Did Elysia itself ship a bug?

Official text: v1.4.1 bun build renamed a nested var onto a same-block let. Builds that imported Elysia then failed to load. This is not an Elysia release note.

Is this a product how-to?

No. This article only checks the 5 September Bun blog. It is not a bun upgrade handbook.

Create room