Open-Source Wikis

/

Bun

/

Lore

oven-sh/bun

Lore

A short timeline of how Bun got here, plus a few historical curiosities for anyone reading the git log.

Timeline

timeline
    title Bun release timeline
    2021-04 : "woot" — first commit
    2022-07 : v0.1.0 — public preview
    2023-01 : v0.5.0
    2023-09 : v1.0.0 — stable announcement
    2024-04 : v1.1.0 — Windows support, Bake preview
    2025-01 : v1.2.0 — bun.lock (text lockfile)
    2025-10 : v1.3.0
    2026-04 : v1.3.13 (latest patch)

Eras

"woot" era (2021)

The first commit is literally git commit -m "woot" on 2021-04-17 by Jarred Sumner. The project was a private experiment for the first year — JS transpiler with a Zig core, prototypes of the bundler. There is no v0.0.0-1 through v0.0.0-7 — the early tags start at v0.0.0-8.

Naming: "Bun" was the name from the start. The companion company name "Oven" came later when the project was open-sourced.

Public preview (2022)

v0.1.0 in July 2022 was the first open-source release tagged for download. The project's public framing at this point was "a fast all-in-one JavaScript runtime."

Stabilisation toward v1 (2022–2023)

The path to v1 in September 2023 was driven by Node compatibility — node:fs, node:path, node:http, node:net, node:child_process, Buffer, streams, the package manager, the test runner. Most of src/js/node/ and the heavy parts of src/bun.js/node/ come from this period.

Windows port (2024)

v1.1.0 in April 2024 announced Windows support. This was a major undertaking — every bun.sys.* call has a Windows path, the watcher uses ReadDirectoryChangesW, the event loop falls back to libuv on Windows, and the package manager has to handle the Windows path quirks. Search for Environment.isWindows to find the Windows-specific branches.

The same release introduced the first preview of Bake, the SSR / dev server framework.

Bun.lock and text lockfiles (2025)

v1.2.0 in January 2025 introduced bun.lock, a text-based lockfile that replaced the binary bun.lockb. The text format is JSONC; it diffs sanely in code review and works with merge tooling. The binary format is still readable but no longer the default. See Package manager.

v1.3 — current (2025–2026)

v1.3.0 (October 2025) brought:

  • HTTP/3 client.
  • Postgres / MySQL native clients (Bun.sql).
  • Bake reaching production-readiness for full-stack apps.
  • Continued Bun-specific runtime improvements (Performance API, AsyncLocalStorage, etc.).

v1.3.13 is the latest patch as of this wiki.

Deprecated / superseded

Thing What replaced it
bun.lockb (binary lockfile) bun.lock (text JSONC). Default since v1.2.
The original bundler/bundle.zig src/bundler/bundle_v2.zig. Look for "v2" in file names.
The original bindgen.ts src/codegen/bindgenv2/. Both still exist.
bunfig.toml JSC GC overrides (some) Replaced by [run] sections; older keys still parse but emit warnings.
Bun.macros (early form) with { type: "macro" } import attribute.

Historical artefacts in the repo

  • vendor/WebKit/ is a fork of WebKit, not the upstream tree. Bun's WebKit has a few patches on top — search for // bun: markers in the WebKit sources.
  • vendor/zig/ pins a specific Zig compiler version. Bun has occasionally been on a pre-release Zig that no one else was using.
  • vendor/tinycc/ is a fork (oven-sh/tinycc). The upstream TinyCC was missing features Bun's FFI needed.
  • The --dump-environment-variables flag prints every typed env var declaration from src/env_var.zig at runtime — useful when debugging "is BUN_CONFIG_FOO actually read?".

The mascot

Bun's mascot is a small bunny with a bun-shaped head. There's no official spelled-out story; it just is. The README puts a single ASCII bunny next to the project name in some auto-generated outputs.

Reading the git log

A few patterns to know:

  • Commits prefixed by chore(deps): or Update are usually robobun (the bot) bumping vendored versions.
  • Commits prefixed by fix: and squashed into one line are usually post-CI cleanups.
  • "Tip of the iceberg" PRs sometimes hide huge feature work in a single commit — check the diff stats, not just the title.

Where to read more

  • The official changelog is in the GitHub Releases for each bun-v* tag.
  • Public-facing announcements are at bun.com/blog.
  • Architecture choices are explained inline in CLAUDE.md, src/CLAUDE.md, src/js/CLAUDE.md, and test/CLAUDE.md. Those files are the closest thing to a design log.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Lore – Bun wiki | Factory