Foundry v1.8.2 builds on v1.8.1 with fixes across fork execution, scripting, cheatcodes, formatting, linting, and Chisel sessions. It also adds Safe and token commands to Cast, expands invariant fuzzing and symbolic follow-up, and enforces existing project lockfiles.
- Fixed nested broadcast nonce tracking under isolation so sender nonces advance when a nested broadcast call is not executed as a separate isolated transaction (#16853) by @mablr.
- Fixed dynamic test linking generating malformed Solidity for parenthesized constructor expressions, including
(new Target){value: 1 ether}()and calls without options (#16854) by @mablr. - Existing
foundry.lockfiles are now checked before Forge, Cast, or Chisel compile or consume project artifacts; dependency mismatches fail before automatic installation (#16817) by @mablr. - Added
forge reinitto restore Git submodules and fixed missing-dependency installation and remapped test dependency handling (#16508, #16722, #16686) by @figtracer, @decofe, @mablr. - Added resolved compiler settings to
forge build -vvand a runtime--hardforkoverride for Forge and Chisel (#16337, #16406) by @figtracer, @stevencartavia. - Fixed custom-layout contract linking, typed enum bindings, compiler restrictions in filtered builds, and Solc executable lookup through
PATH(#16488, #16379, #16530, #16494) by @stevencartavia, @figtracer, @decofe. - Fixed script RPC configuration handling, broadcast transaction-hash indexing, and panics when broadcast files and their sensitive caches disagree (#16589, #16715, #16580) by @mablr, @gomesalexandre.
- Fixed constructor-argument verification for dynamic types and made
verify-bytecodereject provided constructor arguments that do not match the deployment (#16569, #16056) by @gomesalexandre, @mattsse.
- Fixed exact revert-data matching and required four-byte prefixes for partial revert matches (#16428, #16446) by @figtracer, @mattsse.
- Preserved gas and refund snapshots across isolated execution, including state gas, and fixed false differences in zero-gas snapshot tolerance checks (#16442, #16490, #16604, #16565) by @figtracer, @gomesalexandre.
- Added state-gas reporting through
Vm.Gas.gasStateUsed, Amsterdam slot-number cheatcodes, and additional secp256k1 arithmetic operations (#16387, #16784, #16381) by @figtracer, @mattsse, @StackOverflowExcept1on. - Enforced filesystem permissions for
dumpState, protectedfoundry.tomlfromvm.removeDir, and fixedexpectSafeMemorypanics on short calldata (#16513, #16542, #16576) by @DicksonWu654, @gomesalexandre. - Separated corpus paths for overloaded fuzz tests, excluded skipped corpus inputs, and preserved useful invariant corpus entries (#16307, #16365, #16837) by @stevencartavia, @figtracer.
- Added stateful branch-frontier artifacts and targeted symbolic follow-up that feeds concretely confirmed branch-flipping and invariant-failing sequences back into the corpus (#16614, #16823) by @figtracer.
- Fixed symbolic memory-backed array handling, deferred call-branch retries, and enforcement of path limits across symbolic-size forks and nested call completions (#16747, #16800, #16825, #16848) by @figtracer, @gomesalexandre, @mablr.
- Fixed coverage tracking for both Yul branch outcomes and line attribution before branch bodies (#16835, #16836) by @decofe, @figtracer.
- Fixed comment preservation and formatting stability around for-loop headers, constructors, modifiers, tuples, mappings, and binary assignments (#16648, #16787, #16786, #16840) by @gomesalexandre, @figtracer.
- Preserved CRLF lines inside disabled formatting regions and stabilized multiline comment formatting (#16806, #16808) by @figtracer.
- Changed the default lint selection to high, medium, and low severities, and excluded configured test and script directories while retaining selected unsafe-cheatcode diagnostics (#16622, #16663) by @figtracer.
- Added environment-capture warnings and opt-in reporting of unused inline suppressions with
--report-unused-suppressions(#16755, #16841) by @decofe, @Jorge-Polanco-Roque. - Improved detection of returned storage mutations and storage-pointer aliases, and removed false positives for internal unused returns, defaulted loop counters, and single-bit mask shifts (#16475, #16582, #16813, #16667, #16710) by @stevencartavia, @gomesalexandre, @mablr, @figtracer.
- Preserved Arbitrum L1
block.numbersemantics during local execution while keeping RPC and ArbSys block numbers on L2; fixed Arbitrum transaction, receipt, and blob-environment handling (#16771, #16465, #16514) by @mablr, @mattsse, @figtracer. - Fixed Tempo fork account-state loading to avoid placeholder native balances and incorrect gas usage, including historical reads and downstream forks (#16811) by @mablr.
- Fixed Optimism fee handling for calls and blob transactions, and Celo replay support for CIP-64 transactions and the transfer precompile (#16507, #16519, #16500, #16512) by @stevencartavia, @figtracer, @mablr, @DicksonWu654.
- Added
--fork-state-by-numberfor RPC providers without state-by-hash support and--no-fork-node-infoto skip fork identity probes (#16774, #16778) by @dkatzan, @andreyobruchkov. - Kept forked
trace_callandtrace_blockOpcodeGasrequests from drifting to the upstream tip, and applied consistent fork-boundary rules to block and transaction queries (#16733, #16732, #16720) by @gomesalexandre. - Fixed pending-block query crashes, pending receipt responses, queued transaction replacement, and snapshot time-offset restoration (#16714, #16573, #16638, #16540) by @gomesalexandre, @stevencartavia.
- Fixed fee-history percentile handling, zero-count and zero-gas-limit cases, and validation of future or reversed log ranges (#16538, #16539, #16611, #16644, #16596, #16598) by @stevencartavia, @gomesalexandre.
- Fixed blob transaction simulation stack overflows, applied genesis headers, and included simulated block size and block-access-list hashes (#16486, #16623, #16625, #16673) by @figtracer, @stevencartavia, @mattsse.
- Added Safe account deployment, delegate management, transaction proposals, simulation, signing, and execution commands (#16377) by @decofe.
- Added ERC-4626 vault commands and inspection, plus an ERC-2612 permit helper (#16601, #16605, #16672) by @mattsse.
- Added event decoding with local artifacts,
cast call --delegate, and chain-provided RPC endpoint selection (#16408, #16422, #16536) by @stevencartavia, @miquelcabot. - Fixed mined-transaction replay and HyperEVM system-transaction handling, and aligned transaction network selection with configuration and RPC discovery (#16457, #16451, #16790) by @mattsse, @mablr.
- Preserved explicit transaction types when sending through browser wallets and added support for piped keystore input and named accounts in the default keystore (#16827, #16528, #16219) by @figtracer, @mablr, @riba2534.
- Fixed multi-recipient session-scope parsing, gaps in
vaddr watchtransfer detection, and negative-number formatting infrom-weiandformat-units(#16688, #16716, #16646) by @gomesalexandre.
- Rejected session IDs that escape the cache directory or address NTFS alternate data streams, and fixed stale session IDs and autosave collisions after deletion or rename (#16689, #16707, #16697, #16687) by @gomesalexandre, @Aditya-9-6.
- Fixed Solidity prelude-file handling and cleared persisted
--forcebehavior when loading sessions (#16510, #16511) by @DicksonWu654.