Private local fork of oven-sh/bun with X25519MLKEM768 hybrid PQ KEX enabled by default in fetch()
  • Zig 60.1%
  • C++ 25%
  • TypeScript 9%
  • C 3.2%
  • JavaScript 1.4%
  • Other 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Orpheus Lummis 42a956908a local: enable X25519MLKEM768 hybrid by default in fetch SSL_CTX
Adds SSL_CTX_set1_groups_list("X25519MLKEM768:X25519:P-256:P-384") to
the centralized SSL_CTX setup() in the BoringSSL bindings. Affects the
fetch() outbound path (HTTPContext.zig calls sslCtx().setup() after
createSSLContext). Other outbound TLS paths (node:tls, Bun.connect, DB
clients, websocket) bypass setup() and remain on BoringSSL defaults.

Verified: ClientHello to cloudflare.com offers X25519MLKEM768 in
supported_groups + key_share, server selects X25519MLKEM768.

Local-only; not intended for upstream submission as-is — patches a
generated file (boringssl.translated.zig). Upstream-quality patch
would land in a non-generated chokepoint and add an
ssl_groups field to BunSocketContextOptions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 16:17:15 +00:00
.buildkite ci: switch Windows arm64 to Dpdsv6 (local NVMe, ephemeral OS disk) (#29062) 2026-04-08 21:37:19 -07:00
.claude Tweak claude-find-issues-for-pr action 2026-04-08 17:51:30 -07:00
.cursor chore: convert .cursor/rules to .claude/skills (#25683) 2025-12-24 23:37:26 -08:00
.github deps: bump libarchive to v3.8.7, fix all dep-update workflows (#29289) 2026-04-13 21:11:16 -07:00
.vscode run fmt (#25148) 2025-11-28 17:51:45 +11:00
bench deps: replace cloudflare/zlib with zlib-ng 2.3.3 (#29433) 2026-04-18 01:18:07 -07:00
completions Add bun test --shard=M/N for splitting tests across CI jobs (#29366) 2026-04-17 17:14:07 -07:00
dockerhub test: add regression tests for building docker containers (#25210) 2025-12-01 20:20:06 -08:00
docs build: lower minimum glibc requirement from 2.26 to 2.17 (#29461) 2026-04-18 23:03:46 -07:00
misctools Remove dead files (#28847) 2026-04-04 10:02:54 -07:00
packages uws/usockets: passphrase_cb overflow, chunked 1*HEXDIG, SSM, sweep iterator (#29427) 2026-04-17 22:16:02 -07:00
patches deps: replace cloudflare/zlib with zlib-ng 2.3.3 (#29433) 2026-04-18 01:18:07 -07:00
scripts build: lower minimum glibc requirement from 2.26 to 2.17 (#29461) 2026-04-18 23:03:46 -07:00
src local: enable X25519MLKEM768 hybrid by default in fetch SSL_CTX 2026-04-19 16:17:15 +00:00
test build: lower minimum glibc requirement from 2.26 to 2.17 (#29461) 2026-04-18 23:03:46 -07:00
.aikido Add new package paths to .aikido configuration 2025-11-20 17:35:16 -08:00
.bk.yaml scripts: replace buildkite-failures.ts with bk-backed ci:* helpers (#28877) 2026-04-04 17:41:26 -07:00
.clang-tidy Reapply "Convert build scripts to CMake (#13427)" 2024-09-11 08:24:50 -07:00
.clangd meta: fix disabling of clangd auto header insertion (#17172) 2025-02-10 02:04:21 -08:00
.coderabbit.yaml Disable coderabbit enrichment 2025-12-18 18:03:23 -08:00
.cursorignore Update .cursorignore 2024-12-26 11:48:30 -08:00
.dockerignore bump webkit (#15328) 2024-12-12 03:21:56 -08:00
.editorconfig
.git-blame-ignore-revs Update .git-blame-ignore-revs 2025-06-13 16:16:14 -07:00
.gitattributes build: replace CMake with TypeScript (#27973) 2026-03-12 19:39:38 -07:00
.gitignore Deflake test 2026-03-30 01:08:21 -07:00
.lldbinit Move LLDB initialization commands to make attach configuration work (#20085) 2025-05-30 19:33:03 -07:00
.mailmap do not print duplicate code (#16231) 2025-01-07 20:19:12 -08:00
.prettierignore docs: revert minifier doc's format (#24639) 2025-11-12 11:01:25 -08:00
.prettierrc Add new bindings generator; port SSLConfig (#23169) 2025-10-03 17:10:28 -07:00
.typos.toml ci: check for typos in documentation (#16235) 2025-01-08 07:23:54 +00:00
AGENTS.md Make AGENTS.md a symlink to CLAUDE.md 2025-06-27 21:13:21 -07:00
build.zig build: lower minimum glibc requirement from 2.26 to 2.17 (#29461) 2026-04-18 23:03:46 -07:00
bun.lock Support TypeScript 6 2026-03-25 16:39:54 +00:00
bunfig.node-test.toml node:module compatibility pt 1 (#18106) 2025-03-12 15:47:41 -07:00
bunfig.toml Support TypeScript 6 2026-03-25 16:39:54 +00:00
CLAUDE.md deps: replace cloudflare/zlib with zlib-ng 2.3.3 (#29433) 2026-04-18 01:18:07 -07:00
CODE_OF_CONDUCT.md
CONTRIBUTING.md scripts: replace buildkite-failures.ts with bk-backed ci:* helpers (#28877) 2026-04-04 17:41:26 -07:00
entitlements.debug.plist Faster debug builds (#16354) 2025-01-12 20:03:24 -08:00
entitlements.plist
flake.lock Add Nix flake for development environment (#23406) 2025-10-10 02:13:28 -07:00
flake.nix [publish images] Upgrade LLVM toolchain from 19.1.7 to 21.1.8 (#26667) 2026-02-02 23:12:21 -08:00
LATEST Bump (#29100) 2026-04-09 20:19:28 -07:00
LICENSE.md build: lower minimum glibc requirement from 2.26 to 2.17 (#29461) 2026-04-18 23:03:46 -07:00
meta.json feat(build): add --metafile-md CLI option for LLM-friendly bundle analysis (#26441) 2026-01-28 18:01:39 -08:00
oxlint.json lint: remove no-undef-init from oxlint.json (#28728) 2026-03-31 13:42:52 -07:00
package.json Bump (#29100) 2026-04-09 20:19:28 -07:00
README.md docs: add Oxford comma to platform support list in README (#27953) 2026-03-10 00:21:31 -07:00
rust-toolchain.toml Add step in CI to upload link metadata (#25448) 2025-12-16 14:30:10 -08:00
SECURITY.md bun.sh -> bun.com (#20909) 2025-07-10 00:10:43 -07:00
shell.nix [publish images] Upgrade LLVM toolchain from 19.1.7 to 21.1.8 (#26667) 2026-02-02 23:12:21 -08:00
tsconfig.base.json Add new bindings generator; port SSLConfig (#23169) 2025-10-03 17:10:28 -07:00
tsconfig.json types: Rewrite to avoid conflicts and allow for doc generation (#18024) 2025-03-25 14:33:30 -07:00
workspace.code-workspace

Logo

Bun

stars Bun speed

Documentation   •   Discord   •   Issues   •   Roadmap

Read the docs →

What is Bun?

Bun is an all-in-one toolkit for JavaScript and TypeScript apps. It ships as a single executable called bun.

At its core is the Bun runtime, a fast JavaScript runtime designed as a drop-in replacement for Node.js. It's written in Zig and powered by JavaScriptCore under the hood, dramatically reducing startup times and memory usage.

bun run index.tsx             # TS and JSX supported out-of-the-box

The bun command-line tool also implements a test runner, script runner, and Node.js-compatible package manager. Instead of 1,000 node_modules for development, you only need bun. Bun's built-in tools are significantly faster than existing options and usable in existing Node.js projects with little to no changes.

bun test                      # run tests
bun run start                 # run the `start` script in `package.json`
bun install <pkg>             # install a package
bunx cowsay 'Hello, world!'   # execute a package

Install

Bun supports Linux (x64 & arm64), macOS (x64 & Apple Silicon), and Windows (x64 & arm64).

Linux users — Kernel version 5.6 or higher is strongly recommended, but the minimum is 5.1.

x64 users — if you see "illegal instruction" or similar errors, check our CPU requirements

# with install script (recommended)
curl -fsSL https://bun.com/install | bash

# on windows
powershell -c "irm bun.sh/install.ps1 | iex"

# with npm
npm install -g bun

# with Homebrew
brew tap oven-sh/bun
brew install bun

# with Docker
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun

Upgrade

To upgrade to the latest version of Bun, run:

bun upgrade

Bun automatically releases a canary build on every commit to main. To upgrade to the latest canary build, run:

bun upgrade --canary

View canary build

Guides

Contributing

Refer to the Project > Contributing guide to start contributing to Bun.

License

Refer to the Project > License page for information about Bun's licensing.