Release v106
Features
- EIP-8037 / TIP-1016 state gas support (#3406) — Introduces the state gas reservoir model for separating state and execution gas accounting.
- Amsterdam devnet3 EIP updates (#3438) — Partial implementation of Amsterdam devnet3 EIP changes.
frame_startandframe_endon Inspector trait (#3518) — New inspector hooks for observing frame lifecycle events.- Crate-level re-exports for all revm- dependencies* (#3507) — Each revm sub-crate now re-exports its public dependencies for easier downstream use.
CallInput::as_bytes(#3515) — Convenience accessor for raw call input bytes.- Local context accessors on
CallInput(#3537) — Access local context fields directly fromCallInput. - revme: list all failed tests with
--keep-going(#3491) — Summary of all failures printed at the end of test runs.
Bug Fixes
- Reject transactions with nonce at u64::MAX (#3553) — Prevents nonce overflow.
- Ensure both inspectors receive paired call/create events in tuple impl (#3473) — Fixes missing events when using inspector tuples.
- swap/swapn/exchange report StackOverflow on underflow (#3483) — Correct error variant for stack underflow in swap operations.
- Expose
JournalLoadErrorfromload_account_mut_skip_cold_load(#3477) — Error type was previously hidden. - Make
BytecodeOrd consistent with PartialEq and Hash (#3479) — Fixes ordering inconsistency. - Make
DummyHostreturn defaults instead of errors for storage ops (#3503) — Better behavior for testing. - revme: use transact state for debug "State after" output (#3498)
- revme: guard unconditional println in blockchaintest for --json mode (#3500)
Refactoring & Breaking Changes
- Use
AnyErrorforPrecompileError::FatalandEVMError::Custom(#3502) — Replaces stringly-typed errors withAnyError. - Remove option for known bytecode (#3532) — Simplifies bytecode handling.
- Deprecate
set_specand clean up deprecation attrs (#3550) - Move EIP-8037 gas cap validation into
validate_initial_tx_gas(#3552) - Remove unused gas-related functions (#3534)
- Take large array args by reference in precompiles (#3524)
Performance
- Remove redundant log clone in inspector precompile path (#3520)
What's Changed
- ci: add cargo-semver-checks to catch breaking changes in PRs by @decofe in #3476
- fix: ensure both inspectors receive paired call/create events in tuple impl by @bobtajson in #3473
- chore: bump aws-lc-rs from 1.16.0 to 1.16.1 by @rakita in #3481
- chore: simplify stack dup by @DaniPopes in #3478
- fix: make Bytecode Ord consistent with PartialEq and Hash by @zeroprooff in #3479
- fix: expose JournalLoadError from load_account_mut_skip_cold_load by @rakita in #3477
- fix(handler): rename misleading
underflowvariable tosuccessby @zeroprooff in #3486 - chore: remove unused bytecode dependency from revm-statetest-types by @bobtajson in #3485
- fix(interpreter): swap/swapn/exchange report StackOverflow on underflow by @bluebluesaku in #3483
- chore(revme): use alloy-trie instead of triehash by @DaniPopes in #3488
- feat(revme): list all failed tests at the end with --keep-going by @rakita in #3491
- chore: bump c-kzg from 2.1.6 to 2.1.7 by @rakita in #3495
- docs: clarify PrecompileError::Fatal vs Other and EVMError::Custom by @mattsse in #3496
- feat: Amsterdam devnet3 EIP updates by @rakita in #3438
- ci: exclude revme from semver-checks by @bluebluesaku in #3501
- fix(revme): guard unconditional println in blockchaintest for --json mode by @bluebluesaku in #3500
- fix(revme): use transact state for debug State after output by @rakita in #3498
- fix: make DummyHost return defaults instead of errors for storage ops by @decofe in #3503
- ci: remove semver-checks workflow by @rakita in #3508
- feat: add crate-level re-exports for all revm-* dependencies by @rakita in #3507
- refactor: use AnyError for PrecompileError::Fatal and EVMError::Custom by @ndavd in #3502
- feat: add CallInput::as_bytes by @DaniPopes in #3515
- Add [OpTrace] to awesome list by @tanghaosuan11 in #3514
- fix(op-revm): use typed error for missing enveloped tx in all paths by @bluebluesaku in #3509
- chore: remove no-op background transition merge builder toggle by @saylor-mik87786 in #3510
- feat(inspector): add
frame_startandframe_endtoInspectortrait by @mablr in #3518 - chore: add comment about frame stack initial capacity by @DaniPopes in #3527
- bench: add secp256r1 (P256) precompile benchmark by @decofe in #3525
- refactor(precompile): take large array args by reference by @decofe in #3524
- perf(inspector): remove redundant log clone in precompile path by @saylor-mik87786 in #3520
- refactor: remove redundant
Optionby @klkvr in #3532 - feat: Add local context accessors to CallInput by @rakita in #3537
- fix: Remove unused gas-related functions by @popzxc in #3534
- ci: add PR audit workflow by @legion2002 in #3551
- refactor: deprecate set_spec and clean up deprecation attrs by @rakita in #3550
- feat: add EIP-8037 / TIP-1016 state gas support by @rakita in #3406
- refactor: state gas cleanup and EIP-8037 validation consolidation by @rakita in #3552
- chore: release by @github-actions[bot] in #3472
- fix: reject transactions with nonce at u64::MAX by @rakita in #3553
- chore: v106 release prep by @rakita in #3554
New Contributors
- @bobtajson made their first contribution in #3473
- @ndavd made their first contribution in #3502
- @tanghaosuan11 made their first contribution in #3514
- @popzxc made their first contribution in #3534
- @legion2002 made their first contribution in #3551
Full Changelog: v105...v106