Skip to content

Commit 2d6bb21

Browse files
dmitry123rakitaDaniPopessergey-melnychukRimeeeeee
authored
feat(migrate-to-v82): migrating revm to v82 version (#32)
* chore(test): preserve order of fields in json fixtures (bluealloy#2541) * feat: transact multi tx (bluealloy#2517) * chore: remove default capacity on journal reverts * wip multi tx exec support * wip * API changes * wip * fix compilation * some cleanup,introduce additional bench * cleanup and docs * fix op-revm, add transact-multi bench * bump criterion * add balance incr/decr and simplify calls to journal * add transact_multi bench * add journal entry for deduct_caller fn * cleanup * rm ResultAndState and fix tests * clippy * cheatcode example fix * rm cleanup after transact * cleaup on inner journal * cleanup on storage slot warm marking * cleanup unneded structs * fix discard bug * typo * fix benches * remove cloning of tx * rm with_capacity * clone journal * use mem::take * skip cloning * remove history entries * rm println * drain journal * bump testdata suite * use replay in bench * fix tests * cleanup and refactor, call discard_tx always * ci: remove concurrency from bench (bluealloy#2542) * feat: expand timestamp/block_number to u256 (bluealloy#2546) * chore: use sha3 by default (bluealloy#2545) * refactore: Add InstructionContext instead of Host and Interpreter (bluealloy#2548) * refac: extract `InstructionContext` for `Interpreter` and `Host` * refac: move `InstructionContext` out of main loop * refac: extract `instructions::context` mod * chore: drop redundant `Host` bound * remove additional ref to context * cleanup, remove some Host restraints * small cleanup --------- Co-authored-by: sergey-melnychuk <[email protected]> * feat: Config blob basefee fraction (bluealloy#2551) * feat: Config blob basefee fraction * fix test * chore: add dot to trigger ci (bluealloy#2552) * chore: simplify Interpreter loop (bluealloy#2544) * chore: check end of interpreter loop with ptr * Use Optional action * cleanup * feat: added TxEnv::new_bench() add util function (bluealloy#2556) * bench: add gas-cost-estimator selected bytecodes (bluealloy#2555) * bench: add gas-cost-estimator selected bytecodes * add gas cost estimation to codspeed bench * chore(cfg): add tx_chain_id_check fields. Optimize effective gas cost calc (bluealloy#2557) * cfg: add tx_chain_id_check fields. Optimize effective gas cost calc * cleanup logic * chore: ContextTr rm *_ref, and add *_mut fn (bluealloy#2560) * refactor: unify calling of journal account loading (bluealloy#2561) * docs: fix for eth tests in revme.md (bluealloy#2559) * docs: temporary fix for eth tests in revme.md * Update book/src/revme.md --------- Co-authored-by: rakita <[email protected]> * chore(docs): context crate lints (bluealloy#2565) * chore(docs): context crate lints * fix doc check * chore(docs): add lints to database-interface and op-revm crates (bluealloy#2568) * feat(database): Implement DatabaseRef for State (bluealloy#2570) * feat(database): Implement DatabaseRef for State * Fix clippy * Adjust to review * feat(Osaka): EIP-7825 tx limit cap (bluealloy#2575) * feat(Osaka): EIP-7825 tx limit cap * use const value * chore: Avoid clone before converting ref BundleAccount to CacheAccount (bluealloy#2574) * chore: Avoid clone before converting ref BundleAccount to CacheAccount * Bring back the none ref conversion * chore(op-revm): impl type alias for Default OpEvm (bluealloy#2576) * chore: support functions for eip7918 (bluealloy#2579) * wip blob * chore: support functions for eip7918 * deps: explicitly bump `auto_impl` (bluealloy#2583) * chore: use iter_batched for revme benches (bluealloy#2584) * fix(multitx): Add local flags for create and selfdestruct (bluealloy#2581) * fix(multitx): Add local flags for create and selfdestruct * fix tests * add test for selfdestruct * add selfdestruct crate test * fix zepter * feat: add with_caller for system_transact (bluealloy#2587) * bump: tag v75 revm v24.0.1 (bluealloy#2563) (bluealloy#2589) * refactor: unify calling of journal account loading * bump: tag v75 revm v24.0.1 * chore: release (bluealloy#2577) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * bump: tag v76 revm v25.0.0 (bluealloy#2590) * feat(InspectEvm): add inspect_finalize method for tx+inspector with state (bluealloy#2593) * add of inspect_finalize * add comment --------- Co-authored-by: Toki <[email protected]> * feat: add optional priority fee check configuration (bluealloy#2588) * feat: add optional priority fee check configuration * fmt * fmt and cleanup * chore: onlyy skip priority fee check * refactor: use local variable for priority fee check disable flag * clippy * nits * feat: added instruction_result fn in LoopControl trait (bluealloy#2595) * added instruction_result fn * smol fmt * and then * default impl * feat: enable P256 in Osaka (bluealloy#2601) * feat: add basic tests for modexp (bluealloy#2603) * feat: change blob_max_count to max_blobs_per_tx (bluealloy#2608) * feat: add Inspector implementation for either::Either (bluealloy#2614) * feat: add Inspector implementation for either::Either Implements Inspector trait for either::Either<L, R> where both L and R implement Inspector. This enables conditional inspector usage where the specific inspector type can be chosen at runtime while maintaining the same interface. Changes: - Add either dependency to inspector Cargo.toml - Create either.rs with Inspector implementation that forwards all method calls to the appropriate variant (Left or Right) - Add either module to lib.rs - Include comprehensive tests verifying the Either type works correctly with the Inspector trait Closes bluealloy#2607 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * fix: resolve clippy warning for default_constructed_unit_structs Remove unnecessary .default() call on unit struct DummyInsp in test. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * chore: run zepter --------- Co-authored-by: Claude <[email protected]> * chore: rename `transact` methods (bluealloy#2616) * refactor: rename transact -> transact_one, transact_finalize -> transact * renames * default generic * inspect_tx * ResultAndState * fix * chore: build less stuff in codspeed ci (bluealloy#2620) * chore: make CallInput default 0..0 (bluealloy#2621) * perf: faster JumpTable bits lookup (bluealloy#2618) * perf: improve JumpTable access * use doc comment formatter * fix serialization via manual impl * fix clippy * nits - rename cached->table_ptr * chore(grammar): comments for workflows (bluealloy#2602) * Update zepter.yaml * Update release-plz.yml * feat: add clz opcode (bluealloy#2598) * feat: add clz opcode * chore: add tests for clz * fix: gate clz behind osaka Co-authored-by: rakita <[email protected]> * chore: fix count_opcodes test * fix: add special case for zero clz * fix: another special case because of default ruint leading_zeros behavior * fix: use proper specid in test * remove redundant stuff --------- Co-authored-by: rakita <[email protected]> * chore(tests): extend test for is_valid jumptable (bluealloy#2622) * ci: rm op-revm from bench (bluealloy#2624) * perf: optimize warm_preloaded_addresses reset (bluealloy#2625) * perf: optimize warm_preloaded_addresses reset * opt warm_precompiles * back to clone_from * check len == len * dbg assert eq * feat(precompile): rug/gmp-based modexp (bluealloy#2596) * feat: rug/gmp-based powmod * chore: use correct imports in gmp modexp * chore: add feature for gmp * Update README.md Co-authored-by: Dan Cline <[email protected]> * fix: set ABI explicitly for gmp install * fix feature propagation * fix: use gmp not on i686 runners --------- Co-authored-by: rakita <[email protected]> Co-authored-by: rakita <[email protected]> * fix: change account state to None if NotExisting on insert_account_info (bluealloy#2630) * fix: change account state if NotExisting on insert_account_info * add update_info and update_account_state to DbAccount * chore: build less benchmark binaries (bluealloy#2629) * perf: store coinbase address separately to avoid cloning warm addresses in the common case (bluealloy#2634) * special case coinbase address warming * nits * fix: compare_or_save_testdata sig (bluealloy#2637) * perf: re-use frame allocation (bluealloy#2636) * wip * fix * fix: use Default instead of uninit * fix * chore: clippy * perf: try removing allocs from Default * chore: clippy * new: OutFrame abstraction over a maybe-uninit slot * perf: make SharedMemory::empty not allocate * inline * perf: do the stack thing * rename * perf: share the stack in the evm context * perf: initialize first frame the same way * rm inlines * jump_inner inline always * simplify frame init * cleanup move frame stack outside of run_exec_loop fun * cleanup inspector trait * add box around frame_stack items so we dont allocate a lot more of it * box included for no_std * unbox the init closure * WIP * move frame to evmtr * wip * clippy * fix inspection * some cleanup * cleanup * fix inspector test * cleaup, renames and moving of structs * renames --------- Co-authored-by: DaniPopes <[email protected]> * chore: claud.md (bluealloy#2638) * test: bump alloydb test (bluealloy#2640) * chore: claud.md * test: bump alloydb test * chore: lints for revm-database (bluealloy#2639) * feat(osaka): modexp assume minimal base/mod length of 32 (bluealloy#2613) (bluealloy#2643) * feat: configurable contract size limit (bluealloy#2611) (bluealloy#2642) * feat: configurable contract size limit (bluealloy#2611) * feat(devnet2): double contract size limit * set double value * tests * add initcode limit of 73kb * cleanup * clippy * chore: include local context as generic (bluealloy#2645) * chore: include local context as generic * fmt * feat: remove EOF (bluealloy#2644) * feat: remove EOF * remove more of eof code * fix test * remove tracer section and fn depth * docs * inline functions * clippy doc * chore: bump all deps (bluealloy#2647) * chore: bump all deps * propagate serde * docs: lints handler inspector interpreter (bluealloy#2646) * docs: lints for revm-handler * docs: lints for interpreter and inspector * docs for instructions * fmt * Add missing documentation to interpreter crate Added comprehensive documentation to resolve all clippy missing-docs warnings: - Module documentation for instructions modules - Function documentation for all instruction implementations - Struct field documentation for Interpreter - Trait and method documentation for interpreter types - Associated type documentation - Debug implementation for EthInterpreter All 154+ clippy warnings have been resolved to achieve 0 warnings. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * Fix compilation error in TracerEip3155 Debug implementation Remove references to deleted fields 'section' and 'function_depth' from the Debug implementation, matching the changes from commit 1c0d770 that removed EOF support. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> --------- Co-authored-by: Claude <[email protected]> * feat: add fallible conversion from OpHaltReason to HaltReason (bluealloy#2649) * chore: lints for examples (bluealloy#2650) * chore: release (bluealloy#2641) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * chore: bump v77 (bluealloy#2651) * fix: call stack_frame.clear() at end (bluealloy#2656) * chore: release (bluealloy#2657) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * bump: tag v78 revm v26.0.1 (bluealloy#2658) * fix: implement `PartialEq` for `JumpTable` correctly (bluealloy#2654) * fix: implement PartialEq for JumpTable correctly * fix: implement PartialEq for JumpTable correctly * fmt * chore: fix typo (bluealloy#2660) * feat: optional_eip3541 (bluealloy#2661) * feat: optional_eip3541 * fmt * feat: implement `Transaction` for `Either` (bluealloy#2662) * feat: impl tx for either * fix bounds --------- Co-authored-by: Matthias Seitz <[email protected]> * docs: fix copy-pasted inner doc comments (bluealloy#2663) * refactor: use TxEnv::builder (bluealloy#2652) * chore: lints for examples * feat: Use TxEnv builder * wip optx builder * builder for OpTx * compile * fix parts of it * revert runner changes * fix clippy * refactor: statetest runner cleanup (bluealloy#2665) * refactor: statetest runner cleanup * move function to statetest-types * clippy * docs: inline documentation of revm top modules (bluealloy#2666) This unifies the documentation of all revm crates into the `revm` documentation. Main benefit is the searchbox of the `revm` crate actually search into all crates. * test(op/handler): verify caller account is touched by zero value transfer (bluealloy#2669) * chore: cargo clippy --fix --all (bluealloy#2671) * chore: cargo +nightly clippy --fix --all * clippy second try * clippy in tests * feat: implement Database traits for either::Either (bluealloy#2673) * feat: implement Database traits for either::Either Adds Database, DatabaseCommit, and DatabaseRef trait implementations for the either::Either type, allowing it to be used as a database abstraction that can hold one of two different database types. * zepter * feat: blake2 avx2 (bluealloy#2670) * feat: blake2 avx2 * cleanup * clippy * cleanup * clippy * runtime check * test * test * test * fix compilation * cleanup * chore: release (bluealloy#2659) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * bump: tag v79 revm v27.0.0 (bluealloy#2680) * fix: OpTransactionBuilder dont override envelope (bluealloy#2681) * fix: OpTransactionBuilder dont override envelope * relax builder for known tx type * bump: v80 revm v27.0.1 (bluealloy#2683) * bump: v80 revm v27.0.1 * main changelog * docs: fix in pre_execution.rs about nonce bump for CREATE (bluealloy#2684) * feat: add custom precompile with journal access example (bluealloy#2677) * feat: add custom precompile with journal access example This example demonstrates how to create a custom precompile that can access and modify the journal (state). Key features: - CustomPrecompileProvider that extends EthPrecompiles - Precompile at address 0x0100 with journal access - Storage read/write operations using journal.sload/sstore - Balance transfers using journal.transfer - Proper gas accounting and error handling The example shows how to integrate custom precompiles with existing Ethereum precompiles and provides clear documentation on usage patterns. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * follow up * fix: resolve compilation errors and apply clippy suggestions in custom precompile journal example - Fix Handler::mainnet() API usage by using MainnetHandler::default() - Add missing imports for ContextSetters, EVMError, and InvalidTransaction - Fix output.data() pattern matching from optional to direct access - Add proper type annotations with error type alias - Correct mutable borrowing patterns for database access - Apply clippy suggestions for inline format args - Ensure clean compilation with no warnings 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * style: apply cargo fmt to custom precompile journal example - Format multi-line println\! statements to single lines where appropriate - Ensure consistent code formatting across the codebase 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> --------- Co-authored-by: Claude <[email protected]> * docs: minor fixes (bluealloy#2686) * docs: document external state transitions for EIP-4788 and EIP-2935 (bluealloy#2678) * docs(book): document external state transitions for EIP-4788 and EIP-2935 * Update SUMMARY.md * docs: add rustdoc about external state transitions for EIP-2935 and EIP-4788 * Update system_call.rs * Update system_call.rs * Update external_state_transitions.md * chore: add PartialEq u8 (bluealloy#2688) * fix(inspector): revert pointer before calling step_end (bluealloy#2687) * fix(inspector): revert pointer before calling step_end * test that opcode will not panic * bump: tag v81 revm v27.0.1 (bluealloy#2689) * docs: fix minor typo (bluealloy#2672) * docs: bump changelog for v81 (bluealloy#2691) * fix typo: Rename is_created_globaly to is_created_globally (bluealloy#2692) * Update inner.rs * Update entry.rs * test: add comprehensive tests for TxEnvBuilder (bluealloy#2690) * test: add comprehensive tests for TxEnvBuilder Add comprehensive test coverage for TxEnvBuilder including: - Valid configurations for all transaction types (Legacy, EIP-2930, EIP-1559, EIP-4844, EIP-7702) - Error cases for missing required fields - build_fill() method auto-filling behavior - Transaction type derivation logic - Contract creation transactions - Custom transaction types - Method chaining verification Total: 24 new tests covering all build() and build_fill() scenarios 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * cargo fmt --------- Co-authored-by: Claude <[email protected]> * chore: use c-kzg precompute value 8 (bluealloy#2698) * fix(Inspector): call_end not calle on first call fast return (bluealloy#2697) * chore: incorrect StorageKey and StorageValue parameter order in burntpix benchmark (bluealloy#2704) * refactor: simplify gas calculations by introducing a used() method (bluealloy#2703) * refactor: simplify gas calculations by introducing a used() method * fix(gas): update used() method to prevent underflow by using saturating_sub --------- Co-authored-by: megakabi <[email protected]> * chore: release (bluealloy#2682) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * bump: tag v82 revm v27.0.3 (bluealloy#2710) * feat(migrate-to-v82): fix fairblock address, disable cancun fork support in e2e tests --------- Co-authored-by: rakita <[email protected]> Co-authored-by: DaniPopes <[email protected]> Co-authored-by: sergey-melnychuk <[email protected]> Co-authored-by: Ishika Choudhury <[email protected]> Co-authored-by: Johns Gresham <[email protected]> Co-authored-by: cakevm <[email protected]> Co-authored-by: 0xDmtri <[email protected]> Co-authored-by: Roman Krasiuk <[email protected]> Co-authored-by: Dan Cline <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Toki <[email protected]> Co-authored-by: Toki <[email protected]> Co-authored-by: Udoagwa Franklin <[email protected]> Co-authored-by: Soubhik Singha Mahapatra <[email protected]> Co-authored-by: Arsenii Kulikov <[email protected]> Co-authored-by: Matthias Seitz <[email protected]> Co-authored-by: Claude <[email protected]> Co-authored-by: Samuel Onoja <[email protected]> Co-authored-by: Coder <[email protected]> Co-authored-by: rakita <[email protected]> Co-authored-by: Beta <[email protected]> Co-authored-by: bernard-wagner <[email protected]> Co-authored-by: Wodann <[email protected]> Co-authored-by: Afounso Souza <[email protected]> Co-authored-by: Quentin Sabah <[email protected]> Co-authored-by: Emilia Hane <[email protected]> Co-authored-by: simonchen-supra <[email protected]> Co-authored-by: VolodymyrBg <[email protected]> Co-authored-by: Kendra Karol Sevilla <[email protected]> Co-authored-by: leopardracer <[email protected]> Co-authored-by: Micke <[email protected]> Co-authored-by: jakevin <[email protected]> Co-authored-by: megakabi <[email protected]>
1 parent faa313b commit 2d6bb21

File tree

301 files changed

+14292
-9563
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

301 files changed

+14292
-9563
lines changed

.config/zepter.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ workflows:
1313
"propagate-feature",
1414
# These are the features to check:
1515
"--features=std,serde",
16-
# Do not try to add a new section into `[features]` of `A` only because `B` expose that feature. There are edge-cases where this is still needed, but we can add them manually.
16+
# Do not try to add a new section into `[features]` of `A` only because `B` exposes that feature. There are edge-cases where this is still needed, but we can add them manually.
1717
"--left-side-feature-missing=ignore",
18-
# Ignore the case that `A` it outside of the workspace. Otherwise it will report errors in external dependencies that we have no influence on.
18+
# Ignore the case that `A` is outside of the workspace. Otherwise it will report errors in external dependencies that we have no influence on.
1919
"--left-side-outside-workspace=ignore",
2020
"--show-path",
2121
"--quiet",

.github/workflows/bench.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@ on:
99
env:
1010
CARGO_TERM_COLOR: always
1111

12-
concurrency:
13-
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
14-
cancel-in-progress: true
15-
1612
jobs:
1713
codspeed:
1814
runs-on: ubuntu-latest
@@ -29,7 +25,7 @@ jobs:
2925
with:
3026
tool: cargo-codspeed
3127
- name: Build the benchmark target(s)
32-
run: cargo codspeed build --profile profiling --workspace
28+
run: cargo codspeed build --profile profiling --workspace --exclude '*example*' --exclude op-revm
3329
- name: Run the benchmarks
3430
uses: CodSpeedHQ/action@v3
3531
with:

.github/workflows/ethereum-tests.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ jobs:
4141

4242
- name: Run tests
4343
run: |
44-
cross run --target ${{matrix.target}} --profile ${{ matrix.profile }} -p revme -- statetest \
44+
cross run --target ${{matrix.target}} --profile ${{ matrix.profile }} \
45+
${{ matrix.target != 'i686-unknown-linux-gnu' && '--features gmp' || '' }} \
46+
-p revme -- statetest \
4547
legacytests/Cancun/GeneralStateTests/ \
4648
legacytests/Constantinople/GeneralStateTests/
4749
./scripts/run-tests.sh clean cross ${{ matrix.profile }} ${{ matrix.target }}

.github/workflows/release-plz.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ jobs:
2929
git add Cargo.lock
3030
git commit -m "Update Cargo.lock" || echo "No changes to commit"
3131
# This will run the release-plz action
32-
# The action dectect API breaking changes detection with cargo-semver-checks.
33-
# Semver is auto incremneted based on this
32+
# The action detect API breaking changes detection with cargo-semver-checks.
33+
# Semver is auto incremented based on this
3434
# A PR with the semver bump is created with a new release tag and changelog
3535
# if you configure the cargo registry token, the action will also publish the new version to crates.io
3636
- name: Run release-plz
@@ -39,4 +39,4 @@ jobs:
3939
command: release-pr
4040
env:
4141
# The admin of the repository with need to configure the following secrets:
42-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
42+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "legacytests"]
2+
path = legacytests
3+
url = https://github.com/ethereum/legacytests.git

CHANGELOG.md

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,142 @@
11
Because this is workspace with multi libraries, tags will be simplified, and with this document you can match version of project with git tag.
22

3+
# v82
4+
date 14.07.2025
5+
6+
Fix for inspector not calling `step_end`.
7+
8+
* `revm-context`: 8.0.2 -> 8.0.3 (✓ API compatible changes)
9+
* `revm-interpreter`: 23.0.1 -> 23.0.2 (✓ API compatible changes)
10+
* `revm-precompile`: 24.0.0 -> 24.0.1 (✓ API compatible changes)
11+
* `revm-handler`: 8.0.2 -> 8.0.3 (✓ API compatible changes)
12+
* `revm-inspector`: 8.0.2 -> 8.0.3 (✓ API compatible changes)
13+
* `revme`: 7.0.3 -> 7.0.4 (✓ API compatible changes)
14+
* `op-revm`: 8.0.2 -> 8.0.3 (✓ API compatible changes)
15+
* `custom_precompile_journal`: 0.1.0
16+
* `revm`: 27.0.2 -> 27.0.3
17+
* `revm-statetest-types`: 8.0.3 -> 8.0.4
18+
19+
# v81
20+
date: 03.07.2025
21+
22+
Fix inspector step_end panic for opcode fn.
23+
24+
* `revm-bytecode`: 6.0.0 -> 6.0.1 (✓ API compatible changes)
25+
* `revm-handler`: 8.0.1 -> 8.0.2 (✓ API compatible changes)
26+
* `revm-inspector`: 8.0.1 -> 8.0.2 (✓ API compatible changes)
27+
* `revme`: 7.0.2 -> 7.0.3 (✓ API compatible changes)
28+
* `custom_precompile_journal`: 0.1.0
29+
* `revm-state`: 7.0.0 -> 7.0.1
30+
* `revm-database-interface`: 7.0.0 -> 7.0.1
31+
* `revm-context-interface`: 8.0.0 -> 8.0.1
32+
* `revm-context`: 8.0.1 -> 8.0.2
33+
* `revm-database`: 7.0.0 -> 7.0.1
34+
* `revm-interpreter`: 23.0.0 -> 23.0.1
35+
* `revm`: 27.0.1 -> 27.0.2
36+
* `revm-statetest-types`: 8.0.2 -> 8.0.3
37+
* `op-revm`: 8.0.1 -> 8.0.2
38+
39+
# v80
40+
date 01.07.2025
41+
42+
Fix `build` and `build_fill` for OpTransactionBuilder
43+
44+
* `revm-context`: 8.0.0 -> 8.0.1 (✓ API compatible changes)
45+
* `revm-handler`: 8.0.0 -> 8.0.1 (✓ API compatible changes)
46+
* `revm-inspector`: 8.0.0 -> 8.0.1 (✓ API compatible changes)
47+
* `revm`: 27.0.0 -> 27.0.1 (✓ API compatible changes)
48+
* `op-revm`: 8.0.0 -> 8.0.1 (✓ API compatible changes)
49+
50+
# v79
51+
date: 01.07.2025
52+
53+
Fix for bytecode eq operation.
54+
55+
* `revm-bytecode`: 5.0.0 -> 6.0.0 (⚠ API breaking changes)
56+
* `revm-state`: 6.0.0 -> 7.0.0 (✓ API compatible changes)
57+
* `revm-database-interface`: 6.0.0 -> 7.0.0 (✓ API compatible changes)
58+
* `revm-context-interface`: 7.0.1 -> 8.0.0 (⚠ API breaking changes)
59+
* `revm-context`: 7.0.1 -> 8.0.0 (✓ API compatible changes)
60+
* `revm-interpreter`: 22.0.1 -> 23.0.0 (✓ API compatible changes)
61+
* `revm-precompile`: 23.0.0 -> 24.0.0 (✓ API compatible changes)
62+
* `revm-handler`: 7.0.1 -> 8.0.0 (⚠ API breaking changes)
63+
* `revm-inspector`: 7.0.1 -> 8.0.0 (✓ API compatible changes)
64+
* `revm`: 26.0.1 -> 27.0.0 (✓ API compatible changes)
65+
* `revm-statetest-types`: 8.0.1 -> 8.0.2 (✓ API compatible changes)
66+
* `revme`: 7.0.1 -> 7.0.2 (✓ API compatible changes)
67+
* `op-revm`: 7.0.1 -> 8.0.0 (⚠ API breaking changes)
68+
* `revm-database`: 6.0.0 -> 7.0.0
69+
70+
# v78
71+
date: 20.05.2025
72+
73+
Quick fix for not calling `frame_stack.clear()` https://github.com/bluealloy/revm/pull/2656
74+
75+
* `revm-context`: 7.0.0 -> 7.0.1 (✓ API compatible changes)
76+
* `revm-interpreter`: 22.0.0 -> 22.0.1 (✓ API compatible changes)
77+
* `revm-precompile`: 23.0.0 -> 23.0.1 (✓ API compatible changes)
78+
* `revm-handler`: 7.0.0 -> 7.0.1 (✓ API compatible changes)
79+
* `revm-inspector`: 7.0.0 -> 7.0.1
80+
* `revm`: 26.0.0 -> 26.0.1
81+
* `revm-statetest-types`: 8.0.0 -> 8.0.1
82+
* `revme`: 7.0.0 -> 7.0.1
83+
* `op-revm`: 7.0.0 -> 7.0.1
84+
85+
# v77
86+
date: 19.05.2025
87+
88+
Perf upgrade and support for osaka devnet-2 EIPs.
89+
90+
* `revm-primitives`: 19.2.0 -> 20.0.0 (⚠ API breaking changes)
91+
* `revm-bytecode`: 4.1.0 -> 5.0.0 (⚠ API breaking changes)
92+
* `revm-state`: 5.0.0 -> 6.0.0 (✓ API compatible changes)
93+
* `revm-database-interface`: 5.0.0 -> 6.0.0 (✓ API compatible changes)
94+
* `revm-context-interface`: 6.0.0 -> 7.0.0 (⚠ API breaking changes)
95+
* `revm-context`: 6.0.0 -> 7.0.0 (⚠ API breaking changes)
96+
* `revm-database`: 5.0.0 -> 6.0.0 (✓ API compatible changes)
97+
* `revm-interpreter`: 21.0.0 -> 22.0.0 (⚠ API breaking changes)
98+
* `revm-precompile`: 22.0.0 -> 23.0.0 (⚠ API breaking changes)
99+
* `revm-handler`: 6.0.0 -> 7.0.0 (⚠ API breaking changes)
100+
* `revm-inspector`: 6.0.0 -> 7.0.0 (⚠ API breaking changes)
101+
* `revm`: 25.0.0 -> 26.0.0 (⚠ API breaking changes)
102+
* `revm-statetest-types`: 7.0.0 -> 8.0.0 (✓ API compatible changes)
103+
* `revme`: 6.0.0 -> 7.0.0 (⚠ API breaking changes)
104+
* `op-revm`: 6.0.0 -> 7.0.0 (✓ API compatible changes)
105+
106+
107+
# v76
108+
date: 06.05.2025
109+
110+
Introduction of multi transaction.
111+
112+
* `revm-primitives`: 19.1.0 -> 19.2.0 (✓ API compatible changes)
113+
* `revm-bytecode`: 4.0.1 -> 4.1.0 (✓ API compatible changes)
114+
* `revm-state`: 4.0.1 -> 5.0.0 (⚠ API breaking changes)
115+
* `revm-database-interface`: 4.0.1 -> 5.0.0 (✓ API compatible changes)
116+
* `revm-context-interface`: 5.0.0 -> 6.0.0 (⚠ API breaking changes)
117+
* `revm-context`: 5.0.1 -> 6.0.0 (⚠ API breaking changes)
118+
* `revm-database`: 4.0.1 -> 5.0.0 (⚠ API breaking changes)
119+
* `revm-interpreter`: 20.0.0 -> 21.0.0 (⚠ API breaking changes)
120+
* `revm-precompile`: 21.0.0 -> 22.0.0 (✓ API compatible changes)
121+
* `revm-handler`: 5.0.1 -> 6.0.0 (⚠ API breaking changes)
122+
* `revm-inspector`: 5.0.1 -> 6.0.0 (⚠ API breaking changes)
123+
* `revm`: 24.0.1 -> 25.0.0 (✓ API compatible changes)
124+
* `revm-statetest-types`: 6.0.0 -> 7.0.0 (✓ API compatible changes)
125+
* `revme`: 5.1.1 -> 6.0.0 (⚠ API breaking changes)
126+
* `op-revm`: 5.0.1 -> 6.0.0 (⚠ API breaking changes)
127+
128+
# v75 tag
129+
date: 31.05.2025
130+
131+
Maintainance release.
132+
133+
* `revm-context`: 5.0.0 -> 5.0.1
134+
* `revm-handler`: 5.0.0 -> 5.0.1
135+
* `revm-inspector`: 5.0.0 -> 5.0.1
136+
* `revm`: 24.0.0 -> 24.0.1
137+
* `revm-statetest-type`: 5.0.0 -> 6.0.0
138+
* `op-revm`: 5.0.0 -> 5.0.1
139+
3140
# v74 tag
4141
date 23.05.2025
5142

CLAUDE.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
## Project Overview
6+
7+
REVM is a highly efficient Rust implementation of the Ethereum Virtual Machine (EVM). It serves both as:
8+
1. A standard EVM for executing Ethereum transactions
9+
2. A framework for building custom EVM variants (like Optimism's op-revm)
10+
11+
The project is used by major Ethereum infrastructure including Reth, Foundry, Hardhat, Optimism, Scroll, and many zkVMs.
12+
13+
## Build and Development Commands
14+
15+
### Essential Commands
16+
```bash
17+
# Build the project
18+
cargo build
19+
cargo build --release
20+
21+
# Run all tests
22+
cargo nexttest run --workspace
23+
24+
# Lint and format
25+
cargo clippy --workspace --all-targets --all-features
26+
cargo fmt --all
27+
28+
# Check no_std compatibility
29+
cargo check --target riscv32imac-unknown-none-elf --no-default-features
30+
31+
# Run Ethereum state tests
32+
cargo run -p revme statetest legacytests/Cancun/GeneralStateTests
33+
```
34+
35+
### Test Scripts
36+
```bash
37+
# Download and run ethereum tests
38+
./scripts/run-tests.sh
39+
40+
# Clean test fixtures and re-run
41+
./scripts/run-tests.sh clean
42+
43+
# Run with specific profile
44+
./scripts/run-tests.sh release
45+
```
46+
47+
## Architecture
48+
49+
The workspace consists of these core crates:
50+
51+
- **revm**: Main crate that re-exports all others
52+
- **revm-primitives**: Constants, primitive types, and core data structures
53+
- **revm-interpreter**: EVM opcode implementations and execution engine
54+
- **revm-context**: Execution context, environment, and journaled state
55+
- **revm-handler**: Execution flow control and call frame management
56+
- **revm-database**: State database traits and implementations
57+
- **revm-precompile**: Ethereum precompiled contracts
58+
- **revm-inspector**: Tracing and debugging framework
59+
- **op-revm**: Example of custom EVM variant (Optimism)
60+
61+
### Key Design Patterns
62+
63+
1. **Trait-based Architecture**: Core functionality is defined through traits, allowing custom implementations
64+
2. **Handler Pattern**: Execution flow is controlled through customizable handlers
65+
3. **no_std Support**: All core crates support no_std environments
66+
4. **Feature Flags**: Extensive use of feature flags for optional functionality
67+
68+
### Important Interfaces
69+
70+
1. **Database Trait** (`revm-database`): Defines how state is accessed
71+
2. **Inspector Trait** (`revm-inspector`): Hooks for transaction tracing
72+
3. **Handler Interface** (`revm-handler`): Customizable execution logic
73+
4. **Context** (`revm-context`): Manages execution state and environment
74+
75+
## Current Development Context
76+
77+
When working on the `frame_stack` branch, note that significant refactoring is happening around:
78+
- Frame and FrameData structures (moved from handler to context)
79+
- Execution loop simplification
80+
- Inspector trait cleanup
81+
82+
## Testing Strategy
83+
84+
1. Unit tests in each crate
85+
2. Integration tests using Ethereum official test suite
86+
3. Example projects demonstrating features
87+
4. Benchmarking with CodSpeed
88+
89+
When adding new features:
90+
- Ensure no_std compatibility
91+
- Add appropriate feature flags
92+
- Include tests for new functionality
93+
- Update relevant examples if needed

0 commit comments

Comments
 (0)