Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
b00ee11
fix(node:http): set writableEnded to true when end() called without s…
majiayu000 Dec 25, 2025
36f48fd
fix: match Node.js behavior - don't invoke callback without socket
majiayu000 Dec 28, 2025
3058ab8
Upgrade WebKit Dec 24, 2025 (#25684)
sosukesuzuki Dec 25, 2025
d200186
Deflake test/js/bun/resolve/load-same-js-file-a-lot.test.ts
Jarred-Sumner Dec 26, 2025
abe4341
add test for dependency order when a package's name is larger than 8 …
NicoCevallos Dec 26, 2025
ca89b21
[publish images] Remove sccache, use ccache only (#25682)
robobun Dec 27, 2025
3a0b5e7
Fix DCE producing invalid syntax for empty objects in spreads (#25710)
dylan-conway Dec 27, 2025
fb2bf9a
Add microbench for `String#includes` (#25699)
sosukesuzuki Dec 27, 2025
4ec4c8e
fix: reject null bytes in spawn args, env, and shell arguments (#25698)
robobun Dec 27, 2025
de30979
perf: speed up Bun.hash.crc32 by switching to zlib CRC32 (#25692)
sqdshguy Dec 27, 2025
6788cd7
Add simple benchmark for Array.of (#25711)
sosukesuzuki Dec 27, 2025
52d310e
perf(Response.json): use JSC's FastStringifier by passing undefined f…
robobun Dec 27, 2025
055ea49
Enable `CHECK_REF_COUNTED_LIFECYCLE` in WebKit (#25705)
sosukesuzuki Dec 27, 2025
ae2a20e
fix(io): Prevent data corruption in `Bun.write` for files >2GB (#25720)
mattermoran Dec 28, 2025
2c51d33
feat(shell): add $.trace for analyzing shell commands without executi…
robobun Dec 28, 2025
daa2139
Harden WebSocket client decompression (#25724)
robobun Dec 29, 2025
45064ec
perf: use jsonStringifyFast for faster JSON serialization (#25733)
robobun Dec 29, 2025
ee511d0
feat(bundler): expose reactFastRefresh option in Bun.build API (#25731)
remorses Dec 29, 2025
0328b14
perf(Buffer.indexOf): use SIMD-optimized search functions (#25745)
robobun Dec 30, 2025
834b01b
perf(ipc): fix O(n²) JSON scanning for large chunked messages (#25743)
robobun Dec 30, 2025
d9677cc
fix(cmake): fix JSON parsing in SetupBuildkite.cmake (#25755)
robobun Dec 31, 2025
d9a865d
docs: update npmrc.mdx with all supported .npmrc fields (#25783)
robobun Dec 31, 2025
c8c6e32
docs: fix shell prompt rendering and remove hardcoded prompts (#25792)
mattermoran Jan 2, 2026
98edd08
feat(cli): add `--grep` as alias for `-t`/`--test-name-pattern` in `b…
robobun Jan 2, 2026
418c863
fix(web): make URLSearchParams.prototype.size configurable (#25762)
darwin808 Jan 2, 2026
f066f8c
fix: match Node.js end() callback behavior
majiayu000 Jan 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 4 additions & 13 deletions .buildkite/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
wget curl git python3 python3-pip ninja-build \
software-properties-common apt-transport-https \
ca-certificates gnupg lsb-release unzip \
libxml2-dev ruby ruby-dev bison gawk perl make golang \
libxml2-dev ruby ruby-dev bison gawk perl make golang ccache \
&& add-apt-repository ppa:ubuntu-toolchain-r/test \
&& apt-get update \
&& apt-get install -y gcc-13 g++-13 libgcc-13-dev libstdc++-13-dev \
Expand All @@ -35,7 +35,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
&& wget https://apt.llvm.org/llvm.sh \
&& chmod +x llvm.sh \
&& ./llvm.sh ${LLVM_VERSION} all \
&& rm llvm.sh
&& rm llvm.sh \
&& rm -rf /var/lib/apt/lists/*


RUN --mount=type=tmpfs,target=/tmp \
Expand All @@ -48,14 +49,6 @@ RUN --mount=type=tmpfs,target=/tmp \
wget -O /tmp/cmake.sh "$cmake_url" && \
sh /tmp/cmake.sh --skip-license --prefix=/usr

RUN --mount=type=tmpfs,target=/tmp \
sccache_version="0.12.0" && \
arch=$(uname -m) && \
sccache_url="https://github.com/mozilla/sccache/releases/download/v${sccache_version}/sccache-v${sccache_version}-${arch}-unknown-linux-musl.tar.gz" && \
wget -O /tmp/sccache.tar.gz "$sccache_url" && \
tar -xzf /tmp/sccache.tar.gz -C /tmp && \
install -m755 /tmp/sccache-v${sccache_version}-${arch}-unknown-linux-musl/sccache /usr/local/bin

RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130 \
--slave /usr/bin/g++ g++ /usr/bin/g++-13 \
--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-13 \
Expand Down Expand Up @@ -134,9 +127,7 @@ RUN ARCH=$(if [ "$TARGETARCH" = "arm64" ]; then echo "arm64"; else echo "amd64";
RUN mkdir -p /var/cache/buildkite-agent /var/log/buildkite-agent /var/run/buildkite-agent /etc/buildkite-agent /var/lib/buildkite-agent/cache/bun

# The following is necessary to configure buildkite to use a stable
# checkout directory. sccache hashes absolute paths into its cache keys,
# so if buildkite uses a different checkout path each time (which it does
# by default), sccache will be useless.
# checkout directory for ccache to be effective.
RUN mkdir -p -m 755 /var/lib/buildkite-agent/hooks && \
cat <<'EOF' > /var/lib/buildkite-agent/hooks/environment
#!/bin/sh
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
.ninja_deps
.ninja_log
.npm
.npmrc
.npm.gz
.parcel-cache
.swcrc
Expand Down
10 changes: 1 addition & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,7 @@ include(SetupEsbuild)
include(SetupZig)
include(SetupRust)

find_program(SCCACHE_PROGRAM sccache)
if(SCCACHE_PROGRAM AND NOT DEFINED ENV{NO_SCCACHE})
include(SetupSccache)
else()
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
include(SetupCcache)
endif()
endif()
include(SetupCcache)

# Generate dependency versions header
include(GenerateDependencyVersions)
Expand Down
43 changes: 14 additions & 29 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Using your system's package manager, install Bun's dependencies:
{% codetabs group="os" %}

```bash#macOS (Homebrew)
$ brew install automake cmake coreutils gnu-sed go icu4c libiconv libtool ninja pkg-config rust ruby sccache
$ brew install automake ccache cmake coreutils gnu-sed go icu4c libiconv libtool ninja pkg-config rust ruby
```

```bash#Ubuntu/Debian
Expand Down Expand Up @@ -65,43 +65,28 @@ $ brew install bun

{% /codetabs %}

### Optional: Install `sccache`
### Optional: Install `ccache`

sccache is used to cache compilation artifacts, significantly speeding up builds. It must be installed with S3 support:
ccache is used to cache compilation artifacts, significantly speeding up builds:

```bash
# For macOS
$ brew install sccache
$ brew install ccache

# For Linux. Note that the version in your package manager may not have S3 support.
$ cargo install sccache --features=s3
```

This will install `sccache` with S3 support. Our build scripts will automatically detect and use `sccache` with our shared S3 cache. **Note**: Not all versions of `sccache` are compiled with S3 support, hence we recommend installing it via `cargo`.

#### Registering AWS Credentials for `sccache` (Core Developers Only)
# For Ubuntu/Debian
$ sudo apt install ccache

Core developers have write access to the shared S3 cache. To enable write access, you must log in with AWS credentials. The easiest way to do this is to use the [`aws` CLI](https://aws.amazon.com/cli/) and invoke [`aws configure` to provide your AWS security info](https://docs.aws.amazon.com/cli/latest/reference/configure/).
# For Arch
$ sudo pacman -S ccache

The `cmake` scripts should automatically detect your AWS credentials from the environment or the `~/.aws/credentials` file.
# For Fedora
$ sudo dnf install ccache

<details>
<summary>Logging in to the `aws` CLI</summary>

1. Install the AWS CLI by following [the official guide](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
2. Log in to your AWS account console. A team member should provide you with your credentials.
3. Click your name in the top right > Security credentials.
4. Scroll to "Access keys" and create a new access key.
5. Run `aws configure` in your terminal and provide the access key ID and secret access key when prompted.
</details>

<details>
<summary>Common Issues You May Encounter</summary>
# For openSUSE
$ sudo zypper install ccache
```

- To confirm that the cache is being used, you can use the `sccache --show-stats` command right after a build. This will expose very useful statistics, including cache hits/misses.
- If you have multiple AWS profiles configured, ensure that the correct profile is set in the `AWS_PROFILE` environment variable.
- `sccache` follows a server-client model. If you run into weird issues where `sccache` refuses to use S3, even though you have AWS credentials configured, try killing any running `sccache` servers with `sccache --stop-server` and then re-running the build.
</details>
Our build scripts will automatically detect and use `ccache` if available. You can check cache statistics with `ccache --show-stats`.

## Install LLVM

Expand Down
Loading