Skip to content

Releases: foundry-rs/foundry

Nightly (2025-11-18)

18 Nov 06:12
4d473c3

Choose a tag to compare

Nightly (2025-11-18) Pre-release
Pre-release

Other

  • added MONAD_SYSTEM_ADDRESS (#12585) by @Jayakumar2812
  • chore(anvil): deprecate getBlobSidecars Beacon API endpoint (#12568) by @mablr
  • feat(anvil): add eth_fillTransaction support (#12595) by @mablr
  • chore(deps): bump crate-ci/typos from 1.39.0 to 1.39.2 (#12593) by @dependabot[bot]
  • chore(deps): bump taiki-e/install-action from 2.62.49 to 2.62.52 (#12592) by @dependabot[bot]
  • chore(deps): bump DeterminateSystems/determinate-nix-action from 3.13.0 to 3.13.1 (#12594) by @dependabot[bot]

Full Changelog:

nightly...nightly-4d473c3d99abee77cea619e3cc70f01a4bce3d66

Nightly (2025-11-18)

18 Nov 12:10
005e737

Choose a tag to compare

Nightly (2025-11-18) Pre-release
Pre-release

Other

Full Changelog:

nightly...nightly-005e737318b486da181b31ecbd05b44732f0e344

Nightly

10 Jul 18:13
005e737

Choose a tag to compare

Nightly Pre-release
Pre-release

Other

Full Changelog:

nightly...nightly-005e737318b486da181b31ecbd05b44732f0e344

v1.5.0-rc1

17 Nov 10:22
1c57854

Choose a tag to compare

Foundry v1.5.0

Foundry v1.5.0 release comes with an improved fuzzer that use Solar to analyze contracts and extract interested values from AST, and incorporate updated logic to minimize counterexamples generated by invariant tests. This version adds support for browser extension wallets, provides a simpler way to interact with ERC20 tokens using cast and publishes all foundry binaries as npm packages. It also continues the effort to improve new forge formatter rolled out in previous version and makes it more customizable.

Fuzzed tests improvements

AST seeded dictionary

Foundry v1.5.0 leverages the Solar API to analyze contracts, collect all relevant AST literals from the sources, and use those values to generate inputs for the fuzzing campaign (#12015).
For example, with this addition a counterexample for the simple test below can be generated within a couple of runs:

function testHash(bytes memory v) external {
    assert(keccak256(v) != keccak256("hello"));
}

Early testers have reported substantially improved fuzzing results and we are running additional benchmarks to quantify the effectiveness.

Improved counterexample shrinking

In previous versions, counterexamples generated by invariant tests were replayed and minimized only once. In Foundry v1.5.0, the call sequence is replayed multiple times until all configured shrink runs are completed (#12180). Additionally, the counterexamples saved on disk and replayed on subsequent campaigns, are now also minimized (#12351). This allows Foundry to produce a more thoroughly minimized call sequence that can be used to generate unit tests and reproduce smart contract invariant violations.

Browser wallet integration

Foundry v1.5.0 introduces support for browser extension wallets in the cast send and cast wallet sign commands, enabling developers to sign transactions directly in the browser (#12302). Future releases will expand browser wallet support to other Foundry commands. We look forward to get external contributions to improve the interface and feature set of the browser wallet.

To try it out, pass the --browser flag to cast send to send a transaction using any of your browser wallets: cast send <TO> --value <VALUE> --rpc-url <RPC_URL> --browser

Porto send

Additionally you can sign messages and typed data with cast wallet sign: cast wallet sign --browser "Hello World!"

Porto Sign

ERC20 support in cast

This release introduces the cast erc20 command to facilitate interaction with ERC-20 tokens (#12258 #12381). This makes it simple to query balances, perform transfers, and access other ERC-20 token details.

  balance       Query ERC20 token balance [aliases: b]
  transfer      Transfer ERC20 tokens [aliases: t]
  approve       Approve ERC20 token spending [aliases: a]
  allowance     Query ERC20 token allowance [aliases: al]
  name          Query ERC20 token name [aliases: n]
  symbol        Query ERC20 token symbol [aliases: s]
  decimals      Query ERC20 token decimals [aliases: d]
  total-supply  Query ERC20 token total supply [aliases: ts]
  mint          Mint ERC20 tokens (if the token supports minting) [aliases: m]
  burn          Burn ERC20 tokens [aliases: bu]

New cheatcodes

Foundry v1.5.0 includes a set of new cheatcodes designed to improve the testing experience:

  • getEvmVersion/setEvmVersion to retrieve and change the execution EVM version within tests and scripts (#12014)
  • signWithNonce to create deterministic ECDSA signatures using a specified ephemeral nonce (#11267)
  • getStorageSlots leverage the storage layout to accurately identify the base slot of a variable (#11537)

npm packages

Continuing the work introduced in v1.4.0 for forge, v1.5.0 publishes the remaining Foundry binaries as npm packages. This allows tools such as bun, npx, pnpm to easily install and run any Foundry executable directly from the npm registry (#11945).

bun x @foundry-rs/anvil --version
npx --yes @foundry-rs/cast --version
pnpm dlx --silent @foundry-rs/chisel --version

Performance Improvements

Anvil Features

  • feat(anvil): wire eth_protocolVersion, eth_hashrate, eth_coinbase RPCs (#11934) by @sashass1315
  • perf(anvil): optimize internal data passing in log queries (#11896) by @silvekkk
  • feat(anvil): add /eth/v1/beacon/blobs beacon endpoint (#12182) by @mablr
  • feat(anvil): add debug_dbGet endpoint (#12375) by @mablr
  • perf(anvil): avoid unnecessary transaction vector cloning in Block::new (#12393) by @CreeptoGengar
  • feat(anvil): Implement alloy_evm FromRecoveredTx trait for anvil TypedTransaction (#12424) by @mablr
  • perf(anvil): avoid snapshot cloning when counting ready transactions (#12432) by @phrwlk
  • fix(anvil): set evm block number to input value (#12490) by @Syzygy106
  • feat(anvil): handle signature impersonation for EIP-7702 authorization list (#12553) by @mablr

Anvil Fixes

  • anvil: remove unused BlockNumberOrTag import in hardfork tests (#11952) by @anim001k
  • fix: use blobparams for blob fee calc (#12056) by @mattsse
  • fix(anvil): set envelope for non deposit tx in debug tracers (#12080) by @grandizzy
  • fix(anvil): eth_getAccountInfo check if predates fork inclusive (#12101) by @grandizzy
  • fix(anvil): always disable nonce check for eth_calls (#12144) by @grandizzy
  • fix(anvil): get account info from db when node block > fork block (#12175) by @grandizzy
  • fix(anvil): remove transactions before block/hash in unwind_to to prevent leaks (#12178) by @sashass1315
  • fix(anvil): preserve OP receipt fields in convert_to_anvil_receipt (#12396) by @Syzygy106
  • fix(anvil): respect configured fork initial_backoff in setup_fork_db_config (#12401) by @phrwlk
  • fix(anvil): serialize genesis time as string (#12512) by @StackOverflowExcept1on

Cast Features

Cast Fixes

Forge Features

Forge Fixes

  • fix(fmt): preserve comment position in disabled lines (#11922) by @0xrusowsky
  • fix: look through all matching permissions in is_path_allowed (#10679) by @rubydusa
  • fix(forge): replay fuzz failure only if same test selector (#11947) by @grandizzy
  • fix(doc): reuse solar sema compiler (#11980) by @grandizzy
  • fix(forge): apply correct permission scoping in workflow templates (#11986) by @zerosnacks
  • fix(chisel): disable com...
Read more

Nightly (2025-11-17)

17 Nov 06:12
1c57854

Choose a tag to compare

Nightly (2025-11-17) Pre-release
Pre-release

Other

  • chore(deps): weekly cargo update (#12577) by @github-actions[bot]
  • fix(forge): preprocess mocks declared in test file (#12516) by @grandizzy

Full Changelog:

nightly...nightly-1c57854462289b2e71ee7654cd6666217ed86ffd

Nightly (2025-11-16)

15 Nov 06:12
cd86772

Choose a tag to compare

Nightly (2025-11-16) Pre-release
Pre-release
  • No changes

Nightly (2025-11-14)

14 Nov 06:12
975a456

Choose a tag to compare

Nightly (2025-11-14) Pre-release
Pre-release

Other

  • feat(cast): block -f to accept multiple fields (#12427) by @dipanshuhappy
  • chore(common): drop unused fs import and fix doc links (#12535) by @0xLogicalx
  • fix: infer addresses in unknown fields in UIfmt (#12552) by @klkvr
  • refactor(anvil): beacon api tests + use Alloy's GenesisResponse struct (#12513) by @mablr
  • feat: support all blob envelope in cast (#12557) by @mattsse
  • Remove redundant String clones in Sourcify metadata conversion (#12554) by @soniseth0

Full Changelog:

nightly...nightly-975a456ef42ab506b8d343df5541a248798c5a27

Nightly (2025-11-13)

13 Nov 06:12
12be76f

Choose a tag to compare

Nightly (2025-11-13) Pre-release
Pre-release

Other

Full Changelog:

nightly...nightly-12be76ff47ae0f4fe1a18b74a47e5f0611bab5a0

Nightly (2025-11-12)

12 Nov 06:11
ac00e0b

Choose a tag to compare

Nightly (2025-11-12) Pre-release
Pre-release

Other

Full Changelog:

nightly...nightly-ac00e0bb33fcc72f2554a41564cff659c2a8c90b

Nightly (2025-11-11)

11 Nov 06:12
25196fa

Choose a tag to compare

Nightly (2025-11-11) Pre-release
Pre-release

Other

  • Fix numbers printing (#12504) by @e1Ru1o
  • fix(anvil): serialize genesis time as string (#12512) by @StackOverflowExcept1on
  • fix(npm): small type fix to resolve ci (#12514) by @o-az
  • fix: enable different gas calculation for monad testnet (#12520) by @QEDK
  • refactor(doc): improve merge_inheritdoc docs and simplify cloning (#12517) by @DeVikingMark
  • chore(deps): bump docker/metadata-action from 5.8.0 to 5.9.0 (#12522) by @dependabot[bot]
  • chore(deps): bump softprops/action-gh-release from 2.4.1 to 2.4.2 (#12525) by @dependabot[bot]
  • chore(deps): bump DeterminateSystems/determinate-nix-action from 3.12.0 to 3.13.0 (#12523) by @dependabot[bot]
  • chore(deps): bump taiki-e/install-action from 2.62.45 to 2.62.49 (#12521) by @dependabot[bot]
  • chore(deps): bump DeterminateSystems/update-flake-lock from ab3e850b05f8f7e56dab99f12900d3f569853e93 to e637603d31bed83169f2e56bb475c9dff7af6544 (#12524) by @dependabot[bot]

Full Changelog:

nightly...nightly-25196faecd57fc9b2feda4d9beb6e43b6daab5d8