All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
42.0.0 - 2026-07-16
- (amsterdam) glam devnet-6 gas accounting & EIP alignment (#3782)
- make max refund quotient configurable (#3757)
- (inspect) finalize journal on error to prevent EIP-2929 warm set leak (#3780)
- faillible refund (#3758)
- (revme) separate bytecode from account in test state (#3803)
- clarify EIP-7702 regular-gas GasId names (#3725)
41.0.0 - 2026-06-11
- updated the following local packages: revm-bytecode, revm-state, revm-database-interface, revm-context-interface, revm-context, revm-database, revm-interpreter, revm-precompile
20.0.3 - 2026-05-26
- Bake EIP-8037 CPSB into gas params (#3714)
20.0.2 - 2026-05-22
- updated the following local packages: revm-database-interface, revm-context-interface, revm-context, revm-database, revm-interpreter, revm-precompile
20.0.1 - 2026-05-21
- (eip8037) remove dead refill_amount tracking (#3699)
20.0.0 - 2026-05-19
- (eip8037) Amsterdam bal-devnet-7 (#3667)
- propagate InitialAndFloorGas to validate_against_state_and_deduct_caller (#3577)
- (precompile) halt with PrecompileOOG when precompile over-spends gas (#3639)
- re-add PrecompileOutput::gas_refunded (#3574)
- (handler) skip reimburse_caller and reward_beneficiary when fee charge is disabled (#3559)
- (interpreter) cache init_code_hash in CreateInputs for inspector reuse (#3664)
- Revert "refactor: use
Cowfor warm precompile addresses (#3652)" (#3653) - use
Cowfor warm precompile addresses (#3652) - reject nonce-max senders before execution (#3531)
- audit #[allow] attributes (#3611)
- backport v107 release notes from branch (#3617)
- enable and fix clippy::missing_const_for_fn (#3592)
- avoid cloning precompiles on warmup (#3586)
- (interpreter) separate instruction and gas tables (#3561)
- thread reservoir through OOG constructors (#3580)
- pass reservoir into
first_frame_input(#3578) - rm op-revm (migrated to ethereum-optimism/optimism) (#3568)
18.1.0 - 2026-04-17
- propagate InitialAndFloorGas to validate_against_state_and_deduct_caller (#3577)
- re-add PrecompileOutput::gas_refunded (#3574)
- pass reservoir into
first_frame_input(#3578)
18.0.0 - 2026-04-10
- add EIP-8037 / TIP-1016 state gas support (#3406)
- add CallInput::as_bytes (#3515)
- add crate-level re-exports for all revm-* dependencies (#3507)
- Part of amsterdam devnet3 EIP updates (#3438)
- move EIP-8037 gas cap validation into validate_initial_tx_gas (#3552)
- remove option for known bytecode (#3532)
- use AnyError for PrecompileError::Fatal and EVMError::Custom (#3502)
- (handler) rename misleading
underflowvariable tosuccess(#3486)
17.0.0 - 2026-03-04
- bump revm-database-interface to v10.0.0
16.0.0 - 2026-03-02
- (gas_params) add configurable EIP-7702 auth refund (#3366)
- (handler) respect is_fee_charge_disabled in calculate_caller_fee (#3401)
- (handler) remove Default for EthPrecompiles and EthInstructions (#3434)
- remove unused alloy-provider dev-dependency (#3423)
- [breaking] add logs to Revert and Halt variants of ExecutionResult (#3424)
- [breaking] add ResultGas struct to ExecutionResult (#3413)
- [breaking] flatten Bytecode (#3375)
- remove GPL mention and update gmp feature comments (#3383)
- use fixed bytes hashmaps from alloy-core (#3358)
- (handler) extract duplicate ContextError handling (#3312)
- (revm-handler) add ItemOrResult::map_item (alias map_frame) (#3320)
15.0.0 - 2026-01-15
- add
new_ooghelpers to InterpreterResult, CallOutcome, CreateOutcome, and FrameResult (#3309) - new gas params, tx initial gas and codedeposit (#3260)
- move GasParams to Cfg (#3229)
- Gas params (#3132)
- (create) Implement Cache for CreateInputs::created_address (#3218)
- JournaledAccount sload/sstore (#3201)
- Restrict Database::Error. JournaledAccountTr (#3199)
- (create) Fix CreateInputs::created_address Cache invalidation (#3222)
- apply improvements from ai-bot labeled PRs (#3297)
- fix typos, grammar errors, and improve documentation consistency (#3294)
- happy new year, 2026 licence (#3272)
- description of
Handler::validate_against_state_and_deduct_callershould match responsibilities (#3256) - (handler) eliminate code duplication in transaction validation (#3243)
- (handler) validate_initial_tx_gas takes &mut Evm (#3235)
- (clippy) remove unused imports (#3227)
- optimize vector initialization using size hints (#3200)
- apply_auth_list helper fn (#3187)
- (fmt) merge all imports (#3184)
14.1.0 - 2025-11-14
- updated the following local packages: revm-context-interface, revm-context, revm-database, revm-interpreter
14.0.0 - 2025-11-10
- merge v98 versions bumps (#3155)
12.0.2 - 2025-11-10
- updated the following local packages: revm-database, revm-context
12.0.1 - 2025-11-07
- updated the following local packages: revm-primitives, revm-context, revm-bytecode, revm-state, revm-database-interface, revm-context-interface, revm-database, revm-interpreter, revm-precompile
12.0.0 - 2025-10-30
- JournaledAccount, a nice way to update and track changes (#3086)
- dont load access list immediately (#3116)
- hook up Cfg::memory_limit (#3129)
- (op) use helper function in validate against state (#3069)
- remove redundant alloy-eip7702 from handler dev-dependencies (#3105)
11.2.0 - 2025-10-17
- Optional Bytecode in CallInput (#3110)
11.1.2 - 2025-10-15
- updated the following local packages: revm-bytecode, revm-state, revm-database-interface, revm-context-interface, revm-context, revm-database, revm-interpreter
11.1.1 - 2025-10-15
- resize short addresses bitvec instead of reallocating (#3083)
- (handler) extract duplicate gas price validation (#3045)
11.1.0 - 2025-10-09
- helper calculate_caller_fee (#3040)
11.0.0 - 2025-10-07
- Support bubbling up first precompile error messages (#2905)
- in JumpTable use Bytes instead of BitVec (#3014)
- add transaction index to batch execution error handling (#3000)
- allow EIP-7623 to be disabled (#2985)
- send bytecode with call input (#2963)
- (revme) ef blockchain tests cli (#2935)
- Apply spelling corrections from PRs #2926, #2915, #2908 (#2978)
- interpreter_result_mut should return mutable reference (#2941)
- FrameStack mark push/end_init as unsafe (#2929)
- changelog update for v87 (#3056)
- add boundless (#3043)
- helper function gas_balance_spending (#3030)
- helper caller_initial_modification added (#3032)
- Frame use From in place of Into (#3036)
- EvmTr and InspectorEvmTr receive all/all_mut fn (#3037)
- add ensure_enough_balance helper (#3033)
- prealloc few frames (#2965)
- Fix infinite recursion in EthPrecompiles PrecompileProvider methods (#2962)
- add SECURITY.md (#2956)
- update
EthFrame::invalidvisibility (#2947) - remove unused generic from validate_tx_env and fix call site (#2946)
- cargo update (#2930)
- (handler) provide
&CallInputstoPrecompileProvider::run(#2921)
10.0.1 - 2025-09-23
- updated the following local packages: revm-context-interface, revm-context, revm-interpreter
10.0.0 - 2025-08-23
- (fusaka) Add PrecompileId (#2904)
9.0.1 - 2025-08-12
- updated the following local packages: revm-primitives, revm-bytecode, revm-state, revm-context-interface, revm-database, revm-precompile, revm-database-interface, revm-context, revm-interpreter
9.0.0 - 2025-08-06
- short address for journal cold/warm check (#2849)
- gastable, record static gas in Interpreter loop (#2822)
- fix renamed functions for system_call (#2824)
- Align naming of SystemCallEvm function to ExecuteEvm (#2814)
- nonce changed is not reverted in journal if fail due to insufficient balance (#2805)
- update README.md (#2842)
- rm commented code (#2839)
- (benches) clean up criterion callsites (#2833)
- improve ExtBytecode hash handling (#2826)
- fix run-tests.sh (#2801)
- reuse global crypto provide idea (#2786)
- add rust-version and note about MSRV (#2789)
- Add dyn Crypto trait to PrecompileFn (#2772)
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
8.1.0 - 2025-07-23
- add a way for precompiles to revert (#2711)
- fully deprecate serde-json (#2767)
- system call should have 30M gas limit (#2755)
- gas deduction with
disable_balance_check(#2699)
- change gas parameter to immutable reference (#2702)
- remove State bound from JournalTr in Handler::Evm (#2715)
8.0.3 - 2025-07-14
- simplify gas calculations by introducing a used() method (#2703)
8.0.2 - 2025-07-03
- document external state transitions for EIP-4788 and EIP-2935 (#2678)
- minor fixes (#2686)
- fix in pre_execution.rs about nonce bump for CREATE (#2684)
8.0.1 - 2025-06-30
- optional_eip3541 (#2661)
- cargo clippy --fix --all (#2671)
- use TxEnv::builder (#2652)
- fix copy-pasted inner doc comments (#2663)
7.0.1 - 2025-06-20
- call stack_frame.clear() at end (#2656)
7.0.0 - 2025-06-19
- remove EOF (#2644)
- configurable contract size limit (#2611) (#2642)
- (precompile) rug/gmp-based modexp (#2596)
- change blob_max_count to max_blobs_per_tx (#2608)
- add optional priority fee check configuration (#2588)
- lints handler inspector interpreter (#2646)
- bump all deps (#2647)
- re-use frame allocation (#2636)
- store coinbase address separately to avoid cloning warm addresses in the common case (#2634)
- rename
transactmethods (#2616)
6.0.0 - 2025-06-06
- add with_caller for system_transact (#2587)
- (Osaka) EIP-7825 tx limit cap (#2575)
- expand timestamp/block_number to u256 (#2546)
- transact multi tx (#2517)
- tag v75 revm v24.0.1 (#2563) (#2589)
- (docs) add lints to database-interface and op-revm crates (#2568)
- unify calling of journal account loading (#2561)
- ContextTr rm *_ref, and add *_mut fn (#2560)
- (cfg) add tx_chain_id_check fields. Optimize effective gas cost calc (#2557)
- simplify Interpreter loop (#2544)
5.0.1 - 2025-05-31
- unify calling of journal account loading
5.0.0 - 2025-05-22
- make blob max number optional (#2532)
- add TxEnvBuilder::build_fill (#2536)
- make crates.io version badge clickable (#2526)
- fix clippy (#2523)
- Storage Types Alias (#2461)
4.1.0 - 2025-05-07
Dependency bump
4.0.0 - 2025-05-07
- system_call switch order of inputs, address than bytes (#2485)
- (Osaka) disable EOF (#2480)
- skip cloning of call input from shared memory (#2462)
- Add a custom address to the CreateScheme. (#2464)
- remove spec id verification on
apply_eip7702_auth_list(#2466) - (Handler) merge state validation with deduct_caller (#2460)
- replace input Bytes and refactored code where required (#2453)
- (tx) Add Either RecoveredAuthorization (#2448)
- (EOF) Changes needed for devnet-1 (#2377)
- Move SharedMemory buffer to context (#2382)
- Add clones to FrameData (#2482)
- Add Bytecode address to Interpreter (#2479)
- copy edit The Book (#2463)
- bump dependency version (#2431)
- fixed broken link (#2421)
- backport from release branch (#2415) (#2416)
- (lints) revm-context lints (#2404)
3.0.0 - 2025-04-09
- support for system calls (#2350)
2.0.0 - 2025-03-28
- cache precompile warming (#2317)
- provide more context to precompiles (#2318)
- Add JournalInner (#2311)
- broken disable balance check (#2286)
- remove outdated TODO comments (#2325)
- add EIP-170 contract code size limit tests (#2312)
- Remove LATEST variant from SpecId enum (#2299)
- add unit test for EIP-3860 initcode size limit (#2302)
1.0.0 - 2025-03-24
- updated the following local packages: revm-database, revm-precompile
1.0.0-alpha.7 - 2025-03-21
- Remove PrecompileError from PrecompileProvider (#2233)
- allow reuse of API for calculating initial tx gas for tx (#2215)
- remove wrong
&mutand duplicated spec (#2276) - Add custom instruction example (#2261)
- use AccessListItem associated type instead of AccessList (#2214)
1.0.0-alpha.6 - 2025-03-16
- (docs) MyEvm example and book cleanup (#2218)
1.0.0-alpha.5 - 2025-03-12
- add debug to precompiles type (#2193)
1.0.0-alpha.4 - 2025-03-11
- decouple first_frame_input from inspector (#2180)
1.0.0-alpha.3 - 2025-03-10
- updated the following local packages: revm-interpreter, revm-precompile
1.0.0-alpha.2 - 2025-03-10
- op-revm cleanup and few docs (#2156)
- JournalTr, JournalOutput, op only using revm crate (#2155)
- rename transact_previous to replay, move EvmTr traits (#2153)
- docs and cleanup (rm Custom Inst) (#2151)
- move mainnet builder to handler crate (#2138)
- add immutable gas API to LoopControl (#2134)
- PrecompileErrors to PrecompileError (#2103)
- re-export all crates from
revm(#2088)
1.0.0-alpha.1 - 2025-02-16
- Split Inspector trait from EthHandler into standalone crate (#2075)
- Introduce Auth and AccessList traits (#2079)
- Evm structure (Cached Instructions and Precompiles) (#2049)
- Add essential EIP-7756 tracing fields (#2023)
- Context execution (#2013)
- EthHandler trait (#2001)
- (EIP-7623) adjuct floor gas check order (main) (#1991)
- (EIP-7840) Add blob schedule to execution client cfg (#1980)
- (eip7702) apply latest EIP-7702 changes, backport from v52 (#1969)
- (EIP-7623) Increase calldata cost. backport from rel/v51 (#1965)
- simplify Transaction trait (#1959)
- align Block trait (#1957)
- expose precompile address in Journal, DB::Error: StdError (#1956)
- Make Ctx journal generic (#1933)
- removed create address collision check (#1928)
- Restucturing Part7 Handler and Context rework (#1865)
- (examples) generate block traces (#895)
- implement EIP-4844 (#668)
- (Shanghai) All EIPs: push0, warm coinbase, limit/measure initcode (#376)
- Migrate
primitive_types::U256toruint::Uint<256, 4>(#239) - Introduce ByteCode format, Update Readme (#156)
- (Inspector) call handler functions (#2026)
- deduplicate validate_initial_tx_gas API (#2006)
- (eof) dont run precompile on ext delegate call (#1964)
- fix typos (#620)
- set alpha.1 version
- backport op l1 fetch perf (#2076)
- relax trait req in EthPrecompiles::default (#2071)
- add default generics for InterpreterTypes (#2070)
- API cleanup (#2067)
- Add helpers with_inspector with_precompile (#2063)
- Add bytecode hash in interpreter #1888 (#1952)
- Make inspector use generics, rm associated types (#1934)
- fix comments and docs into more sensible (#1920)
- Rename PRAGUE_EOF to OSAKA (#1903)
- Bump new logo (#1735)
- (README) add rbuilder to used-by (#1585)
- added simular to used-by (#1521)
- add Trin to used by list (#1393)
- Fix typo in readme (#1185)
- Add Hardhat to the "Used by" list (#1164)
- Add VERBS to used by list (#1141)
- license date and revm docs (#1080)
- (docs) Update the benchmark docs to point to revm package (#906)
- (docs) Update top-level benchmark docs (#894)
- clang requirement (#784)
- Readme Updates (#756)
- Logo (#743)
- book workflow (#537)
- add example to revm crate (#468)
- Update README.md (#424)
- add no_std to primitives (#366)
- revm-precompiles to revm-precompile
- Bump v20, changelog (#350)
- typos (#232)
- Add support for old forks. (#191)
- revm bump 1.8. update libs. snailtracer rename (#159)
- typo fixes
- fix readme typo
- Big Refactor. Machine to Interpreter. refactor instructions. call/create struct (#52)
- readme. debuger update
- Bump revm v0.3.0. README updated
- readme
- Add time elapsed for tests
- readme updated
- Include Basefee into cost calc. readme change
- Initialize precompile accounts
- Status update. Taking a break
- Merkle calc. Tweaks and debugging for eip158
- Replace aurora bn lib with parity's. All Bn128Add/Mul/Pair tests passes
- TEMP
- one tab removed
- readme
- README Example simplified
- Gas calculation for Call/Create. Example Added
- readme usage
- README changes
- Static gas cost added
- Subroutine changelogs and reverts
- Readme postulates
- Spelling
- Restructure project
- First iteration. Machine is looking okay