github bluealloy/revm v106
tag v106 revm v37.0.0

7 hours ago

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_start and frame_end on 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 from CallInput.
  • 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 JournalLoadError from load_account_mut_skip_cold_load (#3477) — Error type was previously hidden.
  • Make Bytecode Ord consistent with PartialEq and Hash (#3479) — Fixes ordering inconsistency.
  • Make DummyHost return 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 AnyError for PrecompileError::Fatal and EVMError::Custom (#3502) — Replaces stringly-typed errors with AnyError.
  • Remove option for known bytecode (#3532) — Simplifies bytecode handling.
  • Deprecate set_spec and 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 underflow variable to success by @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_start and frame_end to Inspector trait 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 Option by @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

Full Changelog: v105...v106

Don't miss a new revm release

NewReleases is sending notifications on new releases.