← Back to Glossary
Developer Glossary
Bun logo

Bun

JavaScript Runtime

Bun is a JavaScript runtime that does everything Node does, but significantly faster. It is also a package manager, a test runner, and a bundler, all in one binary. I started using Bun for internal tooling and scripts first, where the speed difference was hard to ignore. Installing dependencies with Bun takes seconds where npm takes minutes. Running test suites finishes before you can reach for your coffee. For certain client projects where the deployment target supports it, Bun is becoming my preferred runtime because the performance gains are not marginal, they are dramatic.


The Backstory

Jarred Sumner started building Bun in early 2021 while working at Stripe. He was frustrated with the JavaScript ecosystem's tooling performance, the fact that installing packages, running tests, and bundling code all required separate tools, each with their own startup overhead. His solution was radical: rewrite everything from scratch in Zig, a low-level systems programming language, using Apple's JavaScriptCore engine instead of V8. The choice of JavaScriptCore was deliberate. While V8 powers both Node and Chrome, JSC (the engine behind Safari) has faster startup times because it uses a different compilation strategy. Sumner released Bun publicly in July 2022, and the GitHub repo hit 40,000 stars within weeks. Oven, the company behind Bun, raised $7 million in funding to support development. Bun 1.0 shipped in September 2023, marking the first stable release and a signal that this was not just a hobby project.


Under the Hood

What makes Bun fast is not one thing, it is a stack of deliberate low-level decisions. The Zig language gives Bun manual memory management without garbage collection pauses. The JavaScriptCore engine starts faster than V8 because of its tiered compilation approach. Bun implements its own HTTP server, WebSocket server, and file I/O from scratch instead of wrapping libuv like Node does. The built-in package manager uses hardlinks and a global cache, so installing the same package twice across different projects costs almost zero disk I/O. The bundler uses a parallel architecture that processes modules across all available CPU cores. Even the transpiler is custom, Bun natively understands TypeScript and JSX without needing tsc or Babel. The result is a runtime where every common operation, from starting a script to reading a file to making an HTTP request, benchmarks 2 to 10 times faster than the Node equivalent.

Visit: bun.sh

Want a high-performance application built with modern tooling?

or hi@mikelatimer.ai