Commit 862ef51
feat(evm): support optional revmc JIT execution (#227)
* feat(evm): support optional revmc JIT execution
Pin revmc to the exact revision the reth pin locks (incl. the revmc#394
and #400 compiled-vs-interpreter divergence fixes) and wire it into the
Taiko EVM factory behind a workspace `jit` feature, on by default in the
binary. Compiled code runs only behind four AND-ed gates: the `jit`
build feature, the runtime `--jit`/`reth_jit` switch, the local
`with_jit_support()` opt-in (engine tree and payload builder only; RPC
execution stays interpreter-only), and an exhaustive fork allowlist that
keeps Unzen's zk-gas metering on per-opcode interpreter hooks. Inspected
execution always uses the disabled backend, and the wrapper drives the
JitEvm through TaikoEvmHandler so anchor and fee-share semantics are
preserved. `--jit.blocking` without `--jit` is gated off and now warns,
and the differential tests cover the LOG-memory and SELFDESTRUCT
builtin-forwarding classes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* ci(repo): provision LLVM 22 and cover interpreter-only builds
Install LLVM 22 through a sha256-pinned apt.llvm.org helper in the test
and clippy jobs and in the Docker build (bookworm has no arm64 LLVM 22,
so both image stages move to trixie). New jobs prove the
`--no-default-features` build stays LLVM-free and compile the
`cfg(not(feature = "jit"))` test targets, and an arm64 job runs the
installer inside the Docker base distribution. check_reth_pin.sh now
also fails on multiple revmc revisions, and the `.github/**`
paths-ignore is dropped so changes to these scripts run CI.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* docs(repo): document revmc JIT usage and pin invariants
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* docs(repo): steer developers away from the CI-only LLVM installer
The build section pointed developers at install_llvm.sh, whose own
header marks it CI/Docker-only because it force-overwrites the
/usr/bin LLVM symlinks. Document the versioned-package route (distro
llvm-22 or apt.llvm.org, then PATH) instead and say explicitly not to
run the helper on a developer machine.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* ci(repo): verify the revmc pin matches reth's locked revision
Counting revmc revisions only guards against a split graph; the
documented invariant is stronger — Alethia's revmc rev must equal the
one reth's own Cargo.lock pins at our reth revision, which nothing
enforces at build time because reth tracks revmc by branch. Fetch
reth's lockfile at the pinned rev and compare, failing closed on
mismatch, a missing revmc entry, or an unfetchable lockfile.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* docs(evm): design beacon root override integration
* docs(evm): plan beacon root override integration
* fix(evm): honor beacon root overrides
* chore(docs): remove superpowers planning artifacts
* fix(rpc): reject non-zero parent beacon block roots in attributes
A non-zero root from forkchoiceUpdated attributes was committed into
the built Unzen header, but getPayload's V1 payload + sidecar carry no
beacon-root field and convert_payload_to_block rebuilds Unzen headers
with the zero root, so the block failed every newPayload re-import
with a block-hash mismatch. Nothing filtered the field on the V2
route. Fail closed instead, at engine attribute validation and again
in TaikoPayloadBuilderAttributes::try_new (the constructor every
payload job passes through); zero and absent roots keep round-tripping
and the pending-block BlockOverrides.beacon_root path is unaffected.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: David <cai@Davids-MacBook-Pro.local>1 parent 479fe5b commit 862ef51
30 files changed
Lines changed: 1602 additions & 105 deletions
File tree
- .github
- scripts
- workflows
- bin/alethia-reth
- src
- crates
- block
- src
- cli/src
- evm
- src
- zk_gas
- node
- src
- payload/src/builder
- primitives/src/payload
- rpc/src
- engine
- eth/auth
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
8 | 17 | | |
9 | 18 | | |
10 | | - | |
11 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
12 | 50 | | |
13 | | - | |
14 | | - | |
15 | | - | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
16 | 55 | | |
17 | 56 | | |
18 | 57 | | |
19 | | - | |
| 58 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
7 | | - | |
8 | 6 | | |
9 | 7 | | |
10 | 8 | | |
| |||
17 | 15 | | |
18 | 16 | | |
19 | 17 | | |
20 | | - | |
| 18 | + | |
21 | 19 | | |
22 | 20 | | |
| 21 | + | |
23 | 22 | | |
24 | 23 | | |
25 | 24 | | |
| |||
56 | 55 | | |
57 | 56 | | |
58 | 57 | | |
| 58 | + | |
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
| |||
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
28 | | - | |
| 29 | + | |
29 | 30 | | |
30 | 31 | | |
31 | 32 | | |
| |||
0 commit comments