Browser Engine Patcher

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.

Start with the quick start Install 2.8.1 Latest 2.8.1 · 2026-10-09

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 verify rebuilds 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 history

2.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 --manifest now 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.

Read the 2.8.1 notes · 2.8.0

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.