REVM v116 — all crates v43.0.0
REVM v116 brings every publishable workspace crate to version 43.0.0. This release aligns the implementation with Glamsterdam devnet-8, adds asynchronous database execution, and includes correctness and performance improvements across the EVM stack.
Highlights
- Glamsterdam devnet-8 gas repricing. Updates EIP-8038 account, storage, CREATE, access-list, refund, and state-gas accounting to the latest devnet values.
- Async database execution. The new
asyncdbfeature provides fiber-backed async database support, including async transaction and system-call APIs. - Correct self-destruct finalization. Cancun self-destructed accounts are finalized in place; Amsterdam's EIP-8246 preserves a remaining balance when applicable.
- Execution correctness fixes. Memory growth failures now return
MemoryOOG, and failed CREATE pre-access checks no longer warm or add the destination account to the block access list. - State and test improvements. Newly created contract code is cached in
State, andrevmeblockchain tests now validate receipt-trie roots. - Faster BLS12-381 pairing. The precompile uses fused multi-Miller loops for improved performance.
See the migration guide for full upgrade details.
What's Changed
- docs(precompile): correct read_fp canonical-check comment by @4waan in #3824
- perf(precompile): use fused multi-miller loop for BLS12-381 pairing by @4waan in #3823
- feat: add async database fiber support by @DaniPopes in #3709
- chore: update Cargo.lock by @rakita in #3827
- feat(examples): add custom frame in my_evm example by @aroralanuk in #3825
- chore(deps): bump taiki-e/install-action from 2.83.2 to 2.84.1 by @dependabot[bot] in #3830
- chore(deps): bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in #3831
- feat(revme): validate receipt trie root in blockchain tests by @rakita in #3841
- chore(deps): bump ruint to 1.20.0 for RUSTSEC-2026-0220 by @rakita in #3845
- bench(precompile): cover BLS MSM sizes where blst switches algorithm by @4waan in #3846
- fix(database): cache newly created contract code by @figtracer in #3855
- feat: glamsterdam devnet-8 gas repricing by @rakita in #3850
- bench(precompile): measure the blake2 portable compression path by @4waan in #3848
- chore: remove duplicate Amsterdam gas overrides and dead CPSB constants by @rakita in #3857
- bench(precompile): benchmark KZG verify arkworks/blst backends directly by @4waan in #3849
- fix: check call depth in CREATE pre-access checks (EIP-8037) by @rakita in #3829
- perf(precompile): unroll blake2 portable rounds to const-fold the message schedule by @4waan in #3840
- bench(precompile): port benchmarkoor bls12-381 benches from #3766 by @rakita in #3858
- chore(deps): bump CodSpeedHQ/action from 4.18.5 to 5.0.2 by @dependabot[bot] in #3854
- chore(deps): bump taiki-e/install-action from 2.84.1 to 2.85.8 by @dependabot[bot] in #3853
- chore(deps): bump taiki-e/cache-cargo-install-action from 3.0.7 to 3.0.8 by @dependabot[bot] in #3852
- chore(deps): bump crate-ci/typos from 1.48.0 to 1.49.0 by @dependabot[bot] in #3851
- chore(deps): bump mozilla-actions/sccache-action from 0.0.10 to 0.0.11 by @dependabot[bot] in #3844
- docs(handler): clarify PrecompileProvider::run return semantics by @flag4table in #3769
- fix(state): align Account's manual Deserialize field order with derived Serialize by @WonderLawrence in #3870
- fix(interpreter): return MemoryOOG when memory resize fails by @cuiweixie in #3864
- feat(journal): finalize selfdestructed accounts in place from Cancun by @rakita in #3863
- chore(deps): replace unmaintained bincode with postcard in tests by @rakita in #3874
- chore: release by @github-actions[bot] in #3862
- chore: release v116 by @rakita in #3882
New Contributors
- @aroralanuk made their first contribution in #3825
- @figtracer made their first contribution in #3855
- @flag4table made their first contribution in #3769
- @WonderLawrence made their first contribution in #3870
Full Changelog: v115...v116