Skip to content

Latest commit

 

History

History
301 lines (249 loc) · 19.3 KB

CHANGELOG.md

File metadata and controls

301 lines (249 loc) · 19.3 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]

6.0.0 - 2024-05-31

Added

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

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