Bun published 1.4.2 on 5 September 2026: Elysia/bun-build variable collision, AsyncLocalStorage leak under exit()/run(), worker_threads online ordering for @discordjs/ws, and CMYK/YCCK JPEG decode in Bun.Image. Upgrade checklist only; no affiliate.
4 min read
No affiliate links. This is a frontend runtime note from the Bun v1.4.2 blog, the GitHub release tag, and the npm bun registry. ShopperCove has not run bun upgrade on a production host for this article.
npm bun@1.4.2 is the latest dist-tag as of 5 Oct 2026, published 5 Sep 2026 (06:01 UTC / 11:31 IST). The Bun blog post landed the same day (Dylan Conway). Among Prettier (3.9.9, 23 Sep), Rspack (2.2.8, 28 Sep — already packaged), Vite 8.3.2, and Turborepo 2.11.7, this is the open Bun stable pin for the Bun/Prettier/oxc frontend slot.
1.4.2 is a tight patch on the 1.4 line (1.4.0 announced 20 Aug 2026; 1.4.1 on 4 Sep 2026). The operator story is Elysia/bun build correctness, an AsyncLocalStorage memory leak, worker_threads online ordering for @discordjs/ws, and CMYK/YCCK JPEG decode in Bun.Image—plus a JavaScriptCore pull of ~350 WebKit commits. Not a new major.
From the Bun v1.4.2 blog:
bun build variable name collision (Elysia)A 1.4.1 regression renamed a nested var to the same name as a let in the same block. Builds importing Elysia failed to load with SyntaxError: Cannot declare a var variable that shadows a let/const/class variable. Fixed, with a regression test. The same bug could also give a let the name of a function parameter or catch binding, producing code that evaluates but computes incorrect values.
A 1.4.1 regression: a timer, immediate, or pending promise created inside store.exit() or a nested store.run() kept the outer store value alive for as long as that timer/promise existed. getStore() still returned the correct value—only memory usage grew. Fixed in 1.4.2.
worker_threads 'online' event orderA Worker from node:worker_threads did not emit 'online' first, causing @discordjs/ws to hang waiting on a worker's first message. Ordering now matches Node.js.
Bun.Image decodes CMYK and YCCK JPEGsBun.Image now decodes 4-component CMYK and YCCK JPEGs (previously Image: decode failed). They convert to RGB on decode so transforms and output formats work.
About 350 more upstream WebKit commits, including:
Intl.PluralRules bigint selectors (was TypeError)slice correctness when valueOf mutates or Symbol.species overlapsIntl.DurationFormat style: "digital" stray : when minutes is 0 and hiddenObject.setPrototypeOf(handler, null) on a hot class-defined handlerArray.prototype.splice / shift / shrinking array.length on object arrays could crash on a GC thread or hang during marking.json() on Response / Blob / Bun.file() / proc.stdout now surfaces the real JSON.parse SyntaxError message instead of a generic parse failurebun install / bun add no longer panic with range end index out of range on package-name hash mismatches in bun.lockb / cached manifestsBun.file().writer() FileSink no longer double-closes a descriptor when epoll registration fails (e.g. fs.epoll.max_user_watches exhausted)bun upgrade (or install via bun.com/docs / the install script) and confirm bun --version prints 1.4.2.bun build shadowing SyntaxError on 1.4.1): rebuild and smoke-load the output.store.exit() / nested store.run() plus long-lived timers or promises: watch RSS after upgrade; the leak was silent.@discordjs/ws (or other code that awaits Worker 'online' before the first message): re-test connect.Bun.Image: re-run those transform paths.ShopperCove did not change production Bun versions for this article. Prefer bun.com/blog and the GitHub tags over third-party roundups.
Bun 1.4.2 (5 Sep 2026) is the pin to take if you are on 1.4.1 and hit Elysia/bun build shadowing, an ALS leak under exit()/run(), a @discordjs/ws hang, or CMYK JPEG decode failures—plus the bundled JSC correctness pull. No affiliate.
Lab evidence
Sources read 5 Oct 2026 (Asia/Calcutta): bun.com/blog/bun-v1.4.2 (Dylan Conway, 5 Sep 2026) — fixes: bun build var/let name collision breaking Elysia (SyntaxError shadowing); AsyncLocalStorage memory leak when timer/immediate/promise created inside store.exit()/nested store.run() kept outer store alive; worker_threads Worker 'online' event order (hung @discordjs/ws); Bun.Image CMYK/YCCK 4-component JPEG decode→RGB; ~350 upstream WebKit/JSC commits (Intl.PluralRules bigint, TypedArray valueOf/species slice, DurationFormat digital stray colon, Proxy handler prototype crash); rare JIT crash after prototype GC; musl (Alpine) Array splice/shift/length-shrink GC crash/hang; .json() now surfaces JSON.parse SyntaxError; bun install/add range-end panic on name-hash mismatch; Linux FileSink double-close on epoll register fail. npm registry bun latest=1.4.2 time 2026-09-05T06:01:35.854Z; GitHub tag bun-v1.4.2 200. Context: bun-v1.4.1 (4 Sep) and bun-v1.4.0 (20 Aug) posts 200. Freshness vs already-packaged: prettier 3.9.9 (23 Sep), rspack 2.2.8 (28 Sep), vite 8.3.2, turbo 2.11.7 — Bun 1.4.2 still the open Bun slot after Rspack took cont16. Checklist/upgrade note only; ShopperCove did not bun upgrade production runtimes; no affiliate.
npm 12.2.0 vs pnpm 12.9.1 vs Bun 1.4.2 on one 24-dependency React + Vite app: from scratch 14.2 s / 3.1 s / 1.5 s; lockfile + warm cache 2.9 s / 0.28 s / 0.27 s; lockfile + empty cache 3.9 s / 2.3 s / 0.45 s. Disk, lockfile size and the pnpm phantom-dependency catch.
Summary5 Oct 20267 min read
Both cut a string at a separator, but they fail in different ways. We ran them on Python 3.13.5 to show where partition() is safer and where split() is the right tool.
Summary2 Nov 20263 min read
What changes when you swap sort() for toSorted(), with a real 1-million-item Node.js benchmark and the support table.
Summary1 Nov 20263 min read