Skip to content

tag v114 revm v42.0.0

Choose a tag to compare

@rakita rakita released this 23 Jul 12:50
bc8ab33

REVM v42.0.0 Release Notes

Date: 2026-07-23

v114 aligns REVM with Glamsterdam devnet-7 and the
tests-glamsterdam-devnet@v7.0.0 fixtures — all state_tests and
blockchain_tests pass. All crates are released as 42.0.0.

EIP-2780 runtime gas phase (#3795, ethereum/EIPs#11844)

State-dependent transaction charges move out of intrinsic gas into a runtime
phase applied as the first frame is entered. Gated on
CfgEnv::enable_amsterdam_eip2780; older forks are unchanged.

  • Create transactions: new-account state gas is charged at runtime, only
    when the deployment target does not exist; an initcode revert/halt unwinds it.
  • EIP-7702: the pessimistic per-auth intrinsic charge becomes an intrinsic
    REGULAR_PER_AUTH_BASE_COST (7,816) plus per-authority runtime charges, with
    no refunds. The delegation target now follows the normal EIP-2929 warm/cold
    model.
  • Runtime out-of-gas no longer invalidates the transaction: it is included
    as an OOG halt consuming all gas, with all runtime state changes (including
    applied delegations) reverted, and returns the EIP-8037 reservoir.
  • Charging is incremental and stops at the first unaffordable charge, so later
    authorities and a cold delegation target are never loaded and stay out of the
    EIP-7928 BAL.

Other devnet-7 alignment (#3795)

  • #11836: calldata floor anchored
    on the decomposed intrinsic base instead of flat TX_BASE.
  • #11891: 7702 ACCOUNT_WRITE
    charged on first write per authority, skipped only when already paid.
  • #11858: CREATE/CREATE2
    account-creation state gas charged conditionally at access in the creating
    frame, refilled LIFO when the create fails.
  • #11854: SSTORE must cover the
    slot access cost before the implicit read; an unaffordable cold access keeps
    the slot out of the block access list.
  • EIP-8246 replaces the EIP-7708 delayed burn; system-contract addresses
    updated per EIP-8282.
  • JournalEntry::CodeChange now records and restores the previous code hash and
    bytecode, fixing a phantom BAL code write on reverted 7702 delegation changes.

Other changes

  • feat(database): database fallback mode for BAL misses (#3754).
  • feat: configurable max refund quotient (#3757); BAL account change slices (#3762).
  • fix(inspector): EIP-7708 transfer logs reach the inspector (#3816); stale
    SELFDESTRUCT journal entries ignored (#3805); journal finalized on error so the
    EIP-2929 warm set does not leak (#3780).
  • fix: GasTracker used-gas underflow (#3813); is_empty preserved on 7702
    accounts in load_account_delegated (#3802); storage original_value
    re-baselined only across tx boundaries (#3746); bytecode iterator fixes
    (#3800, #3792).
  • perf: fewer bounds checks in precompile parsing (#3784); no intermediate BAL
    account allocation (#3775); no double cloning in take_n_reverts (#3539).
  • chore(deps): crossbeam-epoch 0.9.20 for RUSTSEC-2026-0204 (#3804).

See MIGRATION_GUIDE.md
for the full list.

What's Changed

  • feat(database): add database fallback mode for BAL misses by @mattsse in #3754
  • chore(deps): bump crate-ci/typos from 1.46.1 to 1.47.2 by @dependabot[bot] in #3749
  • chore(deps): bump taiki-e/install-action from 2.77.7 to 2.81.3 by @dependabot[bot] in #3748
  • chore(deps): bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #3747
  • feat: make max refund quotient configurable by @decofe in #3757
  • chore: make refund fallible by @klkvr in #3758
  • feat(state): accept BAL account change slices by @mattsse in #3762
  • chore(deny): allow proc-macro-error2 advisory by @mattsse in #3763
  • fix(state): re-baseline storage original_value only across tx boundaries by @asdv23 in #3746
  • perf: avoid intermediate BAL account allocation by @mattsse in #3775
  • fix(inspect): finalize journal on error to prevent EIP-2929 warm set leak by @KyrinCode in #3780
  • chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #3772
  • chore(deps): bump taiki-e/install-action from 2.81.3 to 2.82.0 by @dependabot[bot] in #3774
  • chore(deps): bump MarcoIeni/release-plz-action from 0.5.129 to 0.5.130 by @dependabot[bot] in #3759
  • chore(deps): bump EmbarkStudios/cargo-deny-action from 2.0.18 to 2.0.20 by @dependabot[bot] in #3738
  • chore(database): use Option::filter in BundleAccount::take_info_revert by @mrheyday in #3730
  • refactor: clarify EIP-7702 regular-gas GasId names by @rakita in #3725
  • perf(database): avoid double cloning in take_n_reverts by @saylor-mik87786 in #3539
  • chore(deps): bump CodSpeedHQ/action from 4.15.1 to 4.17.5 by @dependabot[bot] in #3773
  • test(bytecode): cover all truncated pushes by @decofe in #3783
  • chore(deps): bump taiki-e/install-action from 2.82.0 to 2.82.3 by @dependabot[bot] in #3786
  • chore(deps): bump CodSpeedHQ/action from 4.17.5 to 4.18.1 by @dependabot[bot] in #3785
  • perf(precompile): reduce bounds checks in precompile parsing by @0xalpharush in #3784
  • feat(amsterdam): glam devnet-6 gas accounting & EIP alignment by @rakita in #3782
  • chore(deps): bump dependencies by @rakita in #3794
  • fix(bytecode): avoid iterating legacy padding opcodes by @weifanglab in #3792
  • refactor(revme): separate bytecode from account in test state by @rakita in #3803
  • chore(deps): bump crossbeam-epoch to 0.9.20 (RUSTSEC-2026-0204) by @rakita in #3804
  • chore(deps): bump taiki-e/install-action from 2.82.3 to 2.83.2 by @dependabot[bot] in #3809
  • chore(deps): bump MarcoIeni/release-plz-action from 0.5.130 to 0.5.131 by @dependabot[bot] in #3810
  • chore(deps): bump CodSpeedHQ/action from 4.18.1 to 4.18.5 by @dependabot[bot] in #3808
  • chore(deps): bump EmbarkStudios/cargo-deny-action from 2.0.20 to 2.1.1 by @dependabot[bot] in #3811
  • fix: prevent GasTracker used gas underflow by @1sgtpepper in #3813
  • fix(inspector): ignore stale SELFDESTRUCT journal entries by @0xalpharush in #3805
  • test(bytecode): cover InvalidMagic and verify EIP-7702 magic constants by @4waan in #3806
  • fix(bytecode): preserve iterator position after truncated push by @pengqima in #3800
  • fix(context): keep is_empty on EIP-7702 account in load_account_delegated by @cuiweixie in #3802
  • chore(deps): bump crate-ci/typos from 1.47.2 to 1.48.0 by @dependabot[bot] in #3791
  • feat(amsterdam): glamsterdam devnet-7 alignment (EIP-2780 runtime gas phase, fixtures v7.0.0) by @rakita in #3795
  • refactor(handler): validate state before tracking gas by @klkvr in #3815
  • fix(inspector): forward EIP-7708 transfer logs to the inspector by @rakita in #3816
  • chore: release by @github-actions[bot] in #3814
  • bump: prep v114 release by @rakita in #3819

New Contributors

Full Changelog: v113...v114