·
2 commits
to master
since this release
Immutable
release. Only release title and notes can be modified.
Foundry v1.8.4 builds on v1.8.3 with durable script recovery, native Base execution, external compiler adapters, integrated editor clients, expanded block-access-list and Tempo tooling, and substantial correctness and performance improvements across tracing, compilation, fuzzing, symbolic execution, formatting, linting, and Chisel.
Forge, scripting, and testing
Script recovery compatibility: Forge now stores authoritative resume state in a private, versioned .recovery.json file under cache/. Preserve both broadcast/ and cache/ until a deployment is complete. Forge 1.8.4 can import a consistent legacy artifact pair, but older Forge versions must not resume a deployment after 1.8.4 has written generation-tagged recovery state.
- Added crash-safe recovery snapshots, persisted exact signed payloads before submission, and fail-closed handling for ambiguous browser-wallet or unlocked-RPC outcomes. Recovery covers ordinary, multichain, sponsored, and Tempo batch submissions; ambiguous delegated attempts can be resolved explicitly with
--resume-attemptand either--resume-tx-hashor--resume-retry(#16993, #16995, #16996, #17023, #17181, #17251) by @stevencartavia. - Added executable external compiler adapters for EVM projects whose manifests and dependency resolution do not fit Foundry's Solidity source-file model (#16980) by @figtracer.
- Added VS Code and Zed editor clients and a
forge lsplauncher backed by Forge's embedded Solar language server (#16730) by @0xKarl98. - Improved dynamic test-linking and compiler-cache correctness for imported constants, cached libraries, filtered builds, import cycles, and native-bytecode fallback. Fallback now tracks transitive import closures instead of invalidating every test and script after any edit (#16908, #17003, #17014, #17211, #17238, #17254) by @mablr, @stevencartavia, @figtracer.
- Added
vm.eth_getProof, fixed saltedvm.deployCodebroadcasts through CREATE2, and made local EIP-2935 history-storage clearing revertible across calls and snapshots (#17053, #17192, #17194) by @zexoverz, @stevencartavia. - Improved persisted invariant failure replay, nested handler identity, shrinking, symbolic frontier reporting, and time/block-aware corpus replay (#16850, #16953, #16981, #17099, #17140, #17235) by @figtracer, @kriss39, @stevencartavia.
- Expanded symbolic execution for aliasing addresses, symbolic mock targets, reverting-call cheatcode state, empty precompile accounts, fork-gated opcodes, exceptional halts, and failed
ecrecoverreturndata; empty proof domains and unsafe predicate assumptions no longer report vacuous success (#16964, #16965, #16966, #17119, #17132, #17201, #17212, #17217, #17218) by @Bruce039, @0xShadowX, @figtracer.
Networks, Anvil, and tracing
- Added native Base execution across Forge, Cast, Chisel, scripts, and Anvil, including Base hardforks, deposits, EIP-8130 transactions, precompiles, mining, estimation, tracing, transaction-pool ordering, and forks (#16809, #16224) by @mablr, @lukasrosario.
- Added EIP-7928 block access list production in Anvil and used available BAL data to prewarm fork and transaction-hash replay state (#16917, #16956, #17022) by @figtracer, @0xKarl98.
- Fixed Optimism and Base deposit replay, OP fee-context handling, and incompatible cross-family fork execution (#17130, #17197) by @mablr.
- Improved Tempo nonce-lane ordering, sponsored EIP-7702 authority handling, generic RPC replay fidelity, expiry limits, and protocol support (#17139, #17193, #17195, #17241, #17244) by @stevencartavia, @decofe, @mattsse.
- Corrected Parity trace defaults and new-account state diffs, restored VM trace alignment and reverted-CREATE handling, and reduced memory by replaying historical struct logs from parent state instead of retaining mined opcode steps. Block replay now runs once and reports unavailable historical state explicitly (#17078, #17106, #17226, #17240, #17249, #17250) by @mattsse, @banteg, @mablr, @HubertRitzdorf-ChainSecurity, @stevencartavia.
- Fixed snapshot restoration for the transaction pool and pending prevrandao, and pruned historical state discarded by
evm_revert(#17044, #17184, #17187) by @stevencartavia. - Aligned
cast runwith Nitro poster-gas and ArbSys accounting and reported the replayed L2 block correctly (#17069, #17093, #17094) by @stevencartavia, @mattsse.
Cast and developer tools
- Added Tempo zone deposit, withdrawal, settlement waiting, and Earn callback encoders, plus TIP-20 role inspection and grant/revoke commands (#16903, #17246) by @mattsse.
- Added
cast bal/cast block-access-listand used BAL prestate to acceleratecast runwhile respecting explicit EVM overrides (#16933, #16931, #17213) by @mattsse, @mablr. - Added decoded fields to
cast logsfor event declarations, decoded calldata with ERC-8021 suffixes, and improvedcast rundiagnostics and support for unknown chains and ZKsync traces (#16322, #17171, #17090, #17091, #17092, #17095) by @e1Ru1o, @mattsse. - Decoded canonical dynamic constructor arguments and rejected ambiguous nested encodings instead of silently selecting one match (#16922, #17233) by @kriss39, @figtracer.
- Preserved explicit empty Tempo keychain scopes as deny-all policies, rejected scopes on pre-T3 chains, and listed Turnkey signers through
cast wallet list --turnkey(#17255, #17169) by @figtracer, @aelmanaa. - Improved formatter stability for normalized widths and assignments, prevented directory formatting from following symlinks outside the project, and expanded lint analysis for flash-loan repayment loops, sender aliases, unused function values, compound assignments, and duplicate arithmetic writes (#17137, #17205, #17206, #17196, #16628, #16943, #16944, #16974, #17177) by @CalvinTjoaquinn, @mablr, @0xKarl98, @gomesalexandre, @0xShadowX, @Osraka, @wavey0x.
- Removed RPC and explorer credentials from Chisel session caches, isolated
chisel viewfrom unrelated project setup, and displayed external function references in the REPL (#17143, #17191, #17131) by @0xKarl98, @stevencartavia.
Compatibility notes
- The minimum supported Rust version for source builds is now 1.98 (#17188) by @stevencartavia.
- Alloy 2.5.0 changes
trace_filterto intersect both address dimensions when both are supplied and rejects malformed0x00-tagged legacy envelopes (#17077) by @mattsse. - Anvil now preserves empty Parity trace-type lists, defaults
trace_callManytolatest, and treats an omittedtrace_filterrange as latest-only (#17078) by @mattsse. - Historical default struct logs now require replayable parent state; nodes without it return an explicit unavailable-state error (#17240, #17249) by @HubertRitzdorf-ChainSecurity, @stevencartavia.
- Chisel no longer persists endpoint credentials in session files, so older fork sessions may require credentials again when loaded (#17143, #17191) by @0xKarl98.
Full Changelog:
Contributors (31)
- fix(anvil): don't keep step traces of mined txs (#17240) by @HubertRitzdorf-ChainSecurity
- fix(evm): canonicalize resolved fork profiles (#17033) by @0xKarl98
- fix(symbolic): reject explicit call gas (#16866) by @figtracer
- fix(symbolic): enforce runtime code limit (#16870) by @figtracer
- fix(symbolic): contain exceptional child halt (#16869) by @figtracer
- refactor(anvil): localize Monad pool lifecycle (#16873) by @mablr
- refactor(anvil): type Monad executor inputs (#16874) by @mablr
- fix(forge): contain mutation test workers (#16872) by @figtracer
- refactor(anvil): type OP hardfork inputs (#16878) by @mablr
- ci: validate native release binaries (#16871) by @mablr
- chore: bump version to 1.8.4 (#16877) by @mablr
- refactor(anvil): simplify OP result adaptation (#16880) by @mablr
- refactor(anvil): reuse raw transaction insertion (#16882) by @mablr
- refactor(anvil): gate OP executor accounting state (#16881) by @mablr
- refactor(anvil): require prepared Monad context (#16879) by @mablr
- feat(forge): add editor clients and LSP launcher (#16730) by @0xKarl98
- chore(deps): bump solar dependencies to f347212 (#16831) by @github-actions[bot]
- fix(forge): isolate LSP editor sessions (#16890) by @0xKarl98
- chore(deps): bump the ci-weekly group with 3 updates (#16888) by @dependabot[bot]
- chore(deps): bump zed_extension_api from 0.5.0 to 0.7.0 in /editors/zed (#16886) by @dependabot[bot]
- chore(deps): bump reqwest from 0.13.4 to 0.13.5 in the cargo-weekly group (#16889) by @dependabot[bot]
- chore(deps): bump tempo dependencies to 30e26cd (#16830) by @github-actions[bot]
- chore(deps): group weekly code updates (#16891) by @mablr
- chore(editors): align CI and Rust style (#16893) by @0xKarl98
- refactor(anvil): gate OP result sender (#16896) by @mablr
- feat: add Base support MVP (#16809) by @mablr
- refactor(anvil): resolve pool gas cap once (#16895) by @mablr
- test(forge): fix Windows LSP snapshot (#16898) by @mablr
- refactor(evm): centralize inherited context (#16899) by @mablr
- refactor(evm): share child state settlement (#16900) by @mablr
- fix(coverage): track nested ternary branches (#16828) by @gomesalexandre
- refactor(anvil): type native environment inputs (#16894) by @mablr
- fix(symbolic): reject 0xef runtime prefix (#16867) by @figtracer
- chore(deps): bump solar dependencies to f35f66b (#16906) by @github-actions[bot]
- chore(deps): bump tempo dependencies to 25b216a (#16905) by @github-actions[bot]
- fix(symbolic): prove guarded fixed-point round trips (#16849) by @clement-ux
- fix(lint): drop sender aliases on reassignment (#16884) by @zexoverz
- refactor(symbolic): extract SMT emission (#16910) by @figtracer
- refactor(symbolic): organize solver modules (#16911) by @figtracer
- feat(anvil): add native Base support (#16224) by @lukasrosario
- feat(cast): add transfer subcommands (#16903) by @mattsse
- feat(symbolic): derive rounding error bounds (#16909) by @clement-ux
- refactor(anvil): configure OP executors once (#16876) by @mablr
- fix(anvil): safe/finalized tags assume genesis is block 0 (#16883) by @gomesalexandre
- test(anvil): add Tempo testnet canary (#16902) by @mattsse
- docs: point CONTRIBUTING debugger link at [profile.dev] (#16915) by @imitater-dou
- chore(ci): remove release preparation automation (#16865) by @mablr
- chore(deps): bump taiki-e/install-action from 2.87.9 to 2.87.11 in the ci-weekly group (#16916) by @dependabot[bot]
- refactor(anvil): simplify executor setup (#16913) by @figtracer
- feat(cast): restore run prestate from BAL (#16907) by @0xKarl98
- refactor(forge): reuse NetworkVariant for dispatch (#16928) by @mablr
- chore(ci): adopt secure-runner (#16832) by @decofe
- revert: "feat(cast): restore run prestate from BAL" (#16930) by @mattsse
- feat(cast): read run prestate from BAL (#16931) by @mattsse
- feat(anvil): produce block access lists (#16917) by @figtracer
- feat(cast): add bal command (#16933) by @mattsse
- fix(primitives): decode post-exec transactions from their RPC form (#16935) by @geoknee
- fix(evm): set blob excess gas from fork block header (#16918) by @kriss39
- feat(common): decoding external contracts (#16766) by @sakulstra
- fix(anvil): resolve block tags against genesis number (#16923) by @Bruce039
- fix(cast): strip only the requested base prefix (#16925) by @Bruce039
- fix(cast): strip remote signer env from session child (#16927) by @Bruce039
- fix(forge): reset gas snapshot baseline (#16945) by @figtracer
- fix(cheatcodes): bound debug step stack inputs (#16942) by @0xShadowX
- fix(anvil): derive deposit nonce from pre-execution state (#16940) by @0xShadowX
- fix(lint): detect unused function value returns (#16944) by @Osraka
- fix(cast): default 7702 recipient to sender (#16939) by @0xShadowX
- fix(traces): redact rememberKeys mnemonic in traces (#16919) by @kriss39
- fix(cheatcodes): remove only current depth prank on create end (#16921) by @kriss39
- fix(cast): decode dynamic constructor args in creation code (#16922) by @kriss39
- fix(mutation): drop uncompilable sar mutant (#16954) by @kriss39
- fix(ci): deploy Tempo counter fixtures (#16958) by @decofe
- fix(symbolic): normalize constant mul-div overflow guards (#16932) by @clement-ux
- chore(deps): bump the ci-weekly group with 3 updates (#16959) by @dependabot[bot]
- fix(forge): preserve Base fallback EVM version (#16963) by @mablr
- chore: remove reintroduced changelog file (#16962) by @mablr
- fix(evm): reset journal when rolling an inactive fork (#16952) by @0xShadowX
- fix(cast): build anonymous event topics without selector (#16948) by @Bruce039
- fix(forge): invalidate native dependencies (#16908) by @mablr
- fix(evm): guard Base tooling transaction execution (#16912) by @mablr
- fix(editors): include complete license texts (#16892) by @0xKarl98
- fix(symbolic): keep cheatcode state across reverting calls (#16966) by @0xShadowX
- fix(symbolic): split mock branches for symbolic targets (#16965) by @Bruce039
- fix(lint): track sender aliases through tuple assignments (#16943) by @0xShadowX
- fix(forge): restore Windows cache reuse (#16977) by @decofe
- fix(deps): bump core for Moonbeam fork reads (#16979) by @decofe
- docs: remove AI disclosure requirements (#16969) by @decofe
- fix(symbolic): match expectCall after mockFunction redirect (#16976) by @kriss39
- test(script): cover interrupted script resume (#16975) by @stevencartavia
- fix(lint): count compound assignments as writes (#16974) by @0xShadowX
- fix(anvil): rewind Monad profile on rollback (#16810) by @riba2534
- docs: define script recovery contract (#16967) by @stevencartavia
- fix(forge): preserve private array dimensions (#16985) by @mablr
- fix(forge): reject static dynamic deployments (#16986) by @mablr
- fix(common): build outside a git worktree (#16991) by @Dev-next-gen
- fix(symbolic): explore aliasing address inputs (#16964) by @Bruce039
- chore(ci): bump secure-runner pin (#16990) by @decofe
- fix(config): dedup remappings without trailing slash (#16955) by @kriss39
- fix(forge): preserve constant creation code (#16984) by @mablr
- fix(ci): reuse shared deny and refresh action pins (#16989) by @decofe
- chore(ci): remove unused workflow (#17002) by @decofe
- perf(symbolic): broaden bounded model search (#16526) by @figtracer
- fix(forge): preserve handler replay sites (#16981) by @figtracer
- fix(evm): preserve dynamic CREATE isolation (#17004) by @mablr
- perf(anvil): trace only the replayed transaction (#17008) by @figtracer
- fix(forge): preserve observable return data (#17007) by @mablr
- perf(anvil): skip unused estimation traces (#17009) by @figtracer
- fix(anvil): reject zero reorg depth with transactions (#16951) by @0xShadowX
- feat(anvil): prewarm fork state from BAL (#16956) by @0xKarl98
- fix(forge): preserve constructor diagnostics (#17005) by @mablr
- fix(ci): use Aegis for macOS releases (#17016) by @decofe
- docs(forge): clarify slow script broadcasts (#17015) by @figtracer
- fix(forge): link cached profile libraries (#17014) by @stevencartavia
- fix(forge): track imported constant dependencies (#17003) by @mablr
- fix(anvil): report removed logs on revert (#17020) by @stevencartavia
- fix(anvil): restrict config export permissions (#17026) by @decofe
- chore: bump foundry-core to 6228965e (#17018) by @mablr
- fix(anvil): drop dependent transactions (#17021) by @stevencartavia
- fix(forge): skip isolated caller fees (#17017) by @figtracer
- fix(lint): detect repeated flash-loan repayment pulls inside a loop (#16628) by @gomesalexandre
- fix(anvil): drop queued nonce dependents (#17028) by @mablr
- perf(anvil): replay block call traces once (#17030) by @figtracer
- fix(evm): restore isolated snapshot state (#17027) by @stevencartavia
- feat(forge): prewarm txhash forks from parent BAL (#17022) by @0xKarl98
- fix(evm): unwind isolated snapshot restores (#17032) by @mablr
- perf(anvil): reduce witness peak memory (#17031) by @figtracer
- fix(forge): prevent cross-fork storage poisoning (#16987) by @stevencartavia
- fix(evm): restore isolated fee state (#17029) by @mablr
- fix(ci): migrate macOS release runner (#17038) by @mablr
- fix(test): require newer solc for blob fee fixture (#17042) by @decofe
- fix(forge): replay persisted invariant failures in full (#16953) by @kriss39
- fix(symbolic): accept zero_init layout (#17039) by @mablr
- fix(symbolic): report terminal search limitation (#17040) by @mablr
- fix(symbolic): honor invariant frontier check flag (#17041) by @mablr
- docs: inherit the organization security policy (#17050) by @decofe
- fix(anvil): fix latest read isolation (#16368) by @cruzdanilo
- fix(evm): keep call depth on snapshot revert (#17051) by @mattsse
- refactor(evm): share BAL cache locking (#17052) by @0xKarl98
- fix(cast): reject negatives beyond int256 range (#17057) by @FlashWayne
- chore(ci): migrate deny to gh-actions (#17060) by @mablr
- test(evm): cover BAL policies on shared forks (#17045) by @0xKarl98
- fix(anvil): run fork backend handler on its own thread (#17058) by @itachi47
- perf(forge): skip unused gas report decoding (#17061) by @figtracer
- perf(forge): cache coverage artifacts (#17034) by @figtracer
- fix(fmt): count spaces after line-end operators (#17054) by @FlashWayne
- fix(anvil): restore txpool on snapshot revert (#17044) by @stevencartavia
- perf(anvil): cache multi-block simulation roots (#17011) by @figtracer
- fix(anvil): estimate precompile gas correctly (#17043) by @stevencartavia
- fix(forge): normalize coverage cache paths (#17063) by @mablr
- feat(cast): decode logs from event signatures (#16322) by @e1Ru1o
- fix(cheatcodes): preserve state in transact (#17037) by @stevencartavia
- docs(cast): fix state override example (#17036) by @zjubiology
- feat(forge): support external compiler adapters (#16980) by @figtracer
- fix(anvil): prune stale mappings on state load (#17064) by @stevencartavia
- feat(cheatcodes): add eth_getProof cheatcode (#17053) by @zexoverz
- fix(cast): account for Nitro poster gas (#17069) by @stevencartavia
- chore: update gh-actions to ee2960a6 (#17074) by @decofe
- chore(deps): bump revm-inspectors to 0.44.0 (#17073) by @mattsse
- fix: update Docker builder to Rust 1.98 (#17075) by @decofe
- chore(deps): bump alloy to 2.5.0 (#17077) by @mattsse
- fix(lsp): index test and script source roots (#17071) by @0xKarl98
- refactor: drop the hash BAL method fallback in forks (#17080) by @mattsse
- chore: remove changelog (#17068) by @stevencartavia
- docs: point cheatcodes README Vm.sol link at testdata/utils (#16978) by @imitater-dou
- fix(tempo): bump dependencies for T14 (#17076) by @decofe
- fix(anvil): correct trace_* request defaults (#17078) by @mattsse
- fix(cast): split subcommands to avoid stack overflow (#17079) by @mattsse
- fix: skip unnecessary submodule status checks (#17085) by @decofe
- fix(cheatcodes): use fork options for eth_getLogs and getRawBlockHeader (#17084) by @zexoverz
- chore: remove changelog fragments (#17086) by @stevencartavia
- fix(anvil): return null from trace_transaction for an unknown hash (#17089) by @banteg
- fix(common): lock files before truncating (#17097) by @figtracer
- fix(common): retain verified proxy fallback (#17101) by @figtracer
- fix(cast): validate same-base conversions (#17104) by @figtracer
- chore(deps): bump the ci-weekly group with 4 updates (#17109) by @dependabot[bot]
- fix: skip EIP-7702 refunds for fresh authorities (#17096) by @mattsse
- fix(cast): report the replayed block from ArbSys (#17093) by @mattsse
- fix(fmt): don't inline a yul block that breaks anyway (#17108) by @CalvinTjoaquinn
- fix(cast): probe the EVM version of unknown chains (#17090) by @mattsse
- fix(forge): check snapshots in serialized output (#17098) by @figtracer
- fix(common): construct configured ABI clients (#17100) by @figtracer
- fix(forge): count skipped invariant predicates (#17102) by @figtracer
- fix(ci): require calibrated benchmark results (#17103) by @figtracer
- docs(config): correct metadata defaults (#17116) by @decofe
- refactor(cheatcodes): share active fork provider construction (#17088) by @mattsse
- fix(fmt): retain concatenated string comments (#17110) by @mablr
- fix(fmt): keep isolated comments in disabled regions (#17111) by @CalvinTjoaquinn
- fix(fmt): bound the trailing comment scan in inline tuples (#17113) by @CalvinTjoaquinn
- fix(fmt): stabilize long call conditions (#17115) by @mablr
- perf(forge): cache inspect outputs (#17105) by @figtracer
- fix(cast): support ZKsync remote traces (#17091) by @mattsse
- feat(cast): warn when
cast rundiverges from the receipt (#17092) by @mattsse - fix(fmt): drop the blank line after a fn attribute comment (#17114) by @CalvinTjoaquinn
- fix(anvil): restore next timestamp on revert (#17065) by @stevencartavia
- feat(script): add recovery snapshots (#16993) by @stevencartavia
- fix(forge): reject missing cached EWASM output (#17129) by @stevencartavia
- fix(cast): point
cast runfailures at their fixes (#17095) by @mattsse - fix(verify): honor status-check verifier keys (#17121) by @figtracer
- fix(verify): preserve Sourcify URL prefixes (#17123) by @figtracer
- fix(forge): honor selected dependency updates (#17118) by @figtracer
- feat(script): persist signed payloads (#16995) by @stevencartavia
- fix(anvil): allow future-start log filters (#17122) by @figtracer
- fix(symbolic): reject empty proof domains (#17119) by @figtracer
- perf(forge): cache selector collision outputs (#17124) by @figtracer
- docs(dev): fix nextest ui test command in lintrules (#16862) by @imitater-dou
- chore: bump gh-actions to d5402286 (#17142) by @decofe
- fix(evm): replay OP and Base deposits (#17130) by @mablr
- test(cast): redact Arbitrum replay warning (#17145) by @decofe
- fix(evm): match Nitro gas for ArbSys calls (#17094) by @mattsse
- fix(script): recover delegated submissions (#16996) by @stevencartavia
- fix(evm): restore in-memory snapshot routing (#17138) by @stevencartavia
- fix(forge): validate update dependency paths (#17135) by @stevencartavia
- fix(chisel): display external function references (#17131) by @stevencartavia
- fix(symbolic): guard predicate assumptions (#17132) by @figtracer
- fix(forge): validate cloned contract names (#17141) by @stevencartavia
- fix(forge): reject ambiguous block cache cleanup (#17149) by @figtracer
- fix(cast): reject --trace with --curl (#17146) by @0xKarl98
- fix(forge): preserve nested handler replays (#17140) by @stevencartavia
- fix(forge): report frontier invariant failures (#16850) by @figtracer
- fix(anvil): make balance additions atomic (#17151) by @figtracer
- chore: bump foundry-core to 82df1e45 (#17156) by @mablr
- fix(anvil): order Tempo nonce lanes (#17139) by @stevencartavia
- fix(forge): preserve symbolic regression caller (#17147) by @figtracer
- fix(cast): reject missing log block bounds (#17152) by @figtracer
- perf(forge): cache selector lookups (#17150) by @figtracer
- fix(anvil): serialize coherent state dumps (#17148) by @figtracer
- chore: bump foundry-core to 39c03a49 (#17157) by @decofe
- fix(forge): clean up failed --no-git installs (#17155) by @0xKarl98
- fix(forge): handle Windows paths in selectors and tests (#17160) by @decofe
- refactor(script): simplify recovery bounds (#17162) by @mablr
- fix(lint): don't report a boolean literal returned inside a tuple (#17154) by @CalvinTjoaquinn
- fix(script): recover Tempo batches (#17023) by @stevencartavia
- chore(deps): let Dependabot update indirect Cargo dependencies (#17164) by @decofe
- fix(forge): skip deploy helpers in removed source warning (#17172) by @decofe
- fix(forge): restore symbolic regression storage (#17161) by @figtracer
- fix(chisel): keep credentials out of session cache (#17143) by @0xKarl98
- fix(lint): deduplicate pending arithmetic writes (#17177) by @wavey0x
- docs(cheatcodes): fix
getBlobhashesdescription (#17170) by @ursiyan - chore: bump MSRV to 1.98 (#17188) by @stevencartavia
- fix(anvil): restore snapshot prevrandao on revert (#17184) by @stevencartavia
- fix(forge): reject create sender/signer mismatch (#17163) by @stevencartavia
- test(script): cover multichain lost responses (#17181) by @stevencartavia
- fix(anvil): prune reverted block states (#17187) by @stevencartavia
- fix(cheatcodes): broadcast salted deployCode via CREATE2 (#17192) by @stevencartavia
- fix(script): make --unlocked conflict with --gcp and --turnkey (#17168) by @aelmanaa
- fix(symbolic): honor empty precompile accounts (#17201) by @figtracer
- fix(forge): skip empty network passes before setup (#17209) by @mablr
- fix(cast): warn on failed access-list execution (#17210) by @figtracer
- fix(fmt): stabilize assignment member chains (#17205) by @mablr
- fix(fmt): stabilize indexed assignments (#17206) by @mablr
- test(cast): update ArbSys gas snapshot (#17215) by @mablr
- fix(cheatcodes): read symlink targets correctly (#17208) by @figtracer
- fix(forge): export compiler-compatible standard JSON (#17207) by @figtracer
- fix(evm): prevent OP fork fee panics (#17197) by @mablr
- fix(forge): keep filtered ABI builds incremental (#17211) by @figtracer
- fix(anvil): compile with Base alone (#17214) by @mablr
- fix(cast): replay prefix for EVM overrides (#17213) by @mablr
- refactor(chisel): isolate view and narrow session credentials (#17191) by @0xKarl98
- fix(symbolic): model empty ecrecover returndata (#17218) by @figtracer
- fix(symbolic): honor opcode activation forks (#17217) by @figtracer
- refactor(symbolic): reuse Alloy and revm helpers (#17223) by @figtracer
- fix(fmt): make the size estimate describe the printed form (#17137) by @CalvinTjoaquinn
- test(script): cover deployCode broadcast edges (#17225) by @mablr
- fix(cli): warn on dotenv loading errors (#17203) by @mablr
- chore(deps): bump revm-inspectors to 0.44.1 (#17226) by @mablr
- test(forge): fix Windows signer conflict snapshot (#17230) by @mablr
- fix(cast): list Turnkey signers in
cast wallet list --turnkey(#17169) by @aelmanaa - fix(symbolic): classify exceptional halts (#17212) by @figtracer
- fix(fuzz): preserve timed invariant seeds (#17099) by @figtracer
- fix(forge): preserve filtered test diagnostics (#17229) by @mablr
- docs(lint): fix incorrect-erc20/erc721-interface examples and scope (#17176) by @ursiyan
- fix(cast): reject ambiguous constructor args (#17233) by @figtracer
- fix(forge): enforce size limits in quiet mode (#17216) by @figtracer
- fix(traces): decode calldata with a trailing suffix (#17171) by @mattsse
- feat(tempo): label OUSD token (#17237) by @decofe
- fix(forge): enforce deny warnings on warm caches (#17202) by @mablr
- fix(fuzz): skip history-changing trace seeds (#17235) by @figtracer
- chore(deps): bump tempo dependencies to 6ef1f81 (#17241) by @decofe
- fix(evm): replay Tempo AA transactions faithfully (#17195) by @stevencartavia
- feat(cast): add tip20 role commands (#17246) by @mattsse
- fix(forge): recover filtered import cycles (#17238) by @figtracer
- fix(fmt): skip symlinks that escape the project (#17196) by @0xKarl98
- fix(tempo): align expiring nonce limits with T11 (#17244) by @mattsse
- fix(cheatcodes): bump sponsored 7702 authority nonces (#17193) by @stevencartavia
- fix(cheatcodes): roll back history storage wipe on revert (#17194) by @stevencartavia
- fix(anvil): report unavailable replay state (#17249) by @stevencartavia
- perf(anvil): replay blocks once for struct logs (#17250) by @stevencartavia
- test(script): cover sponsored Tempo handoff (#17251) by @stevencartavia
- chore(deps): bump taiki-e/install-action from 2.87.17 to 2.87.18 in the ci-weekly group (#17173) by @dependabot[bot]
- test(cast): relax Avalanche replay gas assertion (#17252) by @mablr
- fix(anvil): mark created accounts as added in trace statediff (#17106) by @banteg
- fix(forge): clear stale rerun failures (#16947) by @Bruce039
- fix(cast): preserve empty keychain scopes (#17255) by @figtracer
- perf(forge): narrow test linking fallback (#17254) by @mablr