Skip to content

Commit 8261211

Browse files
committed
chore: update release notes
1 parent 054aeaf commit 8261211

File tree

3 files changed

+130
-6
lines changed

3 files changed

+130
-6
lines changed

vocs/docs/pages/releases.mdx

Lines changed: 117 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,116 @@ title: Foundry Releases
33
description: Latest release notes for Foundry
44
---
55

6-
# v1.3.0-rc1 [July 17, 2025]
6+
# v1.3.0-rc2 [July 24, 2025]
77

8+
# Foundry v1.3.0
9+
10+
This release includes support for `forge lint`, time-based campaigns and coverage-guided fuzzing for invariant tests, table tests, fork test improvements for [Reth clients](https://github.com/paradigmxyz/reth), and new EIP-712 features. Foundry v1.3.0 is built on top of the latest [`revm v27`](https://github.com/bluealloy/revm) and ships with a forge benchmark tool, along with an improved `foundryup` installer.
11+
12+
:warning: It is highly recommended to update to latest version of `foundryup`, which avoids unnecessary downloads and verifies hashes of downloaded binaries upon install.
13+
14+
## Performance Improvements
15+
16+
- This release includes an updated [`revm`](https://github.com/bluealloy/revm) and an optimized inspector stack, which significantly improves performance [compared to previous versions](https://github.com/foundry-rs/foundry/blob/release-1.3.0/benches/LATEST.md)
17+
#### Forge Test
18+
19+
| Repository | v1.2.3 | v1.3.0 |
20+
| -------------------- | ------- | ------- |
21+
| ithacaxyz-account | 3.69 s | 3.12 s |
22+
| solady | 2.95 s | 2.32 s |
23+
| Uniswap-v4-core | 8.03 s | 6.76 s |
24+
| sparkdotfi-spark-psm | 57.02 s | 44.76 s |
25+
26+
#### Forge Fuzz Test
27+
28+
| Repository | v1.2.3 | v1.3.0 |
29+
| -------------------- | ------ | ------ |
30+
| ithacaxyz-account | 3.58 s | 3.39 s |
31+
| solady | 3.34 s | 2.54 s |
32+
| Uniswap-v4-core | 8.03 s | 7.46 s |
33+
| sparkdotfi-spark-psm | 3.70 s | 3.06 s
34+
35+
- Forked tests using the [Reth client](https://github.com/paradigmxyz/reth) are now faster thanks to the `eth_getAccountInfo` API, reducing account data fetching from three requests to one. Foundry detects if `eth_getAccountInfo` is available and falls back to the legacy method otherwise.
36+
Example: Running `forge test --mt statefulFuzz_curve_test` on [spark-alm-controller](https://github.com/sparkdotfi/spark-alm-controller/pull/107) showed over 5 seconds in test time savings.
37+
38+
| Provider | Response Time |
39+
|----------------------------------------------|---------------|
40+
| reth-ethereum.ithaca.xyz (with `eth_getAccountInfo`) | 45.21s |
41+
| reth-ethereum.ithaca.xyz (without `eth_getAccountInfo`) | 50.83s |
42+
| QuickNode (Paid) | 59.66s |
43+
| Alchemy (Free Tier) | 182.12s |
44+
| Infura (Free Tier) | 176.88s |
45+
46+
## Forge Lint
47+
48+
As of v1.3.0, Forge ships with a built-in linter that analyzes Solidity code for style, correctness, and best practices.
49+
50+
- Lint rules are configurable in the `[lint]` section of `foundry.toml` and via inline comment directives.
51+
- Lints can be customized by severity or specific rule identifiers.
52+
- By default, linting runs during `forge build`. To disable it, set `lint_on_build = false`.
53+
- For more details please refer to foundry docs:
54+
[Supported lints](https://getfoundry.sh/forge/reference/forge-lint/#supported-lints)
55+
[Linter configuration docs](https://getfoundry.sh/config/reference/linter)
56+
[How to contribute a lint rule](https://github.com/foundry-rs/foundry/blob/master/docs/dev/lintrules.md)
57+
58+
## Invariant Test Improvements
59+
60+
### Time-Based Campaigns
61+
62+
Previously, invariant tests were limited by a fixed number of runs (default: `256`, max: `4294967295`).
63+
Now you can run them for a specific time duration by setting the `timeout` value (in seconds) in the `[invariant]` section of `foundry.toml`.
64+
65+
The test progress bar shows the number of runs and the end time.
66+
```bash
67+
test/GuidedTest.t.sol:CounterTest
68+
→ invariant_Puzzle5: [4360] Runs, ends at 11:03:28 2025-06-03 UTC
69+
→ invariant_Puzzle3: [8784] Runs, ends at 14:50:08 2025-06-04 UTC
70+
→ invariant_Puzzle6: [77762] Runs, ends at 05:56:48 2025-06-09 UTC
71+
→ invariant_Puzzle2: [8739] Runs, ends at 12:50:08 2025-06-02 UTC
72+
```
73+
74+
### Coverage-Guided Fuzzing
75+
76+
Enable this mode by setting a path to `corpus_dir` in your invariant config.
77+
The coverage-Guided fuzzing mode targets a `corpus_min_size` by mutating entries a number of times (default: 5), favoring those likely to uncover new paths.
78+
79+
**Supported mutations:**
80+
- `splice`: Combines two sequences
81+
- `interleave`: Weaves two sequences together
82+
- `prefix`: Overwrites the beginning of a sequence
83+
- `suffix`: Overwrites the end of a sequence
84+
- `mutate args`: Randomizes some call arguments
85+
86+
Additional notes:
87+
- Entries that generate new coverage are saved to disk (default: `.gz`; set `corpus_gzip = false` to save as JSON).
88+
- On reruns, the saved corpus is loaded and reused.
89+
- Metadata (as JSON) is persisted for evicted corpus entries. This includes a unique ID, mutation count, and coverage improvements.
90+
- The fuzzing progress bar displays metrics for cumulative edges and features, corpus count and number of favored entries.
91+
```bash
92+
test/forge/invariant/StaticInvariantTest.sol:StaticInvariantTest
93+
→ invariantHealthy: [60/2000] Runs
94+
- cumulative edges seen: 41
95+
- cumulative features seen: 6
96+
- corpus count: 15
97+
- favored items: 14
98+
```
99+
For more details please refer to [invariant docs](https://getfoundry.sh/forge/advanced-testing/invariant-testing#coverage-guided-fuzzing).
100+
101+
## Table Tests
102+
103+
Foundry v1.3.0 comes with support for table testing, which enables the definition of a dataset (the "table") and the execution of a test function for each entry in that dataset. This approach helps ensure that certain combinations of inputs and conditions are tested.
104+
For more details please refer to [table testing foundry docs](https://getfoundry.sh/forge/advanced-testing/table-testing).
105+
106+
## Improved EIP-712 support
107+
108+
Foundry v1.3.0 comes with additional utilities (commands and new cheatcodes) to make it easy and reliable to work with EIP-712 signatures.
109+
For more details please refer to [EIP-712 foundry guide](https://getfoundry.sh/guides/eip712/).
110+
111+
## Other
112+
- new Anvil APIs including endpoints to deal and set allowance for ERC20 tokens, add balance and get blob by hash
113+
- Vyper support for `forge verify-contract` command
114+
- `fail_on_revert` config for stateless fuzz tests
115+
8116
## Anvil Features
9117
- feat(anvil): add block context overrides for eth_call and eth_estimateGas ([#10487](https://github.com/foundry-rs/foundry/pull/10487)) by [@mablr](https://github.com/mablr)
10118
- feat: added rpc method to deal ERC20 tokens ([#10495](https://github.com/foundry-rs/foundry/pull/10495)) by [@Soubhik-10](https://github.com/Soubhik-10)
@@ -13,6 +121,8 @@ description: Latest release notes for Foundry
13121
- feat: added eth_sendRawTransactionSync and eth_sendTransactionSync support for anvil ([#10860](https://github.com/foundry-rs/foundry/pull/10860)) by [@Rimeeeeee](https://github.com/Rimeeeeee)
14122
- feat(`anvil`): reset to in-mem ([#10897](https://github.com/foundry-rs/foundry/pull/10897)) by [@yash-atreya](https://github.com/yash-atreya)
15123
- feat: added get_blob_by_hash ([#10987](https://github.com/foundry-rs/foundry/pull/10987)) by [@Soubhik-10](https://github.com/Soubhik-10)
124+
- feat: add support for passthrough of debug_codeByHash ([#11053](https://github.com/foundry-rs/foundry/pull/11053)) by [@cakevm](https://github.com/cakevm)
125+
- feat(anvil): use signatures identifier for --print-traces ([#11070](https://github.com/foundry-rs/foundry/pull/11070)) by [@mattsse](https://github.com/mattsse)
16126

17127
## Anvil Fixes
18128

@@ -43,6 +153,7 @@ description: Latest release notes for Foundry
43153
- feat(cast): rpc --json should format as json ([#10871](https://github.com/foundry-rs/foundry/pull/10871)) by [@jsvisa](https://github.com/jsvisa)
44154
- feat(cast): add disable-labels for cast run ([#10970](https://github.com/foundry-rs/foundry/pull/10970)) by [@grandizzy](https://github.com/grandizzy)
45155
- feat(cast): add `--raw` option to block subcommand ([#11027](https://github.com/foundry-rs/foundry/pull/11027)) by [@mablr](https://github.com/mablr)
156+
- feat(cast): add checksum address with chain id ([#11043](https://github.com/foundry-rs/foundry/pull/11043)) by [@KumaCrypto](https://github.com/KumaCrypto)
46157

47158
## Cast Fixes
48159

@@ -94,6 +205,7 @@ description: Latest release notes for Foundry
94205
- feat: fuzzer metrics ([#10988](https://github.com/foundry-rs/foundry/pull/10988)) by [@0xalpharush](https://github.com/0xalpharush)
95206
- feat(forge-lint): new `LateLintPass` + support code snippets ([#10846](https://github.com/foundry-rs/foundry/pull/10846)) by [@0xrusowsky](https://github.com/0xrusowsky)
96207
- feat(forge fmt): Adds tab support as indent char in fmt ([#10979](https://github.com/foundry-rs/foundry/pull/10979)) by [@mathewmeconry](https://github.com/mathewmeconry)
208+
- feat(cheats): add vm.getRawBlockHeader(blockNumber) ([#11082](https://github.com/foundry-rs/foundry/pull/11082)) by [@0xClandestine](https://github.com/0xClandestine)
97209

98210
## Forge Fixes
99211

@@ -128,11 +240,13 @@ description: Latest release notes for Foundry
128240
- fix(`cheatcodes`): load pranked caller acc in state ([#11023](https://github.com/foundry-rs/foundry/pull/11023)) by [@yash-atreya](https://github.com/yash-atreya)
129241
- fix(forge-lint): [inline-config] use relative span positions ([#11022](https://github.com/foundry-rs/foundry/pull/11022)) by [@0xrusowsky](https://github.com/0xrusowsky)
130242
- fix: ensure account is always loaded and marked as touched when pranked ([#11025](https://github.com/foundry-rs/foundry/pull/11025)) by [@zerosnacks](https://github.com/zerosnacks)
243+
- fix(forge): show git submodule status error ([#11033](https://github.com/foundry-rs/foundry/pull/11033)) by [@grandizzy](https://github.com/grandizzy)
131244

132245
## Performance improvements
133246

134247
- fix: spawn fork backendhandler on current tokio runtime ([#10923](https://github.com/foundry-rs/foundry/pull/10923)) by [@mattsse](https://github.com/mattsse)
135248
- perf: find latest block for next-base-fee. replaces [#10505](https://github.com/foundry-rs/foundry/pull/10505) ([#10511](https://github.com/foundry-rs/foundry/pull/10511)) by [@naps62](https://github.com/naps62)
249+
- perf: improve InspectorStack ([#11077](https://github.com/foundry-rs/foundry/pull/11077)) by [@DaniPopes](https://github.com/DaniPopes)
136250

137251

138252
## Other
@@ -217,13 +331,14 @@ description: Latest release notes for Foundry
217331
- docs(lintrules): reflect latest impl changes ([#11031](https://github.com/foundry-rs/foundry/pull/11031)) by [@0xrusowsky](https://github.com/0xrusowsky)
218332

219333
## Full Changelog:
220-
https://github.com/foundry-rs/foundry/compare/v1.2.3...v1.3.0-rc1
334+
https://github.com/foundry-rs/foundry/compare/v1.2.3...v1.3.0-rc2
221335

222336

223337
## Previous Releases
224338

225339
| Version | Release Date | Release Notes |
226340
|---------|--------------|---------------|
341+
| v1.3.0-rc1 | July 17, 2025 | [View](https://github.com/foundry-rs/foundry/releases/tag/v1.3.0-rc1) |
227342
| v1.2.3 | June 8, 2025 | [View](https://github.com/foundry-rs/foundry/releases/tag/v1.2.3) |
228343
| v1.2.2 | May 30, 2025 | [View](https://github.com/foundry-rs/foundry/releases/tag/v1.2.2) |
229344
| v1.2.1-rc | May 21, 2025 | [View](https://github.com/foundry-rs/foundry/releases/tag/v1.2.1-rc) |

vocs/docs/pages/releases/nightly.mdx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@ title: Foundry Nightly Release
33
description: Latest nightly release notes for Foundry
44
---
55

6-
# Nightly (2025-07-23) [July 23, 2025]
6+
# Nightly (2025-07-24) [July 24, 2025]
77

88

99
## Other
1010

11-
- feat: use signatures identifier for --print-traces ([#11070](https://github.com/foundry-rs/foundry/pull/11070)) by [@mattsse](https://github.com/mattsse)
12-
- feat: use alloy-evm apply overrides ([#11071](https://github.com/foundry-rs/foundry/pull/11071)) by [@mattsse](https://github.com/mattsse)
11+
- chore(deps): bump revm v27.1.0 ([#11079](https://github.com/foundry-rs/foundry/pull/11079)) by [@DaniPopes](https://github.com/DaniPopes)
1312

1413
## Full Changelog:
15-
https://github.com/foundry-rs/foundry/compare/nightly...nightly-cb8f3bf2c4047f17310b84a685fcc12b61c98891
14+
https://github.com/foundry-rs/foundry/compare/nightly...nightly-9c3feff90b6532126b4391dfb4570401c8a6174e
1615

1716
---
1817

vocs/docs/pages/releases/stable.mdx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,14 @@ title: Foundry Stable Release
33
description: Latest stable release notes for Foundry
44
---
55

6+
# Foundry v1.2.3
7+
8+
Foundry v1.2.3 is a bugfix release for anvil and cast call command.
9+
10+
## Anvil Fixes
11+
- fix(anvil): guard against the blockchain advancing while checking latest block ([#10709](https://github.com/foundry-rs/foundry/pull/10709)) by [@alexghr](https://github.com/alexghr)
12+
13+
## Cast Fixes
14+
- fix(cast): do not use default overrides if no override arg ([#10713](https://github.com/foundry-rs/foundry/pull/10713)) by [@grandi](https://github.com/grandi)
15+
616
*This page is automatically updated with the latest release information from the [Foundry GitHub repository](https://github.com/foundry-rs/foundry/releases).*

0 commit comments

Comments
 (0)