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.
6.0.0 - 2024-05-28
- 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)
- (Interpreter) wrong block number used (#1458)
- (interpreter) avoid overflow when checking if mem limit reached (#1429)
- blockchash for devnet-0 (#1427)
- (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
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)
- 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.