Skip to content
Open
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
3493ac7
docs: add reth v2.4.0 + JIT design note (working doc, drop before PR)
davidtaikocha Jul 14, 2026
65f8b6d
chore(deps): bump reth to v2.4.0, vendor reth-optimism-trie, toolchai…
davidtaikocha Jul 14, 2026
264ea09
fix: migrate primitives/evm/consensus to reth v2.4.0 APIs
davidtaikocha Jul 14, 2026
85830e1
fix: migrate block/payload/rpc/node/cli to reth v2.4.0 APIs
davidtaikocha Jul 14, 2026
9d6880d
fix: migrate tests and prover paths to reth v2.4.0 APIs
davidtaikocha Jul 14, 2026
516b708
feat(evm): support revmc JIT execution on reth v2.4.0
davidtaikocha Jul 14, 2026
b5bcc8f
chore: clippy msrv 1.95, vendor lint fixes, docs refresh; drop workin…
davidtaikocha Jul 14, 2026
31adb60
refactor: simplify reth v2.4.0/JIT branch diff
davidtaikocha Jul 15, 2026
7e70482
fix(evm): restore pre-2.4.0 zk gas charging for OOG-halting steps
davidtaikocha Jul 15, 2026
5aa1746
chore: vendored MIT notice, LLVM script hardening, BAL tripwire, doc …
davidtaikocha Jul 15, 2026
0402ca0
fix(cli): honor --jit on the re-execute command
davidtaikocha Jul 15, 2026
ba1f3c1
docs: exempt vendor/** from the mandatory documentation policy
davidtaikocha Jul 15, 2026
057c363
build(deps): un-vendor reth-optimism-trie, bump reth to f2eecc6
davidtaikocha Jul 15, 2026
796f2b3
build(deps): bump revmc to 520462a4, reth f2eecc6's locked revision
davidtaikocha Jul 15, 2026
d37f57b
fix(cli): honor JIT debug dumps on re-execute
Jul 15, 2026
42b26ae
refactor: simplify consensus error helper and live-collector test fix…
davidtaikocha Jul 15, 2026
0dc7866
build(deps): pin reth-optimism-trie to OP #21766's merge commit
davidtaikocha Jul 16, 2026
7f50977
fix(node): migrate legacy proof-history databases and survive boundar…
davidtaikocha Jul 16, 2026
5de2772
Merge remote-tracking branch 'origin/main' into feat/reth-v2.4.0-jit
davidtaikocha Jul 17, 2026
25fd647
build: regenerate Cargo.lock for the 1.3.0 workspace version
davidtaikocha Jul 17, 2026
e71e8f1
fix(node): keep --jit.blocking from enabling JIT on its own
davidtaikocha Jul 17, 2026
27170a2
fix(payload): fail closed when the Amsterdam fork is active
davidtaikocha Jul 17, 2026
b98ef6a
fix(consensus): reject Amsterdam headers and EIP-7928 fields at import
davidtaikocha Jul 17, 2026
0b29488
fix(evm): finalize the journal when transaction execution errors
davidtaikocha Jul 18, 2026
ab46614
fix(rpc): reject unsupported engine fields
Jul 20, 2026
543e4f1
fix(node): require collected blocks to extend the stored proof-histor…
davidtaikocha Jul 23, 2026
bdfe424
docs(block): state the pre-checked-result invariant on commit_transac…
davidtaikocha Jul 23, 2026
64be05c
ci(repo): fail CI when Cargo.lock resolves multiple reth revisions
davidtaikocha Jul 23, 2026
d4d6c01
docs(repo): mark the LLVM installer as CI/Docker-only provisioning
davidtaikocha Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/scripts/install_llvm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -eo pipefail

os=${1:?usage: install_llvm.sh <ubuntu> [version]}
version=${2:-22}
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

case "$os" in
ubuntu)
sudo "$script_dir/install_llvm_ubuntu.sh" "$version"
;;
*)
echo "unsupported OS: $os" >&2
exit 1
;;
esac
31 changes: 31 additions & 0 deletions .github/scripts/install_llvm_ubuntu.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bash
set -eo pipefail

version=${1:-22}
bins=(clang llvm-config lld ld.lld FileCheck)

# The official installer needs this package on Debian bookworm but not on newer distributions.
apt-get update -qq
apt-get install -y --no-install-recommends \
lsb-release wget gnupg ca-certificates
apt-get install -y --no-install-recommends software-properties-common 2>/dev/null || true

llvm_installer=$(mktemp)
wget -qO "$llvm_installer" https://apt.llvm.org/llvm.sh
# Pin the upstream installer so CI and Docker builds fail loudly when it changes; review the new
# script before updating this hash.
echo "9474ecd78b52aba6e923976b1e9773f5613027cc7e237b9956986cb536e02a36 $llvm_installer" | sha256sum -c -
chmod +x "$llvm_installer"
"$llvm_installer" "$version" all
rm -f "$llvm_installer"

for bin in "${bins[@]}"; do
if ! command -v "$bin-$version" &>/dev/null; then
echo "Error: $bin-$version not found after install" >&2
exit 1
fi
ln -fs "$(command -v "$bin-$version")" "/usr/bin/$bin"
Comment thread
davidtaikocha marked this conversation as resolved.
done

echo "LLVM $version installed:"
llvm-config --version
38 changes: 34 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ jobs:
name: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- uses: rui314/setup-mold@v1
- run: .github/scripts/install_llvm.sh ubuntu
- uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.94.0
toolchain: 1.95.0
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
Expand All @@ -40,7 +41,7 @@ jobs:
- uses: rui314/setup-mold@v1
- uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.94.0
toolchain: 1.95.0
components: rustfmt
- uses: extractions/setup-just@v2
with:
Expand All @@ -54,9 +55,10 @@ jobs:
steps:
- uses: actions/checkout@v5
- uses: rui314/setup-mold@v1
- run: .github/scripts/install_llvm.sh ubuntu
- uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.94.0
toolchain: 1.95.0
components: clippy
- uses: Swatinem/rust-cache@v2
with:
Expand All @@ -65,3 +67,31 @@ jobs:
with:
just-version: 1.5.0
- run: just clippy

check-no-jit:
name: check (no default features)
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v5
- uses: rui314/setup-mold@v1
# LLVM is deliberately not installed: this proves the interpreter-only build stays free
# of the LLVM toolchain dependency.
- uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.95.0
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- run: cargo check --locked -p alethia-reth-bin --no-default-features

llvm-arm64:
name: llvm install (linux/arm64)
runs-on: ubuntu-24.04-arm
timeout-minutes: 30
steps:
- uses: actions/checkout@v5
# Guards the Docker build on ARM64 hosts: apt.llvm.org omits arm64 packages for some
# Debian releases (bookworm has no arm64 LLVM 22), which only surfaces when installing
# on an ARM64 machine. Runs the same installer inside the Docker base distribution.
- run: docker run --rm -v "$PWD/.github/scripts:/scripts:ro" debian:trixie /scripts/install_llvm_ubuntu.sh
7 changes: 4 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ Alethia-Reth is a Rust execution client for the Taiko protocol, built atop Parad

## Key Technologies

- Language: Rust (`1.93.1` toolchain via `rust-toolchain.toml` / `justfile`)
- Framework: Reth v2.0.0 APIs (`reth_node_builder`, `reth_rpc`, `reth_engine_primitives`, etc.)
- Language: Rust (`1.95.0` toolchain via `rust-toolchain.toml` / `justfile`)
- Framework: Reth v2.4.0 APIs (`reth_node_builder`, `reth_rpc`, `reth_engine_primitives`, etc.)
- Optional revmc JIT execution (`jit` feature, on by default in the binary; needs LLVM 22)
- Target protocol: Taiko rollup networks
- Build & dependency manager: Cargo + `just`

Expand All @@ -25,7 +26,7 @@ Alethia-Reth is a Rust execution client for the Taiko protocol, built atop Parad
├── cli CLI wrapper (`TaikoCli`)
├── consensus Beacon consensus extensions
├── db Taiko-specific tables & codecs
├── evm EVM config, handlers, execution helpers
├── evm EVM config, handlers, execution helpers, revmc JIT integration
├── payload Payload builder service
├── primitives Shared types (engine, payload attributes)
├── rpc Taiko RPC (eth / engine / auth)
Expand Down
Loading
Loading