Skip to content

Build from Source

This guide walks through building Thunder from a local checkout of the repository. Make sure you have the prerequisites installed before continuing.

Terminal window
git clone https://github.com/thunder-edge/runtime.git
cd deno-edge-runtime

A debug build compiles faster and includes debug symbols, which is ideal for day-to-day development:

Terminal window
cargo build

The binary is written to target/debug/thunder.

A release build enables full optimizations. Use this when benchmarking or producing a binary for deployment:

Terminal window
cargo build --release

The binary is written to target/release/thunder.

The repository includes a Makefile with common shortcuts:

Terminal window
# Debug build
make build
# Release build (also copies binary to ./thunder)
make release
# Release build + copy to /usr/local/bin
make install

During development you can skip the explicit build step and run Thunder in one command:

Terminal window
cargo run -- start

Any arguments after -- are forwarded to the Thunder binary.

The project defines several Cargo aliases in .cargo/config.toml for running tests:

AliasDescription
cargo test-devFast local loop — runs workspace tests but skips long E2E and stress tests.
cargo test-fullFull Rust test suite across the entire workspace.
cargo test-server-e2eRuns only the server E2E tests (useful when working on ingress or admin paths).

Thunder depends on rusty_v8, which bundles the V8 JavaScript engine. On the first build, Cargo downloads a prebuilt V8 static library from the rusty_v8 releases mirror. If a prebuilt binary is not available for your platform, V8 will be compiled from source, which can take a significant amount of time (30 minutes or more depending on your hardware). Subsequent builds reuse the cached artifact and are much faster.