v1.6.0-rc1
Foundry v1.6.0
Foundry v1.6.0 brings Osaka as the default EVM hardfork, major performance improvements with parallelized stateless fuzzing and configurable invariant check intervals (up to 3.6x faster deep runs), enhanced security testing with improved reentrancy detection and time-based invariant fuzzing, and additional Tempo blockchain integration across forge, cast, and anvil.
We recently crossed 10,000 GitHub 🌟 — thank you to everyone who has contributed, reported issues, and helped improve Foundry!
Performance
Parallelized Stateless Fuzzing ([#12713](https://github.com/foundry-rs/foundry/pull/12713))
Fuzz tests now run across multiple worker threads, significantly improving execution speed on multi-core machines. Each worker maintains its own corpus and periodically syncs with a master corpus, enabling efficient parallel exploration while sharing discovered coverage. Workers automatically distribute runs evenly and aggregate results after completion.
Invariant check_interval Config ([#13133](https://github.com/foundry-rs/foundry/pull/13133))
New check_interval config option controls how often invariants are asserted during deep runs:
| Value | Behavior |
|---|---|
0 | Only assert on the last call of each run (fastest) |
1 (default) | Assert after every call (current behavior, most precise) |
N | Assert every N calls AND always on the last call |
Benchmark: With check_interval = 10, deep invariant runs (1×1000 depth) are 3.6x faster (15.09s → 4.17s). Invariant checks consume ~86% of execution time in high-depth runs—reducing check frequency dramatically improves performance while still catching violations.
Other Performance Improvements
- perf: add dist profile for smaller release binaries ([#13097](https://github.com/foundry-rs/foundry/pull/13097)) by @onbjerg
- perf: compute literals only once ([#12716](https://github.com/foundry-rs/foundry/pull/12716)) by @DaniPopes
- perf: remove redundant allocation in receipt bloom calculation ([#13035](https://github.com/foundry-rs/foundry/pull/13035)) by @marukai67
Security Testing
Improved Reentrancy Detection with call_override ([#13127](https://github.com/foundry-rs/foundry/pull/13127))
The call_override invariant testing feature now correctly detects ETH transfer reentrancy vulnerabilities, including:
- EtherStore pattern: Classic DAO-style reentrancy where a handler sends ETH out and the attacker reenters
- Rari Capital pattern: Protocol-level reentrancy where external protocols send ETH to handlers
Key fixes include proper ETH transfer via journal before callback injection, clearing REVM's cached bytecode for EOA targets, and overriding calls when either caller OR target is a handler contract. Validated against a reproduction of the April 2022 Rari Capital hack.
Time-based Invariant Fuzzing ([#12616](https://github.com/foundry-rs/foundry/pull/12616))
New max_time_delay and max_block_delay invariant configs enable fuzzing of block timestamp and block number on consecutive transactions. This helps discover time-dependent vulnerabilities that only manifest under specific block timing conditions. Counterexamples now display the vm.warp() and vm.roll() calls needed to reproduce failures.
Improved Integration
Foundry-toolchain TypeScript Rewrite
The foundry-toolchain GitHub Action has been completely rewritten in TypeScript for improved maintainability and reliability. See v1.7.0 release.
Foundryup Rust Rewrite (Experimental)
Foundry v1.6.0 is accompanied by a new Rust rewrite of foundryup for better maintainability, testing, and compatibility. At the moment the new foundryup installer is still experimental, but in next releases we plan to sunset the old one and provide a much better experience for managing foundry installs.
To try out the new foundryup run:
curl -L https://raw.githubusercontent.com/foundry-rs/foundryup/HEAD/foundryup-init.sh | bash
foundryupNetwork Updates
Tempo Blockchain Integration
Additional Tempo network support is now available across the Foundry toolchain:
- feat(forge): add
--network tempoflag toforge init([#12819](https://github.com/foundry-rs/foundry/pull/12819)) by @onbjerg - Initialize projects pre-configured for Tempo - feat(cast): tempo nonce keys ([#12977](https://github.com/foundry-rs/foundry/pull/12977)) by @onbjerg - Support for Tempo's nonce key system
- feat(cast): add tempo tx construction support ([#12973](https://github.com/foundry-rs/foundry/pull/12973)) by @onbjerg - Build and sign Tempo transactions
- feat(anvil): basic tempo tx signing support ([#12974](https://github.com/foundry-rs/foundry/pull/12974)) by @onbjerg - Local development with Tempo transactions
- feat(
foundryup): add Tempo support ([#12775](https://github.com/foundry-rs/foundry/pull/12775)) by @zerosnacks - Install Tempo-enabled Foundry builds
Chain Support
- feat: add XDC Network + SKALE Base support by bumping
alloy-chains([#12710](https://github.com/foundry-rs/foundry/pull/12710)) by @zerosnacks - feat: use different gas calc for monad mainnet ([#12615](https://github.com/foundry-rs/foundry/pull/12615)) by @QEDK
- fix: use network-specific BaseFeeParams for Optimism in Anvil ([#12944](https://github.com/foundry-rs/foundry/pull/12944)) by @haythemsellami
Forge
Features
- feat: use Osaka as default EVM hardfork ([#13112](https://github.com/foundry-rs/foundry/pull/13112)) by @zerosnacks
- feat(forge selectors): cache selectors from abis ([#12742](https://github.com/foundry-rs/foundry/pull/12742)) by @JuaniRios
- feat(forge script): display contract name and function in tx output ([#13156](https://github.com/foundry-rs/foundry/pull/13156)) by @gakonst
- feat!(
forge script): add--interactiveflag for deploying with a single keypair ([#12608](https://github.com/foundry-rs/foundry/pull/12608)) by @zerosnacks - feat: forge verify-bytecode should automatically recompile upon running ([#12651](https://github.com/foundry-rs/foundry/pull/12651)) by @Jds-23
- feat(traces): add a -d | --depth flag for verbose traces, like tree ([#12643](https://github.com/foundry-rs/foundry/pull/12643)) by @tskoyo
- feat(
forge-lint): add custom errors rule ([#13126](https://github.com/foundry-rs/foundry/pull/13126)) by @milosdjurica - feat(lint): reduce default verbosity ([#12901](https://github.com/foundry-rs/foundry/pull/12901)) by @DaniPopes
- feat(fmt): Add
namespace_import_styleconfig ([#13108](https://github.com/foundry-rs/foundry/pull/13108)) by @quangloc99 - feat: add Sourcify support to forge clone ([#12900](https://github.com/foundry-rs/foundry/pull/12900)) by @avorylli
- feat: warn on soldeer.lock revision mismatch during build ([#12366](https://github.com/foundry-rs/foundry/pull/12366)) by @silvekkk
Fixes
- fix(forge): fail compilation on unresolved imports ([#12848](https://github.com/foundry-rs/foundry/pull/12848)) by @subwaycookiecrunch
- fix(forge): failing tests trigger early exit without --fail-fast ([#12785](https://github.com/foundry-rs/foundry/pull/12785)) by @0xferrous
- fix(forge): lookup path artifact if not in available artifacts ([#12927](https://github.com/foundry-rs/foundry/pull/12927)) by @grandizzy
- fix(forge): prevent gas underflow in delete operations on Cancun ([#13157](https://github.com/foundry-rs/foundry/pull/13157)) by @gakonst
- fix(forge): reseed cheatcodes rng in fuzz tests ([#12843](https://github.com/foundry-rs/foundry/pull/12843)) by @DaniPopes
- fix(forge): respect lint ignore config in solar compilation ([#12978](https://github.com/foundry-rs/foundry/pull/12978)) by @tefyosL-sol
- fix(
forge fmt): fix incorrect indentation for chained struct calls ([#13163](https://github.com/foundry-rs/foundry/pull/13163)) by @gakonst - fix(fmt): keep struct field access on same line after named args call ([#13166](https://github.com/foundry-rs/foundry/pull/13166)) by @gakonst
- fix(
forge-lint): ignore compilation warnings in exit code ([#13138](https://github.com/foundry-rs/foundry/pull/13138)) by @0xrusowsky - fix(coverage): write coverage file even when tests fail ([#12717](https://github.com/foundry-rs/foundry/pull/12717)) by @0xferrous
- fix(verify): handle lack of trailing slash in verifier url ([#12806](https://github.com/foundry-rs/foundry/pull/12806)) by @onbjerg
- fix(verify): improve error message for CREATE2 deployment failures in verify-bytecode ([#13176](https://github.com/foundry-rs/foundry/pull/13176)) by @grandizzy
- fix(verify): improve error message for unsupported chain in Etherscan verifier ([#12685](https://github.com/foundry-rs/foundry/pull/12685)) by @DeVikingMark
- fix(verify): mismatch between strip_prefix and strip_suffix ([#12563](https://github.com/foundry-rs/foundry/pull/12563)) by @Bashmunta
- fix(verify): support chains with custom Sourcify-compatible APIs ([#13175](https://github.com/foundry-rs/foundry/pull/13175)) by @mattsse
- fix(script): set msg.sender from TURNKEY_ADDRESS when using --turnkey ([#13149](https://github.com/foundry-rs/foundry/pull/13149)) by @gakonst
- fix(config): error on unknown profile with fallback for nested libs ([#13153](https://github.com/foundry-rs/foundry/pull/13153)) by @gakonst
- fix(config): preserve hyphenated profile names ([#13172](https://github.com/foundry-rs/foundry/pull/13172)) by @gakonst
- fix(config): prints error when accessing invalid etherscan config ([#9951](https://github.com/foundry-rs/foundry/pull/9951)) by @andelf
- fix(config): reject bare versions in compilation restrictions ([#12955](https://github.com/foundry-rs/foundry/pull/12955)) by @tefyosL-sol
- fix(config): warn on unknown keys in all config sections ([#13154](https://github.com/foundry-rs/foundry/pull/13154)) by @grandizzy
Cheatcodes
Features
- feat(cheatcodes): add getRecordedLogsJson cheatcode ([#13093](https://github.com/foundry-rs/foundry/pull/13093)) by @grandizzy
- feat(cheatcodes): support both 4844/7594 formats in
attachBlob([#13054](https://github.com/foundry-rs/foundry/pull/13054)) by @mablr - feat(fuzz): add address mutation variant to select from dictionary ([#13090](https://github.com/foundry-rs/foundry/pull/13090)) by @grandizzy
Fixes
- fix(cheatcodes):
vm.mockFunctionto work correctly with delegatecall ([#13117](https://github.com/foundry-rs/foundry/pull/13117)) by @quangloc99 - fix(invariant): preserve state across calls during replay ([#13084](https://github.com/foundry-rs/foundry/pull/13084)) by @grandizzy
- fix(evm): pin fork block number to prevent state inconsistency ([#13085](https://github.com/foundry-rs/foundry/pull/13085)) by @grandizzy
- fix(evm): use timestamp-based blob base fee calculation ([#12959](https://github.com/foundry-rs/foundry/pull/12959)) by @cakevm
- fix: emit console.log on fuzz test last run at verbosity >= 2 ([#12478](https://github.com/foundry-rs/foundry/pull/12478)) by @avorylli
- fix(preprocessor): mark getCode as view in VmContractHelper ([#13089](https://github.com/foundry-rs/foundry/pull/13089)) by @grandizzy
Cast
Features
- feat(cast): add --curl flag to output equivalent curl commands ([#13114](https://github.com/foundry-rs/foundry/pull/13114)) by @gakonst
- feat(cast): add eip7594 support ([#13058](https://github.com/foundry-rs/foundry/pull/13058)) by @mablr
- feat(cast): add support for raw transaction data with --data flag in send ([#12712](https://github.com/foundry-rs/foundry/pull/12712)) by @Jds-23
- feat(cast): add trace_transaction and trace_rawTransaction ([#12788](https://github.com/foundry-rs/foundry/pull/12788)) by @figtracer
- feat(cast): add tx flags to
erc20command ([#13002](https://github.com/foundry-rs/foundry/pull/13002)) by @mablr - feat(cast): cache Etherscan sources under Foundry cache with temp fallback ([#12025](https://github.com/foundry-rs/foundry/pull/12025)) by @sashass1315
- feat(cast): derive accounts from mnemonic ([#12700](https://github.com/foundry-rs/foundry/pull/12700)) by @leovct
- feat(cast): strip WalletOpts and EtherscanOpts from cast subcommands that dont expect a signer or need etherscan api ([#12705](https://github.com/foundry-rs/foundry/pull/12705)) by @tskoyo
- feat(cast): wallet sign-auth --self-broadcast ([#12624](https://github.com/foundry-rs/foundry/pull/12624)) by @0xferrous
- feat(cast): accept multiple 7702 authorizations ([#12627](https://github.com/foundry-rs/foundry/pull/12627)) by @0xferrous
- feat(cast):
--replay-system-txes/--sysarg to cast run system txes ([#12853](https://github.com/foundry-rs/foundry/pull/12853)) by @grandizzy - feat: alias
cast erc20 transfertocast erc20 send([#12990](https://github.com/foundry-rs/foundry/pull/12990)) by @onbjerg - feat: support cast logs query chunking ([#12692](https://github.com/foundry-rs/foundry/pull/12692)) by @stevencartavia
Fixes
- fix(cast): handle errors in list_local_senders() ([#12419](https://github.com/foundry-rs/foundry/pull/12419)) by @Ragnar
- fix(cast): treat threads=0 as logical cores ([#12799](https://github.com/foundry-rs/foundry/pull/12799)) by @ANtutov
- fix: add plasma verifier err msg ([#12790](https://github.com/foundry-rs/foundry/pull/12790)) by @grandizzy
Anvil
Features
- feat(anvil): add
eth_fillTransactionsupport ([#12595](https://github.com/foundry-rs/foundry/pull/12595)) by @mablr - feat(anvil): extend Content-Type support on Beacon API ([#12611](https://github.com/foundry-rs/foundry/pull/12611)) by @mablr
Fixes
- fix(anvil): insufficient allowance → insufficient balance ([#12855](https://github.com/foundry-rs/foundry/pull/12855)) by @anim001k
- fix(anvil): propagate gas estimation errors ([#12813](https://github.com/foundry-rs/foundry/pull/12813)) by @jxom
- fix(anvil): resolve incorrect historical states dump behavior ([#12732](https://github.com/foundry-rs/foundry/pull/12732)) by @w1tcher
- fix(anvil): use B256 instead of TxHash for block hash parameters ([#12961](https://github.com/foundry-rs/foundry/pull/12961)) by @pivasdesant
- fix(anvil): use suggested priority fee by default ([#13092](https://github.com/foundry-rs/foundry/pull/13092)) by @tefyosL-sol
Chisel
Fixes
- fix(chisel): don't panic on bad pc/memory ([#12674](https://github.com/foundry-rs/foundry/pull/12674)) by @DaniPopes
- fix(chisel): uninitalized variables ([#12937](https://github.com/foundry-rs/foundry/pull/12937)) by @DaniPopes
Other
- feat: add precompile decoding for Prague BLS12-381 and Osaka P256VERIFY ([#13094](https://github.com/foundry-rs/foundry/pull/13094)) by @DaniPopes
- feat: support solc prereleases ([#12599](https://github.com/foundry-rs/foundry/pull/12599)) by @grandizzy
- feat(docker): add semver major/minor floating tags on release ([#13182](https://github.com/foundry-rs/foundry/pull/13182)) by @zerosnacks
- fix(cli): add
--no-proxyto disablereqwestproxying to prevent crash on macOS in sandboxed environments ([#13155](https://github.com/foundry-rs/foundry/pull/13155)) by @gakonst - fix(foundryup): strip leading backslash from sha256sum ([#12827](https://github.com/foundry-rs/foundry/pull/12827)) by @DaniPopes
- fix:
svm fails to download solc 0.8.33 on linux/arm64, bumpsvm-rs([#13007](https://github.com/foundry-rs/foundry/pull/13007)) by @zerosnacks - added MONAD_SYSTEM_ADDRESS ([#12585](https://github.com/foundry-rs/foundry/pull/12585)) by @Jayakumar
- docs(config): complete fuzz and invariant sections with 20+ missing options ([#12789](https://github.com/foundry-rs/foundry/pull/12789)) by @aso20455
- docs(lint): add missing lint rules to README ([#12758](https://github.com/foundry-rs/foundry/pull/12758)) by @dizer-ti
- docs: clean up config docs ([#12296](https://github.com/foundry-rs/foundry/pull/12296)) by @onbjerg
- chore(deps): update to soldeer 0.10.0 ([#12835](https://github.com/foundry-rs/foundry/pull/12835)) by @beeb
- chore(deps): update figment to figment2 v0.11 ([#13099](https://github.com/foundry-rs/foundry/pull/13099)) by @DaniPopes
- chore(deps): bump to revm 34 ([#13130](https://github.com/foundry-rs/foundry/pull/13130)) by @zerosnacks
- chore(deps): bump mdbook to 0.5 ([#13064](https://github.com/foundry-rs/foundry/pull/13064)) by @zerosnacks
- chore: bump evm-disassembler version to support CLZ and EOF opcodes ([#13050](https://github.com/foundry-rs/foundry/pull/13050)) by @christn
- chore(anvil): deprecate
getBlobSidecarsBeacon API endpoint ([#12568](https://github.com/foundry-rs/foundry/pull/12568)) by @mablr - chore(anvil): remove
anvil_getBlobSidecarsByBlockIdendpoint ([#13022](https://github.com/foundry-rs/foundry/pull/13022)) by @mablr
Full Changelog
Previous Releases
| Version | Release Date | Release Notes |
|---|---|---|
| v1.5.1 | December 19, 2025 | View |
| v1.5.0-rc1 | November 17, 2025 | View |
| v1.5.0 | November 24, 2025 | View |
| v1.4.4 | October 30, 2025 | View |
| v1.4.3 | October 22, 2025 | View |
| v1.4.2 | October 18, 2025 | View |
| v1.4.1 | October 14, 2025 | View |
| v1.4.0 | October 8, 2025 | View |
| v1.4.0-rc3 | October 6, 2025 | View |
| v1.4.0-rc2 | October 3, 2025 | View |
| v1.4.0-rc1 | October 1, 2025 | View |
| v1.3.6 | September 16, 2025 | View |
| v1.3.5 | September 8, 2025 | View |
| v1.3.4 | September 3, 2025 | View |
| v1.3.3 | August 29, 2025 | View |
| v1.3.2 | August 21, 2025 | View |
| v1.3.1 | August 12, 2025 | View |
| v1.3.0-rc4 | July 30, 2025 | View |
| v1.3.0 | July 31, 2025 | View |
| v1.3.0-rc3 | July 29, 2025 | View |
| v1.3.0-rc2 | July 24, 2025 | View |
| v1.3.0-rc1 | July 17, 2025 | View |
| v1.2.3 | June 8, 2025 | View |
| v1.2.2 | May 30, 2025 | View |
| v1.2.1-rc | May 21, 2025 | View |
| v1.2.1 | May 26, 2025 | View |
| v1.2.0-rc1 | May 19, 2025 | View |
| v1.2.0-rc | May 13, 2025 | View |
| v1.2.0 | May 19, 2025 | View |
| v1.1.0 | April 28, 2025 | View |
This page is automatically updated with the latest release information from the Foundry GitHub repository.
