You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: vocs/docs/pages/releases.mdx
+117-2Lines changed: 117 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -3,8 +3,116 @@ title: Foundry Releases
3
3
description: Latest release notes for Foundry
4
4
---
5
5
6
-
# v1.3.0-rc1[July 17, 2025]
6
+
# v1.3.0-rc2[July 24, 2025]
7
7
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.
[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.
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
+
8
116
## Anvil Features
9
117
- 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)
10
118
- 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
13
121
- 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)
14
122
- feat(`anvil`): reset to in-mem ([#10897](https://github.com/foundry-rs/foundry/pull/10897)) by [@yash-atreya](https://github.com/yash-atreya)
15
123
- 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)
16
126
17
127
## Anvil Fixes
18
128
@@ -43,6 +153,7 @@ description: Latest release notes for Foundry
43
153
- feat(cast): rpc --json should format as json ([#10871](https://github.com/foundry-rs/foundry/pull/10871)) by [@jsvisa](https://github.com/jsvisa)
44
154
- feat(cast): add disable-labels for cast run ([#10970](https://github.com/foundry-rs/foundry/pull/10970)) by [@grandizzy](https://github.com/grandizzy)
45
155
- 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)
46
157
47
158
## Cast Fixes
48
159
@@ -94,6 +205,7 @@ description: Latest release notes for Foundry
94
205
- feat: fuzzer metrics ([#10988](https://github.com/foundry-rs/foundry/pull/10988)) by [@0xalpharush](https://github.com/0xalpharush)
95
206
- feat(forge-lint): new `LateLintPass` + support code snippets ([#10846](https://github.com/foundry-rs/foundry/pull/10846)) by [@0xrusowsky](https://github.com/0xrusowsky)
96
207
- 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)
97
209
98
210
## Forge Fixes
99
211
@@ -128,11 +240,13 @@ description: Latest release notes for Foundry
128
240
- 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)
129
241
- fix(forge-lint): [inline-config] use relative span positions ([#11022](https://github.com/foundry-rs/foundry/pull/11022)) by [@0xrusowsky](https://github.com/0xrusowsky)
130
242
- 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)
131
244
132
245
## Performance improvements
133
246
134
247
- fix: spawn fork backendhandler on current tokio runtime ([#10923](https://github.com/foundry-rs/foundry/pull/10923)) by [@mattsse](https://github.com/mattsse)
135
248
- 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)
136
250
137
251
138
252
## Other
@@ -217,13 +331,14 @@ description: Latest release notes for Foundry
217
331
- docs(lintrules): reflect latest impl changes ([#11031](https://github.com/foundry-rs/foundry/pull/11031)) by [@0xrusowsky](https://github.com/0xrusowsky)
Copy file name to clipboardExpand all lines: vocs/docs/pages/releases/nightly.mdx
+3-4Lines changed: 3 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -3,16 +3,15 @@ title: Foundry Nightly Release
3
3
description: Latest nightly release notes for Foundry
4
4
---
5
5
6
-
# Nightly (2025-07-23) [July 23, 2025]
6
+
# Nightly (2025-07-24) [July 24, 2025]
7
7
8
8
9
9
## Other
10
10
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)
Copy file name to clipboardExpand all lines: vocs/docs/pages/releases/stable.mdx
+10Lines changed: 10 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -3,4 +3,14 @@ title: Foundry Stable Release
3
3
description: Latest stable release notes for Foundry
4
4
---
5
5
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
+
6
16
*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