Patch series for browser engine builds
Rebuild an engine with a patch series you can read
Browser Engine Patcher applies a short, ordered set of diffs to an engine source tree, pins the upstream revision, and records every hash needed to rebuild the same result on another machine. It is aimed at extension developers who need debug hooks, a smaller feature surface, and a local build they can trust.
Rust CLI · Linux, macOS, Windows (WSL2) · MPL-2.0 · no telemetry
What the tool does
All documentation-
A series, not a fork branch
Each change is a plain diff with a small header: which engine family it targets, which upstream revision it expects, and what it touches. You can read the whole series in an afternoon and review a new patch without diffing two forks.
-
Reproducible by default
The lockfile records the upstream commit, the order of patches, and the hash of every source file the series rewrites.
bep verifyrebuilds the tree from those inputs and compares the result, so “works on my machine” stops being an argument. -
A build loop that fits a laptop
Applied patches are cached by content, so re-running the series after one edit touches one file. Dry runs show which hunks would land, incremental builds reuse object files, and the exit codes are stable enough to drive CI without parsing text.
Latest release
Release history2.8.1 is a patch release for the 2.8 line, published on 2026-10-09. It fixes two apply failures that only appeared with CRLF checkouts and makes bep doctor report the compiler it actually uses instead of the first one on PATH. There are no changes to the patch format.
bep verify --manifestnow prints one line per output file.- The cache moved to layout v3; the first run after upgrading re-fetches sources once.
- A stale lockfile is reported before the build starts, not after it fails.
At a glance
Version 2.8.1, 2026-10-09
Source archive: bep-2.8.1.tar.zst
Supported families: chromium (stable), gecko (preview)
Minimum Rust: 1.79
Release cadence: every three to four weeks
Quick start
Full walkthrough# build the CLI from the 2.8.1 source archive
cargo build --release --locked
install -m 0755 target/release/bep ~/.local/bin/bep
# create a series next to your build directory
bep init my-fork --family chromium --revision 8f2c41d9
cd my-fork
# fetch the pinned sources, apply the series, build, check
bep fetch
bep apply
bep build --target linux-x64 --jobs 12
bep verify
A first full Chromium-family build takes 40 to 90 minutes on a 12-core machine and needs about 90 GB of free disk. Later builds after a patch edit reuse the object cache and usually finish in under five minutes. The troubleshooting page covers the failures we see most often.
Documentation
Table of contents- Install
Requirements, build from source, upgrade and removal.
- Quick start
From an empty directory to a verified build.
- Patch format
Headers, ordering, conflicts, and the built-in catalogue.
- Configuration
Every key in
bep.toml, profiles and environment variables. - CLI reference
Commands, flags and exit codes.
- Troubleshooting
Symptoms, causes and fixes for apply and build failures.
Who it is for
The tool started inside a small extension studio that needed a repeatable engine build for a dozen machines, and it still optimises for that case. It is a good fit if you maintain browser extensions and need to test against a modified engine, if you reproduce a build someone else reported, or if you teach engine internals and want students to start from a small, readable patch set. It is not a distribution of any engine, and it ships no engine binaries.