Bun 1.3.9 Released: parallel script runner, ESM bytecode support, and JSC performance wins

JavaScriptRuntimeTooling

Bun 1.3.9 (Feb 8, 2026) is a focused, high‑utility update that delivers several developer-facing features that matter immediately for full‑stack teams: first-class parallel/sequential script orchestration, ESM bytecode support for compiled builds, finer CPU‑profiler control, and a significant JavaScriptCore (JSC) performance push that speeds common string and regex paths. These changes reduce friction in monorepo CI, improve runtime observability, and give compiled ESM workflows more predictable behavior for deployments and single‑file builds.

Key changes and practical impact

  • bun run --parallel / --sequential — Run multiple npm scripts concurrently or in sequence with prefixed, colored output and workspace-aware filtering. This is a practical win for monorepos and CI: speed up cross‑package builds/tests without introducing custom Foreman scripts or external tools, and retain clear logs for troubleshooting.

  • ESM bytecode in --compile — Bun now supports emitting ESM bytecode when compiling with --compile/--bytecode. That makes compiled ESM apps more portable and improves startup consistency for ESM-first projects and single‑file executables that target fast cold starts.

  • JavaScriptCore upgrade — JSC received multiple microarchitecture optimizations (SIMD-accelerated regex prefix search, new string intrinsics, and JIT improvements) that translate to measurable speedups for regex-heavy code, string operations, and Map/Set size access patterns — useful for server request pipelines, templating, and text processing workloads.

  • Test ergonomics: Symbol.dispose for mocks — bun:test mock() and spyOn() now implement Symbol.dispose, enabling automatic restoration via the using pattern. Tests become safer and cleaner (less manual teardown), particularly for suites that create many temporary mocks.

  • Profiling and networking parity — New --cpu-prof-interval aligns Bun's profiler controls with Node.js sampling semantics; HTTP/2 connection upgrade and NO_PROXY fixes address real-world proxy, reverse‑proxy and HTTP/2 proxying scenarios that previously caused surprising failures.

Why this matters now

  • Faster monorepo CI and local dev loops: built‑in parallel/sequential script orchestration means fewer ad‑hoc scripts and more deterministic, visible output when running many package tasks in parallel. Teams can often remove small orchestration utilities and rely on a single runtime tool.

  • Better compiled ESM deployments: ESM bytecode support reduces variance between dev and compiled artifacts and makes single‑file compiled outputs more reliable for edge or containerized deployment patterns.

  • Real-world runtime robustness: fixes for NO_PROXY, HTTP/2 upgrades, and ARM SIGILL crashes close gaps that commonly surface when moving from dev to production images or heterogeneous cloud instances.

Recommendations for full‑stack teams

  • Try bun run --parallel in CI for independent package builds/tests to shorten wall time; validate log clarity and failure behavior with --no-exit-on-error first.

  • If you compile for production, test ESM bytecode artifacts across your target platforms to confirm startup and interoperability with native modules or external tooling.

  • Re-run flaky integration tests if you use proxies or HTTP/2 intermediaries — the NO_PROXY and connection‑upgrade fixes may resolve issues without code changes.

  • Use the new --cpu-prof-interval when profiling low-latency code paths to collect higher‑resolution samples and compare results against existing Node.js baselines.

Read the official release notes for full details and upgrade instructions. (bun.sh)

Source: Bun release notes (Bun v1.3.9).

Source

Read Next