chore(levm): remove the revm comparison - #7090
Conversation
Unowned since 2026-03-02 and superseded by benchmarkoor and the newPayload latency metrics. Removes the crate, its lockfile plumbing, the two CI jobs and the profiling targets that drove it.
|
🤖 Claude Code ReviewThis confirms the PR description's claim: Review: PR #7090 — chore(levm): remove the revm comparison benchmarkThis is a clean, well-scoped deletion PR. I verified the removal is complete and non-destructive: Verified correctness of the deletion:
Assessment:
I have no findings to raise — the PR does what it says and the deletion is complete and consistent. Automated review by Claude (Anthropic) · sonnet · custom prompt |
Greptile SummaryRemoves the unused LEVM-versus-REVM benchmark infrastructure and the dormant REVM rerun path from EF state testing.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| tooling/ef_tests/state/runner/mod.rs | Simplifies EF test orchestration by removing REVM-only execution, rerun, cache, and CLI paths. |
| tooling/ef_tests/state/report.rs | Removes REVM comparison data and output while preserving LEVM test summaries and failure reporting. |
| tooling/ef_tests/state/utils.rs | Replaces the REVM-oriented initial-state helper with a narrower genesis-backed store helper. |
| tooling/ef_tests/state/Makefile | Removes REVM test and profiling targets while retaining LEVM EF-test profiling. |
| crates/vm/levm/Makefile | Removes targets and configuration belonging to the deleted synthetic benchmark crate. |
| .github/workflows/pr-main_levm.yaml | Removes the non-gating LEVM-versus-REVM benchmark job. |
| tooling/ef_tests/state/Cargo.toml | Removes the REVM dependency after all REVM-specific code paths were deleted. |
Reviews (2): Last reviewed commit: "chore(ef_tests): remove the revm compari..." | Re-trigger Greptile
🤖 Codex Code ReviewNo findings. This PR is a straight removal of LEVM-vs-REVM benchmark tooling and its CI wiring, not a change to execution, consensus, trie, RLP, or transaction-validation paths. I checked the touched integration points in Residual risk is limited to process/observability: this drops benchmark automation and local benchmark helpers, so future LEVM performance regressions will be less visible unless replaced elsewhere. I don’t see a correctness or security problem in the code that remains. Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
🤖 Kimi Code Review
This PR removes the LEVM vs REVM comparison benchmark suite. The changes are primarily deletions of CI configuration, Makefiles, and the benchmark crate itself. Summary of changes:
Review feedback: The deletion appears complete and consistent across all configuration files. No dangling references remain. Minor note: In No security vulnerabilities, memory safety issues, or consensus-critical code changes are present in this PR (it's purely a cleanup/removal of testing infrastructure). The PR is ready for merge assuming the removal of these benchmarks is intentional from a product perspective. Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt |
The levm-vs-revm re-run is skipped by every CI and standard target (all pass --summary, which returns before it), and it maps Amsterdam to SpecId::OSAKA, so its mismatches are uninterpretable on the fork under development. EELS fixtures are the authority. Drops the revm dependency, the runner, the comparison report and the report cache that only that path wrote.
🤖 Kimi Code Review
This PR removes the LEVM vs REVM comparison benchmarking suite. The changes are consistent and complete: Review Summary:
No issues found. The PR is ready for merge. Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt |
🤖 Codex Code Review
No code-correctness or security bugs stood out in the Rust changes themselves. The only executable Rust delta is the Residual risk: this PR intentionally removes REVM differential reruns and the LEVM-vs-REVM benchmark workflows, so it reduces two useful safety nets for opcode/gas/account-update regressions, even though it does not change EVM execution logic directly. Verification note: I could not complete a full Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
🤖 Claude Code ReviewReview: PR 7090 — remove the revm comparison (levm bench + EF-tests re-run)Summary: This is a pure deletion PR (71 additions, ~15k deletions) removing the levm-vs-revm microbenchmark crate and the EF state-test revm re-run/comparison path. I traced every non-mechanical file change ( Correctness
Consistency / build hygiene
Notes
No issues found. The removal is thorough, self-consistent, and the one non-mechanical change (the doc-comment fix) is a genuine improvement. Automated review by Claude (Anthropic) · sonnet · custom prompt |
Motivation
Removes both halves of the levm-vs-revm comparison: the microbenchmark crate and the EF state-test re-run. Neither is used, and EELS fixtures are the authoritative oracle for correctness, as benchmarkoor and newPayload latency are for performance.
The microbenchmark is unowned and its output is noise.
decode_hexrefactor). Everything since is a version bump, an actions bump, or a compile-fix from someone changing an API it happened to call.tooling/ef_tests/state/Makefile'sflamegraph-benchmarksandsamply-benchmarksreferencedREPETITIONSandBENCH_*, which that file never defines, so they were passing empty iteration counts. Dead, not just unused.benchjob inpr-main_levm.yamlbuilt revm and levm in release on every levm PR and every main push, then uploaded nothing, posted nothing and gated nothing.The EF state-test re-run never runs, and would be misleading if it did.
--summary(run-evm-ef-tests-ci,test-levm,test-levm-nostd-crypto), andrun_ef_testsreturns on the summary path before reachingre_run_with_revm. The re-run only fired locally, after a test had already failed, to annotate a report.revm_runner.rsmappedFork::AmsterdamtoSpecId::OSAKA"until revm adds AMSTERDAM SpecId", so on the fork under active development every mismatch it reported was comparing two different rulesets.revm_runner.rspurely to keep it compiling.Description
Benchmark:
crates/vm/levm/bench/revm_comparison/, including its separateCargo.lockCargo.tomlexcludeentry, which existed only for this cratecargo tree/cargo metadata --lockedlines in the rootMakefile, and its lockfile entry indocs/developers/release-process.md.github/workflows/pr_perf_levm.yamland.github/scripts/compare_levm_and_revm_benchmarks.shbenchjob inpr-main_levm.yamlrevm-comparison,build-revm-comparison,render-benches,flamegraph-levm-*andsamply-run-benchtargets incrates/vm/levm/Makefile, and the bench flamegraph/samply targets intooling/ef_tests/state/MakefileEF state tests:
runner/revm_runner.rsandrunner/revm_db.rs, the--revmflag,run_with_revmandre_run_with_revmComparisonReport,TestReRunReport, and the mismatch sections of the reportDisplayreport::cache,report::load): only the revm re-run ever wrote it, and with no writer left a stalelevm_ef_tests_cache.jsonwould silently skip a whole runEFTestRunnerError::VMExecutionMismatchandInternalError::ReRunInternal, both unreachable without the revm pathrevmdependency, which takes 454 lines out oftooling/Cargo.locktest-revmtarget and the revm halves offlamegraph-run-ef-tests/samply-run-ef-testsload_initial_state_revmbecameload_initial_state_store, since its only remaining caller (post_state_root) discarded theRevmStateand used just the store and block hash.levm EF test profiling (
flamegraph-run-ef-tests,samply-run-ef-tests) is untouched.Verified:
cargo clippy --workspace --all-targets -- -D warningsandcargo fmt --checkclean in the tooling workspace,make check-cargo-lockpasses, and both Makefiles still parse.Checklist
STORE_SCHEMA_VERSION(crates/storage/lib.rs) if the PR includes breaking changes to theStorerequiring a re-sync. N/A: deletion only.