Skip to content

Releases: foundry-rs/foundry

Nightly (2025-11-26)

25 Nov 06:12
6063717

Choose a tag to compare

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

Nightly

10 Jul 18:13
6063717

Choose a tag to compare

Nightly Pre-release
Pre-release
  • No changes

Nightly (2025-11-24)

24 Nov 06:11
3a38e02

Choose a tag to compare

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

Other

  • chore(deps): weekly cargo update (#12642) by @github-actions[bot]
  • refactor(anvil): simplify effective_reward calculation in FeeHistoryService (#12640) by @mablr

Full Changelog:

nightly...nightly-3a38e02679b33113ed62ad4b1c704ee42999c053

Nightly (2025-11-23)

23 Nov 06:11
8436d7c

Choose a tag to compare

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

Other

  • refactor(anvil): remove TypedTransaction::as_legacy() method (#12633) by @mablr
  • refactor(anvil): remove TypedTransaction::blob_gas() method (#12632) by @mablr
  • refactor(anvil): remove TypedTransaction::essentials() method (#12631) by @mablr

Full Changelog:

nightly...nightly-8436d7c3091af8498729a52403b5ed4bc39a1845

Nightly (2025-11-22)

22 Nov 06:12
d9f47a7

Choose a tag to compare

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

Other

Full Changelog:

nightly...nightly-d9f47a72b446c7006254be185f175efd1c7a81a2

Nightly (2025-11-21)

21 Nov 06:12
229e969

Choose a tag to compare

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

Other

Full Changelog:

nightly...nightly-229e96959e57cf09b759cf66be8c841780a7e57e

Nightly (2025-11-20)

20 Nov 03:41
bb3266d

Choose a tag to compare

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

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-19)

18 Nov 12:10
005e737

Choose a tag to compare

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

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