bun - bun-v0.0.72


To upgrade:

bun upgrade

What's new

This release adds source maps for JS output, several web APIs to bun.js (and HTMLRewriter), parser support for ES2022 syntax, improves parsing speed for long strings, makes bun dev 10% faster on macOS and fixes a lot of crashes.

Note: the WASM build is not quite ready yet, but I'm working on it! The main thing I'm uncertain of is whether to release it with Bun.Transpiler as the API, or with a partially-implemented esbuild-compatible API. So if you would like to use it and have opinions there, do say

bun.js

Thanks to source maps, errors in bun.js show the source code instead of the transpiled code now:

image

Previously, it looked like this Note the incorrect line numbers and the missing `if (true)` branch – bun's transpiler removed the dead code, but that can make it harder to read the code image

New APIs:
- HTMLRewriter – fast jQuery-like streaming HTML parser API in Cloudflare Workers, powered by LOLHTML (the same parser in cloudflare workers)
- setTimeout, setInterval, clearTimeout, and clearInterval
- Response.clone, Request.clone, Request.bodyUsed, Response.bodyUsed, Response.headers
- atob, btoa
- Blob, including Blob.text(), Blob.slice(), Blob.arrayBuffer() and Request.blob(), Response.blob()
- console.trace() is now implemented
- Bun.inspect lets you format like console.log but get back a string
- Bun.unsafe.arrayBufferToString(buffer) lets you quickly & unsafely cast an ArrayBuffer-like object to a string. Useful when you've already encoded the string.

Misc:
- console.log support for JSX!
- ResolveError.prototype.toString() and BuildError.prototype.toString() work as expected
- console.log support for Request, Response, Headers
- async node fs functions now have a compatibility wrapper that runs the sync version in the next tick. non-blocking support will come eventually
- Unlike the Web API, FetchEvent.respondWith will automatically await any promises now
- Fixed UTF-8 bug with console.{time, count, timeEnd, profile, profileEnd, count, countReset}
- Fix Program terminates with pending promises #122
- Fix a memory leak with microtasks - d0a9b404c39842755b452b93547ee85fe2b368ad
- Fix bug causing async wasm compilation to never run - 7b8113c7c70bb3bf6916404123e1c30c233a2d6c

bun dev

  • Source Maps for non-bundled code
  • 10% faster http requests on macOS
  • Reduce HMR latency by using better syscalls (send multiple messages in one syscall with sendmsg)
  • Improve HMR performance when multiple tabs are open (pooling websocket threads)
  • Send “Date” header
  • Fix crash on macOS that sometimes occurred when closing the tab
  • Fixed several memory leaks and cases where bun would sometimes segfault

bun install

  • bun pm cache prints the cache dir path
  • Fix bug when parsing package.json that has non-ascii characters

bun run

  • Set $npm_config_user_agent
  • Set $npm_package_json
  • Set $NODE and $npm_node_exec path based on what’s available in $PATH

bun create

  • Fix a crash due to allocation failure - 2d1538e698654150a00a1b2187dfc811a0d15395

JavaScript Transpiler

  • Source Maps support for unbundled code (app code)
  • 69% faster at parsing long strings
  • [microbenchmark] 10% faster at parsing HTML entity codes in JSX
  • Support for static initialization blocks (ES2022)
  • Support for private static class fields and methods (ES2022)
  • Support for private static class brand checks (ES2022)
  • Support for private identifiers (ES2019)
  • Fix printing bug in strings that have certain escape sequences and non-ascii characters
  • Always print escaped Unicode codepoints instead of the original. This more closely matches what Babel & esbuild do
  • For TypeScript classes, match the semantics of useDefineForClassFields for fields and constructor arguments

Bun.Transpiler:

  • autoImportJSX flag lets you enable or disable importing auto-importing the jsxImportSource.
  • allowBunRuntime flag lets you disable importing bun's runtime code. This is useful if you want to use bun as just a transpiler. It is disabled by default, as I would expect people to use Bun.Transpiler mostly for other environments than bun itself

Infrastructural changes

I started using the debug build of mimalloc, bun's memory allocator for the debug builds of bun and that uncovered a few otherwise difficult-to-reproduce crashes
- fix crash when upgrade checker ends – 00977c75ba090587140f3e110c51e30016c8efb3
- fix crash when http thread goes to sleep - 1316dd1a4fcd25b0a81621b57c5f25c8674cd2db


Details

date
March 17, 2022, 2:11 a.m.
name
bun v0.0.72
type
Patch
👇
Register or login to:
  • 🔍View and search all bun releases.
  • 🛠️Create and share lists to track your tools.
  • 🚨Setup notifications for major, security, feature or patch updates.
  • 🚀Much more coming soon!
Continue with GitHub
Continue with Google
or