date: 11.06.2026
All crates are now versioned in lockstep, starting at 41.0.0 — hence the version jump (e.g. revm-bytecode 11.0.1 → 41.0.0). Released by #3711 and #3753; full diff v112...v113.
Breaking:
TransientStorageis now a newtype overAddressMap<StorageKeyMap<StorageValue>>(#3736)OnStateHook::on_statetakesEvmStateby value;TransitionAccountgained a storage generic (#3732)GasStateTrremoved, superseded by the SSTORE gas hook (#3750)
Other highlights:
- SSTORE gas accounting hook (#3734, #3750),
StateBuilder::with_bundle_update_if(#3729),Account::is_changed(#3727) - Commit perf improvements (#3732)
- Fix out-of-bounds pointer in
analyze_legacy(#3752) and a const-eval panic inpop_address(#3735)
See MIGRATION_GUIDE.md for migration notes.
What's Changed
- docs: add v112 changelog entry by @rakita in #3724
- feat:
Account::is_changedby @klkvr in #3727 - feat(database): add conditional bundle update builder by @mattsse in #3729
- perf: avoid reallocations and cloning during commit by @klkvr in #3732
- feat: add SSTORE gas-state policy hook by @rakita in #3734
- feat: wrap TransientStorage as AddressMap<StorageKeyMap> by @rakita in #3736
- fix(interpreter): use IntoAddress in pop_address to avoid const-eval panic by @pjdurden in #3735
- chore: make
GasStateTrexposeStateLoadby @0xrusowsky in #3737 - Add MODEXP precompile benchmarks by @decofe in #3744
- refactor: remove
GasStateTrby @klkvr in #3750 - Run cargo fmt by @decofe in #3751
- fix(bytecode): avoid out-of-bounds pointer in analyze_legacy by @anders94 in #3752
- chore: release by @github-actions[bot] in #3711
- chore: bump all crates to v41.0.0 by @rakita in #3753
New Contributors
Full Changelog: v112...v113