Changelog

oven-sh/bun · · 42 commits

Windows fixes, Node compat, and cleanup

Big day for Bun on Windows and HTTP compatibility: AppContainer/no-orphans support, timer precision, path/FS fixes, plus several security/compat fixes.

Run Bun inside Windows AppContainer (dylan-conway3979cbe)

Bun can now run inside Windows AppContainer / lowbox sandboxes, which is important for packaged apps and embedders that launch workers under restricted tokens. The change wires in the required Windows-side process, filesystem, resolver, and terminal handling plus a large test matrix.

Implement --no-orphans on Windows (robobunf6c9474)

--no-orphans / BUN_FEATURE_FLAG_NO_ORPHANS now works on Windows instead of being a stub. It uses a kill-on-close Job Object for descendants and a parent-process wait to exit when the launcher dies, matching the POSIX behavior closely enough to matter in supervisors and CI.

Fix HTTP/2 request header validation (robobun6062448)

Bun now rejects malformed HTTP/2 request blocks that Node/nghttp2 rejects, including empty :path, missing required pseudo-headers, and invalid CONNECT shapes. This closes a compat gap that could previously let invalid requests reach the handler.

Reject forbidden trailer headers in node:http (robobun7b1fb7f)

Request trailers can no longer smuggle Content-Length or Transfer-Encoding through Bun's HTTP parser. That brings Bun in line with Node's hard 400/clientError behavior and avoids accepting framed requests Node would reject.

Windows path, file, and timer correctness fixes (robobun0278471, robobun86fc072, robobun84452b8)

Several Windows-specific bugs were fixed: path.resolve("C:foo") now resolves drive-relative paths correctly, NtCreateFile disposition is derived from O_TRUNC instead of access mode, and timers now use a monotonic clock so wall-clock adjustments don't skew deadlines. Together these remove real cross-platform correctness issues in core APIs.

Windows and Node compatibility polish (robobuna4c1ddd, cirospaciari432ee31, robobuncb1e825, robobun9f4682d, robobun02fde87, robobuna3b82c4, Jarred-Sumnerf64cade, robobun1f71ec3, robobun0b0d17a)

Bun picked up a batch of user-visible compatibility fixes: better which behavior for Windows reparse points, per-stream console.inspectOptions, Node-style connect error suffixes, cd semantics in shell, safer process.dlopen errors on Windows, and FFI support on Windows ARM64. Crash reports now record the running CLI command, and HTTP/3 client resets no longer trigger a use-after-free.

Other misc changes

  • High-resolution Windows event-loop timer accuracy via libuv update
  • Redis timer lifetime refactor to prevent UAFs
  • Multiple dead-code / redundant-guard cleanups across bundler, parser, HTTP, SQL, semver, shell, server, and JSC bindings
  • CI/build annotation improvements for early-failing steps
  • Dependency bumps and repo scaffolding cleanup (libuv, WebKit, TinyCC)