Skip to content

Latest commit

 

History

History
503 lines (399 loc) · 30.2 KB

CHANGELOG.md

File metadata and controls

503 lines (399 loc) · 30.2 KB

Changelog

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.

[Unreleased]

16.0.0-alpha.2 - 2025-02-22

Other

  • move all dependencies to workspace (#2092)

16.0.0 - 2025-02-16

Added

  • 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)

Fixed

  • make macro crate-agnostic (#1802)

Other

  • 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

Other

  • revm v19.4.0 tag v54

15.1.0 - 2025-01-13

Added

  • (EIP-7623) adjuct floor gas check order (#1990)

15.0.0 - 2024-12-26

Added

  • apply latest EIP-7702 changes (#1850)
  • (Prague) EIP-7623 Increase Calldata Cost (#1744)

14.0.0 - 2024-11-06

Other

  • bump alloy-eip7702 and remove Parity re-export (#1842)

13.0.0 - 2024-10-23

Other

  • updated the following local packages: revm-primitives

12.0.0 - 2024-10-17

Other

  • updated the following local packages: revm-primitives

11.0.0 - 2024-10-17

Other

  • updated the following local packages: revm-primitives

10.0.3 - 2024-09-26

Other

  • updated the following local packages: revm-primitives

10.0.2 - 2024-09-18

Other

  • make clippy happy (#1755)

10.0.1 - 2024-08-30

Other

10.0.0 - 2024-08-29

Added

  • (eip7702) Impl newest version of EIP (#1695)

9.0.0 - 2024-08-08

Added

  • (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)

Fixed

  • 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)

Other

  • 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 for U256 and B256 (#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

Added

  • (eof) cli eof-validation (#1622)
  • use kzg-rs for kzg point evaluation (#1558)

Fixed

  • (eip7702) Add tests and fix some bugs (#1605)
  • (EOF) MIN_CALLEE_GAS light failure, static-mode check (#1599)

7.0.0 - 2024-07-08

Added

  • (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)

Fixed

  • (eof) ExtDelegateCall caller/target switch (#1571)

Other

  • (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

Added

  • (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)

Fixed

  • (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)

Other

  • 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

Added

  • 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)

Fixed

  • return the correct error in resize_memory (#1359)
  • correct some stack IO (#1302)

Other

  • 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

Added

  • add tests for shift instructions (#1254)
  • derive serde for OpCode, improve implementations (#1215)
  • (interpreter) expose mutable access methods on stack and memory (#1219)

Other

  • 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

Added

  • (interpreter) export utility macros (#1203)
  • add convert_boxed and insert_boxed for InstructionTable (#1194)
  • optional nonce check (#1195)

Other

  • expose functionality for custom EVMs (#1201)
  • Fix typo in readme (#1185)

3.3.0 - 2024-03-08

Added

  • (interpreter) OpCode struct constants (#1173)

3.2.0 - 2024-03-08

Added

  • add insert method on instruction table (#1167)
  • use impl instead of dyn in GetInspector (#1157)

Other

  • (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

Added

  • bump c-kzg, add portable feature, make it default (#1106)

Fixed

  • replace tuple in sstore return with struct (#1115)
  • (db) Set instruction result at outcome insert (#1117)

Other

  • adding more test for i256 (#1090)
  • (refactor) Propagate fatal error (#1116)
  • clippy cleanup (#1112)

3.0.0 - 2024-02-17

Fixed

  • rename and pass optimism-default-handler to revm-primitives (#1098)

Other

  • (precompile) use Bytes in precompile functions (#1085)
  • Add memory offset (#1032)
  • license date and revm docs (#1080)

2.1.0 - 2024-02-12

Added

  • (interpreter) relax make_boxed_instruction_table::FN to FnMut (#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.

Added

  • 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 behind optimism 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)

Fixed

  • (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)

Other

  • 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 in make_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)

v1.3.0

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]>

v1.2.0

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 to KECCAK256, this can potentially break some tracers.
  • Refactor opcodes and Interpreter dispatch loop. Better performance.
  • optimize stack usage for recursive call and create 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 and create 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)

v1.1.2

date: 03.05.2023

  • 08091e1 - fix: compile errors for features (#467) (13 days ago)

v1.1.1

date: 14.04.2023

Added back utility function:

  • 7d9b38a - [Interpreter]: Add back spec_gas_opcode (#446) (9 days ago)

v1.1.0

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)

v1.0.0

date: 29.01.2023

Interpreter was extracted from main revm crate at the revm v3.0.0 version.