Skip to content

Releases: foundry-rs/foundry

Nightly (2025-10-28)

28 Oct 06:11
7d49f4e

Choose a tag to compare

Nightly (2025-10-28) Pre-release
Pre-release

Other

Full Changelog:

nightly...nightly-7d49f4e999f244ccb58bdc1dbd3b37e35caff95a

Nightly (2025-10-28)

28 Oct 11:07
5e0b8bc

Choose a tag to compare

Nightly (2025-10-28) Pre-release
Pre-release

Other

Full Changelog:

nightly...nightly-5e0b8bcff30403bab84721a776a2867c9c92bb0e

Nightly

10 Jul 18:13
7d49f4e

Choose a tag to compare

Nightly Pre-release
Pre-release

Other

Full Changelog:

nightly...nightly-5e0b8bcff30403bab84721a776a2867c9c92bb0e

Nightly (2025-10-27)

27 Oct 06:11
6ccbf56

Choose a tag to compare

Nightly (2025-10-27) Pre-release
Pre-release

Other

  • chore(deps): weekly cargo update (#12286) by @github-actions[bot]
  • chore: reduce number of shrink runs for slow test (#12291) by @grandizzy
  • feat(forge): exit test run gracefully if show progress (#12290) by @grandizzy
  • docs: correct logging documentation accuracy in debugging.md (#12287) by @avorylli
  • chore: simplify Bytes handling in revert errors (#12280) by @Sharilleed223
  • fix(script): prevent --verify without --broadcast from causing deployment not found error (#11734) by @DeVikingMark
  • chore(fmt): prefer_compact + indent bin expr w/ parenthesis (#12281) by @0xrusowsky
  • fix: enable IPC tests on Windows (#12282) by @DeVikingMark
  • fix(fmt): simplify boolean expression in Solidity formatter (#12275) by @phrwlk

Full Changelog:

nightly...nightly-6ccbf569d191af7d857d4085d367113f1b0aecdf

Nightly (2025-10-26)

26 Oct 06:11
d4461df

Choose a tag to compare

Nightly (2025-10-26) Pre-release
Pre-release

Other

Full Changelog:

nightly...nightly-d4461df78228f5d5d55bf8e4b3d428cf1f33aba3

Nightly (2025-10-25)

25 Oct 06:11
765b856

Choose a tag to compare

Nightly (2025-10-25) Pre-release
Pre-release

Other

Full Changelog:

nightly...nightly-765b8562482bf3e0227412e26ea15abae980dee1

Nightly (2025-10-24)

24 Oct 06:11
cab3113

Choose a tag to compare

Nightly (2025-10-24) Pre-release
Pre-release

Other

  • chore: set seed for flaky tests, use etherscan api key (#12255) by @grandizzy
  • fix(npm): handle unhandled promise rejection in binary download (#12261) by @maradini77

Full Changelog:

nightly...nightly-cab31132cbb5edde1477b4f18380a6777afb7ef3

Nightly (2025-10-23)

23 Oct 06:11
09edf8f

Choose a tag to compare

Nightly (2025-10-23) Pre-release
Pre-release

Other

Full Changelog:

nightly...nightly-09edf8f3c9c447d8f055c58902a5ea770ff035ca

v1.4.3

22 Oct 04:45
fa9f934

Choose a tag to compare

Foundry v1.4.3

Foundry v1.4.3 is a bugfix release for forge and anvil.

Anvil Fixes

  • fix(anvil): get account info from db when node block > fork block (#12175) by @grandizzy

Forge Fixes

Full Changelog:

v1.4.2...v1.4.3

stable

20 Dec 08:57
fa9f934

Choose a tag to compare

Foundry v1.4.3

Foundry v1.4.3 is a bugfix release for forge and anvil.

Anvil Fixes

  • fix(anvil): get account info from db when node block > fork block (#12175) by @grandizzy

Forge Fixes

Foundry v1.4.2

Foundry v1.4.2 is a bugfix release for forge fmt and anvil.

Anvil Fixes

  • fix(anvil): eth_getAccountInfo check if predates fork inclusive (#12101) by @grandizzy

Forge Fixes

Foundry v1.4.1

Foundry v1.4.1 is a bugfix release for forge fmt and anvil.

Anvil Fixes

  • fix(anvil): set envelope for non deposit tx in debug tracers (#12080) by @grandizzy

Forge Fixes

Foundry v1.4.0

This release brings up to 10.52% better performance for forge coverage and up to 11.41% for fuzzed tests, a new formatter built on Solar, enhanced handling of multiple chain configurations and deployments, and an improved testing and debugging experience with backtraces and custom network precompiles. Foundry v1.4 is Osaka-ready, comes with new Anvil endpoints, deprecates the Etherscan v1 API, and publishes forge as an npm package.

Performance Improvements

Foundry v1.4 leverages Solar API to analyze contracts and identify coverage items (#11565), and updates coverage implementation to align with that of forge test (#11801). It also completely removes the proptest runner from fuzzed tests (#11061), resulting in up to a 10.52% performance improvement for forge coverage and up to an 11.41% performance improvement in fuzzed tests execution speed on the same benchmarked projects as previous versions.

Forge Coverage

Repository v1.3.6 v1.4.0 X Times Faster % Improvement
ithacaxyz-account 14.91 s 13.34 s x1.12 10.52%
Uniswap-v4-core 1m 34.8s 1m 30.3s x1.05 4.74%
sparkdotfi-spark-psm 3m 49.3s 3m 40.2s x1.04 3.97%

Forge Fuzz tests

Repository v1.3.6 v1.4.0 X Times Faster % Improvement
ithacaxyz-account 3.18 s 3.02 s x1.05 5.03%
solady 2.39 s 2.24 s x1.07 6.28%
Uniswap-v4-core 6.84 s 6.20 s x1.10 9.36%
sparkdotfi-spark-psm 3.07 s 2.72 s x1.13 11.41%

Enhanced configuration

Configuration inheritance

Foundry v1.4 supports configuration inheritance through the extends field in foundry.toml, making it easier to maintain a shared base configuration across multiple projects or profiles (#11284). This enables cleaner setups and reduces duplication by inheriting from a base configuration file:

[profile.default]
extends = "./base-config.toml"
src = "src"
test = "test"

For more details please refer to configuration inheritance docs.

Multi-chain configuration

The newly added forge-std config helper, built on top of Foundry v1.4 cheatcodes, provides a streamlined way to manage configuration for multi-chain environments in tests and scripts. It automatically loads and parses TOML configuration files, creates forks for specified chains, and provides type-safe access to configuration variables.
Loading configuration and creating forks for each chain specified in the config can be done by calling _loadConfigAndForks function, which also supports updating configurations on the fly.

function _loadConfigAndForks(string memory filePath, bool writeToFile) internal

Scripting workflows, in particular, gain significant advantages from the features of the Config contract. Please refer to config helper docs and scripting with config docs for more details.
For a complex, production-ready example, please see Ithaca's account deploy script and configuration.

We're continuously working to improve multi-chain support, please share your feedback on the current approach and suggest new features or enhancements in #11449.

Enhanced testing UX

Foundry v1.4 introduces backtraces (#11547) that include the exact line number in the Solidity source code corresponding to the compiled bytecode where the error or revert occurred.

[FAIL: ERC20: transfer amount exceeds allowance] testTransferFromWithoutApproval() (gas: 28771)
Traces:
  [28771] ForkBacktraceTest::testTransferFromWithoutApproval()
    ├─ [22928] ForkedERC20Wrapper::transferFromWithoutApproval(0x55FE002aefF02F77364de339a1292923A15844B8, 0x000000000000000000000000000000000000dEaD, 1000000 [1e6])
    │   ├─ [18884] FiatTokenProxy::fallback(0x55FE002aefF02F77364de339a1292923A15844B8, 0x000000000000000000000000000000000000dEaD, 1000000 [1e6])
    │   │   ├─ [11573] FiatTokenV2_2::transferFrom(0x55FE002aefF02F77364de339a1292923A15844B8, 0x000000000000000000000000000000000000dEaD, 1000000 [1e6]) [delegatecall]
    │   │   │   └─ ← [Revert] ERC20: transfer amount exceeds allowance
    │   │   └─ ← [Revert] ERC20: transfer amount exceeds allowance
    │   └─ ← [Revert] ERC20: transfer amount exceeds allowance
    └─ ← [Revert] ERC20: transfer amount exceeds allowance

Backtrace:
  at FiatTokenV2_2.transferFrom
  at FiatTokenProxy.fallback
  at ForkedERC20Wrapper.transferFromWithoutApproval (src/ForkedERC20Wrapper.sol:35:24)
  at ForkBacktraceTest.testTransferFromWithoutApproval (test/ForkBacktrace.t.sol:28:96)

Forge Formatter

Foundry v1.4 ships with a new Solidity formatter (forge fmt) built on top of Solar and replacing the previous Solang-based implementation and its limitations (#10907). This change enables faster support for new Solidity language features and allows us to address long-standing formatting bugs that were previously blocked by Solang dependency.

We've aimed for feature parity with the legacy formatter, but there may still be some edge cases that aren’t fully covered yet, so please be aware and report any issues you encounter.

Coverage-Guided Fuzzing

In addition to extending coverage-guided fuzzing and time-based campaigns to stateless fuzz tests, this version introduces ABI mutations (such as bit-flip, interesting word, increment/decrement, and Gaussian noise mutators) to enhance test coverage and help uncover new execution paths by generating diverse and edge-case inputs (#11061).

Custom Network Precompiles

Beginning with the transfer precompile contributed by the Celo team for Anvil (#11209), we have extended support to forge and cast components, making it simpler for external contributions. If you want to contribute support for a custom network, please check out documentation and Celo example within foundry-evm-networks crate.

Anvil Improvements

With this release, Anvil adds support for JS and prestate tracers, and print traces and logs when using --print-traces switch, enabling more powerful and customizable debugging capabilities. Additionally, several new RPC endpoints have been introduced:

  • eth_config: exposes Anvil's current configuration, such as chain ID, fork settings, and feature flags (#11591).
  • anvil_impersonateSignature: allows simulating transactions as if they were signed by a given address, useful for testing signature-based flows (#11195).
  • anvil_getBlobSidecarsByBlockId: returns the blobs for a given transaction hash (#11828).

Other

  • forge lint improvements: mixed case exceptions lint, ERC20 transfer check
  • improve state diffs cheatcodes by adding nonce and balance diffs and by using storage layout to decode values
  • addition of native vm.bound cheatcode that enables log-uniform sampling
  • updated Sourcify integration to support API ...
Read more