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.
16.0.0-alpha.2 - 2025-02-22
- move all dependencies to workspace (#2092)
16.0.0 - 2025-02-16
- 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)
- (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)
- Make Ctx journal generic (#1933)
- Restucturing Part7 Handler and Context rework (#1865)
- (interpreter) impl Clone for Stack (#1820)
- restructuring Part6 transaction crate (#1814)
- Merge validation/analyzis with Bytecode (#1793)
- restructure Part2 database crate (#1784)
- project restructuring Part1 (#1776)
- introducing EvmWiring, a chain-specific configuration (#1672)
- make macro crate-agnostic (#1802)
- backport op l1 fetch perf (#2076)
- add default generics for InterpreterTypes (#2070)
- Check performance of gas with i64 #1884 (#2062)
- Bump licence year to 2025 (#2058)
- relax halt reason bounds (#2041)
- remove duplicate instructions (#2029)
- align crates versions (#1983)
- Add bytecode hash in interpreter #1888 (#1952)
- Make inspector use generics, rm associated types (#1934)
- use MemoryOOG (#1941)
- fix comments and docs into more sensible (#1920)
- Move CfgEnv from context-interface to context crate (#1910)
- implement serde for interpreter (#1909)
- make ExtBytecode pointer private (#1904)
- fix typos (#1868)
- (primitives) replace HashMap re-exports with alloy_primitives::map (#1805)
- refactor -copy common code (#1799)
- add ReentrancySentryOOG for SSTORE (#1795)
- simplify SuccessOrHalt trait bound (#1768)
15.2.0 - 2025-02-11
- revm v19.4.0 tag v54
15.1.0 - 2025-01-13
- (EIP-7623) adjuct floor gas check order (#1990)
15.0.0 - 2024-12-26
14.0.0 - 2024-11-06
- bump alloy-eip7702 and remove
Parity
re-export (#1842)
13.0.0 - 2024-10-23
- updated the following local packages: revm-primitives
12.0.0 - 2024-10-17
- updated the following local packages: revm-primitives
11.0.0 - 2024-10-17
- updated the following local packages: revm-primitives
10.0.3 - 2024-09-26
- updated the following local packages: revm-primitives
10.0.2 - 2024-09-18
- make clippy happy (#1755)
10.0.1 - 2024-08-30
- Bump new logo (#1735)
10.0.0 - 2024-08-29
- (eip7702) Impl newest version of EIP (#1695)
9.0.0 - 2024-08-08
- (EOF) add evmone test suite (#1689)
- check for typos in CI (#1686)
- (EOF) Add non-returning CALLF/JUMPF checks (#1663)
- (EOF) EOF Validation add code type and sub container tracker (#1648)
- (EOF) implement std::error::Error trait for EofValidationError and EofError (#1649)
- (interpreter) derive traits on FunctionStack (#1640)
- add DATACOPY to OpCode::modifies_memory (#1639)
- (EOF) returning to non-returning jumpf, enable valition error (#1664)
- (EOF) Validate code access in stack (#1659)
- (eof) deny static context in EOFCREATE (#1644)
- improve
InstructionResult
documentation (#1673) - Add EOF Layout Fuzz Loop to
revme bytecode
(#1677) - (eof) Add opcodes that expand memory (#1665)
- (clippy) 1.80 rust clippy list paragraph ident (#1661)
- avoid cloning original_bytes (#1646)
- use
is_zero
forU256
andB256
(#1638) - fix some typos & remove useless Arc::clone (#1621)
- (eof) avoid some allocations (#1632)
- bump versions bcs of primitives (#1631)
8.0.0 - 2024-07-16
- (eip7702) Add tests and fix some bugs (#1605)
- (EOF) MIN_CALLEE_GAS light failure, static-mode check (#1599)
7.0.0 - 2024-07-08
- (Precompiles) Throw fatal error if c-kzg is disabled (#1589)
- add bytecode_address from CallInputs to Contract during construction. (#1568)
- support selfdestruct for dummyhost (#1578)
- (Prague) Add EIP-7702 (#1565)
- (EOF) disallow ExtDelegateCall to legacy bytecode (#1572)
- (EOF) Add target address expansion checks (#1570)
- (eof) ExtDelegateCall caller/target switch (#1571)
- (README) add rbuilder to used-by (#1585)
- use const blocks (#1522)
- fix compile for alloydb (#1559)
- replace AccessList with alloy version (#1552)
- replace U256 with u64 in BLOCKHASH (#1505)
6.0.0 - 2024-06-20
- (EOF) Put EOF bytecode behind an Arc (#1517)
- (EOF) EXTCODECOPY,EXTCODESIZE,EXTCODEHASH eof support (#1504)
- add helpers for working with instruction tables (#1493)
- (EOF) change oob behavior of RETURNDATALOAD and RETURNDATACOPY (#1476)
- (EOF) EIP-7698 eof creation transaction (#1467)
- adjust gas-costs for EIP-2935 BLOCKHASH (#1422)
- add Opcode::modifies_memory back (#1421)
- (EOF) Add CALLF/JUMPF stack checks (#1417)
- (EOF) remove TXCREATE (#1415)
- (eof) fixture 2 tests (#1550)
- (eof) output gas for eofcreate (#1540)
- (EOF) set CallOrCreate result in EOFCREATE (#1535)
- (EOF) target needed for EOFCREATE created address (#1536)
- (EOF) ext*call return values (#1515)
- (EOF) Remove redundunt ext call gas cost (#1513)
- (EOF) add DATACOPY copy gas (#1510)
- (EOF) extstaticcall make static (#1508)
- (EOF) jumpf gas was changes (#1507)
- (EOF) panic on empty input range, and continue exec after eofcreate (#1477)
- (eof) EOFCREATE spend gas and apply 63/64 rule (#1471)
- (stack) pop with five items was not correct (#1472)
- (EOF) returncontract immediate is one byte (#1468)
- (Interpreter) wrong block number used (#1458)
- (interpreter) avoid overflow when checking if mem limit reached (#1429)
- blockchash for devnet-0 (#1427)
- replace TransactTo with TxKind (#1542)
- simplify Interpreter serde (#1544)
- (interpreter) use U256::arithmetic_shr in SAR (#1525)
- pluralize EOFCreateInput (#1523)
- added simular to used-by (#1521)
- Removed .clone() in ExecutionHandler::call, and reusing output buffer in Interpreter (#1512)
- (revme) add new line in revme EOF printer (#1503)
- remove old deprecated items (#1489)
- (interpreter) use max gas limit in
impl Default for Interpreter
(#1478) - (interpreter) optimisation for BYTE, SHL, SHR and SAR (#1418)
- Revert "Revert "feat: implement EIP-2935 (#1354)" (#1424)" (#1426)
- Revert "feat: implement EIP-2935 (#1354)" (#1424)
- (EOF) rename extcall opcode/names (#1416)
- point to gas! in Gas::record_cost (#1413)
- pop_address should use crate scope (#1410)
- Remove Host constrain from calc_call_gas (#1409)
5.0.0 - 2024-05-12
- implement EIP-2935 (#1354)
- parse opcodes from strings (#1358)
- (interpreter) add helpers for spending all gas (#1360)
- add helper methods to CallInputs (#1345)
- (revm) make
ItemOrResult
serializable (#1282) - add flag to force hashbrown usage (#1284)
- EOF (Ethereum Object Format) (#1143)
- (interpreter) derive Eq for InterpreterAction (#1262)
- (interpreter) remove SPEC generic from gas calculation functions (#1243)
- (interpreter) test Host object-safety, allow
dyn Host
in instructions (#1245)
- add Trin to used by list (#1393)
- refactor lints (#1386)
- remove unused file (#1379)
- (interpreter) branch less in as_usize_or_fail (#1374)
- re-use num_words in gas::cost_per_word (#1371)
- (interpreter) rewrite gas accounting for memory expansion (#1361)
- remove bounds check in DUP, SWAP/EXCHANGE (#1346)
- don't clone bytes in
Bytecode::bytes
(#1344) - shrink OpCodeInfo and add more methods (#1307)
- (interpreter) rename some macros (#1304)
- (interpreter) remove EOF branch in CODE{SIZE,COPY} (#1308)
- fix some warnings (#1305)
- (interpreter) rename wrapping_* opcodes (#1306)
- Add the modifies_memory macro (#1270)
- (interpreter) use
pop_top!
where possible (#1267)
4.0.0 - 2024-04-02
- add tests for shift instructions (#1254)
- derive serde for OpCode, improve implementations (#1215)
- (interpreter) expose mutable access methods on stack and memory (#1219)
- use uint macro & fix various small things (#1253)
- move div by zero check from smod to i256_mod (#1248)
- (interpreter) unbox contract field (#1228)
- (interpreter) keep track of remaining gas rather than spent (#1221)
- (interpreter) don't run signextend with 31 too (#1222)
3.4.0 - 2024-03-19
- (interpreter) export utility macros (#1203)
- add convert_boxed and insert_boxed for InstructionTable (#1194)
- optional nonce check (#1195)
3.3.0 - 2024-03-08
- (interpreter) OpCode struct constants (#1173)
3.2.0 - 2024-03-08
- (interpreter) use already-computed sign in SAR (#1147)
- (interpreter) factor out jump logic (#1146)
- (interpreter) evaluate instruction table constructor at compile time (#1140)
3.1.0 - 2024-02-22
- bump c-kzg, add portable feature, make it default (#1106)
- replace tuple in sstore return with struct (#1115)
- (db) Set instruction result at outcome insert (#1117)
3.0.0 - 2024-02-17
- rename and pass optimism-default-handler to revm-primitives (#1098)
- (precompile) use
Bytes
in precompile functions (#1085) - Add memory offset (#1032)
- license date and revm docs (#1080)
2.1.0 - 2024-02-12
- (interpreter) relax
make_boxed_instruction_table::FN
toFnMut
(#1076)
2.0.0 - 2024-02-07
Iterpreter will not be called in recursive calls but would return Action ( CALL/CREATE) that will be executed by the main loop.
- tweeks for v4.0 revm release (#1048)
- add
BytecodeLocked::original_bytecode
(#1037) - (op) Ecotone hardfork (#1009)
- EvmBuilder and External Contexts (#888)
- add asm-keccak feature (#972)
- add some conversions to InstructionResult (#910)
- implement Default for InstructionResult (#878)
Canyon
hardfork behindoptimism
feature flag (#871)- Loop call stack (#851)
- (cfg) optionally disable beneficiary reward (#834)
- (interpreter) add more helper methods to memory (#794)
- derive more traits (#745)
- add methods to
CreateInput
for calculating created address (#793)
- (Interpreter) is_revert should call is_revert (#1007)
- cast overflow in 32-bits OS (#978)
- dont calculate initcode keccak on CREATE (#969)
- (ci) Workflow Touchups (#901)
- safer stack (#879)
- (interpreter) Stack
push_slice
fix and dup with pointers (#837)
- helper functions around Env (#1057)
- (Execution) Granular handles create/call,call_return,insert_call_outcome (#1024)
- (Interpreter) Split calls to separate functions (#1005)
- expose InstructionResult getters in Interpreter result (#1002)
- (Inspector) add CallOutcome to call/call_end (#985)
- fix serde std flags for no-std build (#987)
- (Inspector) Add CreateOutcome in create/create_end return (#980)
- (log) use alloy_primitives::Log (#975)
- enhance readability (#968)
- (interpreter) refactor sstore_cost (#974)
- (interpreter) improve enum naming (#962)
- (interpreter) consistency in all_results_are_covered() (#961)
- (interpreter) local return_error! macro (#956)
- (interpreter) simplify the logic of calc.new_cost() (#939)
- (interpreter) fix the name of the macro referenced by record_memory() (#926)
- (interpreter) conditionally enable
optional_beneficiary_reward
(#925) - fix case for CreateInitCodeSizeLimit error (#896)
- simplify use statements (#864)
- (interpreter) use the constants from primitives (#861)
- review safety comments (#811)
- rewrite
Stack::push_slice
to allow arbitrary lengths (#812) - make context memory pub (#831)
- refactor main return to handle (#808)
- (SharedMemory) small refactor; tests (#806)
- use
array::from_fn
inmake_instruction_table
(#809) - make memory-limit private (#796)
- Instruction table (#759)
- Shared memory between calls (#673)
- Fix typos (#790)
- document everything, dedup existing docs (#741)
date 02.10.2023
Migration to alloy primitive types.
Full git log:
- af4146a - feat: Alloy primitives (#724) (15 hours ago)
- 1f86e45 - chore(deps): bump proptest from 1.2.0 to 1.3.1 (#763) (22 hours ago) <dependabot[bot]>
date: 28.09.2023
Summary:
- Cancun support:
- EIP-7516: BLOBBASEFEE opcode
- EIP-4844: Shard Blob Transactions
- EIP-1153: Transient storage opcodes
- EIP-5656: MCOPY - Memory copying instruction
- Rename
SHA3
toKECCAK256
, this can potentially break some tracers. - Refactor opcodes and Interpreter dispatch loop. Better performance.
- optimize stack usage for recursive
call
andcreate
programs. This brings down the native stack usage as calls are in recursion.
Full git log:
- f79d0e1 - feat: Optimism execution changes (#682) (16 hours ago)
- d03dfcb - Improve wording and fix typos (#749) (25 hours ago)
- 2c556c0 - refactor: say "warm" instead of "hot" (#754) (25 hours ago)
- 8206193 - feat: add "kzg" as a separate feature (#746) (2 hours ago)
- 516f62c - perf(interpreter): remove dynamic dispatch from all instructions (#739) (5 days ago)
- 26af13e - EIP-7516: BLOBBASEFEE opcode (#721) (5 days ago)
- 36e71fc - fix: dont override instruction result (#736) (6 days ago)
- d926728 - perf: refactor interpreter internals and cleanup (#582) (6 days ago)
- fa13fea - feat: implement EIP-4844 (#668) (11 days ago)
- 190f90e - Never inline the prepare functions (#712) (2 weeks ago)
- 7eacc3a - chore: implement
Default
for other databases (#691) (3 weeks ago) - 616cc7e - chore(cfg): convert chain_id from u256 to u64 (#693) (3 weeks ago)
- a95a298 - chore: accept byte slice as input (#700) (3 weeks ago)
- f6c9c7f - chore: deprecate
RefDBWrapper
(#696) (3 weeks ago) - f2929ad - chore(deps): bump proptest-derive from 0.3.0 to 0.4.0 (#652) (4 weeks ago) <dependabot[bot]>
- 37b0192 - perf(interpreter): improve i256 instructions (#630) (4 weeks ago)
- 214e65d - chore(interpreter): improve gas calculations (#632) (5 weeks ago)
- 6b55b9c - feat(
interpreter
): add hash to bytecode (#628) (5 weeks ago) - 84a5e97 - chore(interpreter): use
let else
(#629) (5 weeks ago) - e9d96cd - chore(interpreter): improve dummy host (#631) (5 weeks ago)
- 2054293 - chore: misc improvements (#633) (5 weeks ago)
- 68820da - feat(state): Block hash cache and overrides (#621) (5 weeks ago)
- eb6a9f0 - Revert "feat: alloy migration (#535)" (#616) (6 weeks ago)
- c1bad0d - chore: spell check (#615) (6 weeks ago)
- f95b7a4 - feat: alloy migration (#535) (6 weeks ago)
- bc4d203 - feat: remove unnecessary var and if branch in gas calc (#592) (7 weeks ago)
- ef57a46 - feat: State with account status (#499) (7 weeks ago)
- 157ef36 - feat: introduce initcode size limit check taking config into account (#587) (7 weeks ago)
- 12558c5 - fix: fix mcopy memory expansion. Add eth tests to ci (#586) (7 weeks ago)
- 06b1f6b - feat: EIP-1153 Transient storage opcodes (#546) (8 weeks ago)
- c6c5e88 - make calc public (#575) (8 weeks ago)
- 0a739e4 - fix(interpreter): mcopy call order (#570) (8 weeks ago)
- 30bfa73 - fix(doc): Inline documentation of re-exports (#560) (9 weeks ago)
- 36de35b - feat: Rename all SHA3 opcodes to KECCAK256 (#514) (3 months ago) <Tung Bui (Leo)>
- 10f81ba - optimize stack usage for recursive
call
andcreate
programs (#522) (3 months ago) - c153428 - feat(cancun): EIP-5656: MCOPY - Memory copying instruction (#528) (3 months ago)
- 51072e6 - consume all gas on invalid opcode (#500) (3 months ago)
- ccd0298 - feat: add Memory::into_data (#516) (3 months ago)
- 69f417f - feat: simplify BYTE opcode (#512) (4 months ago)
- c54f079 - fix: replace SHA3 with KECCAK256 opcode name (#511) (4 months ago)
- f8ff6b3 - feat: separate initial checks (#486) (5 months ago)
- 6057cc2 - chore: refactor interpreter run and remove static flag (#481) (5 months ago)
date: 03.05.2023
- 08091e1 - fix: compile errors for features (#467) (13 days ago)
date: 14.04.2023
Added back utility function:
- 7d9b38a - [Interpreter]: Add back
spec_gas_opcode
(#446) (9 days ago)
date: 04.04.2023
Biggest changes are Shanghai support 08ce847 and removal of gas blocks f91d5f9.
Changelog:
- c2ee8ff - add feature for ignoring base fee check (#436) (6 days ago)
- 0eff6a7 - Fix panic! message (#431) (2 weeks ago)
- d0038e3 - chore(deps): bump arbitrary from 1.2.3 to 1.3.0 (#428) (2 weeks ago) <dependabot[bot]>
- dd0e227 - feat: Add all internals results to Halt (#413) (4 weeks ago)
- d8dc652 - fix(interpreter): halt on CreateInitcodeSizeLimit (#412) (4 weeks ago)
- a193d79 - chore: enabled primtive default feature in precompile (#409) (4 weeks ago)
- 1720729 - chore: add display impl for Opcode (#406) (4 weeks ago)
- 33bf8a8 - feat: use singular bytes for the jumpmap (#402) (4 weeks ago)
- 394e8e9 - feat: extend SuccessOrHalt (#405) (4 weeks ago)
- f91d5f9 - refactor: remove gas blocks (#391) (5 weeks ago)
- a8ae3f4 - fix: using pop_top instead of pop in eval_exp (#379) (7 weeks ago)
- 08ce847 - feat(Shanghai): All EIPs: push0, warm coinbase, limit/measure initcode (#376) (7 weeks ago)
- 6710511 - add no_std to primitives (#366) (7 weeks ago)
- 1fca102 - chore(deps): bump proptest from 1.0.0 to 1.1.0 (#358) (8 weeks ago) <dependabot[bot]>
- 9b663bb - feat: Different OutOfGas Error types (#354) (9 weeks ago)
date: 29.01.2023
Interpreter was extracted from main revm crate at the revm v3.0.0 version.