github foundry-rs/foundry v1.8.5

2 hours ago

Foundry v1.8.5 is a focused patch release led by an Anvil mining fix for ready transactions left in the pool after a full block. Previously, burst submissions such as forge script --broadcast could stall indefinitely while Forge waited for receipts. It also includes targeted correctness improvements across Forge, Anvil, Cast, symbolic execution, Base, and Tempo.


Highlights

  • Kept Anvil mining while ready transactions remain after a full block, for both automine and evm_mine. Mining continues only when the previous block made progress, avoiding empty-block loops for transactions that can never fit (#17266) by @stevencartavia.
  • Restored Base's seeded genesis state across anvil_reset (#17320) by @mattsse.
  • Simplified the symbolic executor by removing redundant solver and execution layers while retaining end-to-end and nightly coverage (#17279, #17339) by @figtracer, @mattsse.
  • Improved invariant corpus replay by enforcing sender, target, and selector policies, restoring state after rejected replay entries, and validating persisted optimization results before reuse (#17274, #17286, #17292) by @stevencartavia, @figtracer.
  • Moved gas-snapshot checking until all test suites complete and kept forge test --list from contaminating the build cache (#17318, #17262) by @mattsse, @stevencartavia.
  • Aligned Parity trace responses and lookups with their expected wire semantics: replay responses now include transactionHash, trace_get follows trace addresses, mined traces omit nested precompile calls, and unknown blocks or transactions are reported consistently. Block trace methods now reject pending, and raw transaction tracing enforces the code-sender rule (#17301, #17302, #17303, #17304, #17306, #17309) by @mattsse.
  • Corrected call fee and gas preparation: fee-free calls run with zero base and blob base fees, cap-only calls pay the base fee, omitted gas is bounded by the sender's allowance, and conflicting fee or input fields are rejected (#17310, #17311, #17312, #17307) by @mattsse.
  • cast interface now detects verified proxies and generates the implementation interface instead of the proxy shell (#17153) by @sakulstra.
  • Fixed cast decode-tx --json to emit a JSON object instead of a JSON-encoded string (#17317) by @mattsse.
  • Improved Tempo replay and local-node behavior, including standard-envelope execution, gas-schedule preservation, local fee-token resolution, and omitted nonce handling (#17260, #17278, #17327, #17326) by @figtracer, @mattsse.

Compatibility notes

  • The public Rust APIs foundry_evm_symbolic::BUILTIN_SYMBOLIC_SOLVERS and EvmOpts::fork_network were removed as part of the symbolic and shared-EVM simplifications (#17279, #17339).
  • cast interface now emits the implementation ABI for verified proxies, and cast decode-tx --json now returns structured JSON rather than a JSON string (#17153, #17317).
  • Malformed values passed to envOr now revert instead of using the fallback (#16924).
  • Parity trace clients may need to account for the response and lookup changes described above, especially transactionHash in replay responses, trace-address indexing in trace_get, omitted nested precompile calls, and stricter unknown or pending block handling (#17301, #17302, #17303, #17306, #17309).

Full Changelog:

v1.8.4...v1.8.5

Contributors (17)

Don't miss a new foundry release

NewReleases is sending notifications on new releases.