Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1963 commits
Select commit Hold shift + click to select a range
398ef4a
feat(forge, cast): add `cast --with_local_artifacts`/`forge selectors…
Nov 22, 2024
e5412ad
chore: use has_library_ancestor (#9387)
Nov 23, 2024
d14a7b4
chore(evm/traces): replace solang with Solar (#9386)
Nov 23, 2024
4923529
chore(deps): weekly `cargo update` (#9392)
Nov 24, 2024
cca72ab
fix: bail incomplete bytecode sequence disassemble (#9390)
Nov 25, 2024
66228e4
fix(forge create): install missing deps if any (#9401)
Nov 25, 2024
eae5fb4
feat(forge): show additional details of contract to verify (#9403)
Nov 25, 2024
de5e89c
fix: remove duplicate `gas_limit` / `block_gas_limit` field, declare …
Nov 25, 2024
672bdf6
fix(cheatcodes): use calldata in attachDelegation (#9407)
Nov 25, 2024
995fd9e
chore(cheatcodes): enforce `calldata` in declaration (#9408)
Nov 25, 2024
d739704
feat: remove ethers (#8826)
Nov 26, 2024
958c713
Revert "feat: remove ethers" (#9411)
Nov 26, 2024
0045384
fix: forge script should adhere to `--json` flag (#9404)
Nov 26, 2024
31dd1f7
feat(cast): add decode-event sig data (#9413)
Nov 26, 2024
735b5eb
chore: fix 404 status URL (#9417)
Nov 27, 2024
2c3114c
feat: add `--broadcast` flag to forge create, default to dry run mode…
Nov 27, 2024
c63aba8
feat(`traces`): show state changes in `cast run` and `forge test` on …
Nov 27, 2024
16a013f
feat(cast): decode external lib sigs from cached selectors (#9399)
Nov 28, 2024
56d0dd8
feat: rewrite inline config using figment (#9414)
Nov 28, 2024
20905ef
chore: rename the arg name of EvmOpts from evm_opts to evm_args (#9424)
Nov 28, 2024
27cabbd
Fix conditional syntax issue in macOS libusb check (#9384)
Nov 28, 2024
2e9f536
feat: add timeouts to fuzz testing (#9394)
Nov 29, 2024
0d76df5
feat(`cast`): `decode-error` with sig, local cache and openchain api …
Nov 29, 2024
0f7268f
feat(`cast`): `decode-event` with local and openchain API (#9431)
Nov 29, 2024
fbbcc8c
chore: use alloy-chains' `is_arbitrum` (#9432)
Nov 29, 2024
af0fee2
feat: rpc_headers in cast and config (#9429)
Nov 29, 2024
4527475
fix: set user-agent header in runtime transport (#9434)
Nov 29, 2024
7f41280
feat(script): support custom create2 deployer (#9278)
Nov 30, 2024
7a23a5c
fix(coverage): clean ups, use normalized source code for locations (#…
Nov 30, 2024
ac81a53
chore(deps): weekly `cargo update` (#9440)
Dec 1, 2024
168b239
fix(coverage): special functions have no name (#9441)
Dec 2, 2024
d4e91c8
feat(cast): allow some more stdin inputs (#9442)
Dec 2, 2024
8b8d1cd
chore(config): remove RootPath (#9448)
Dec 2, 2024
ddb19d0
chore(config): move providers into module (#9449)
Dec 2, 2024
c4d81b9
chore(deps): alloy 0.7 (#9447)
Dec 2, 2024
3e6d3b8
feat: allow any config to be defined inline (#9430)
Dec 2, 2024
7d0b0a0
chore(deps): bump foundry-compilers 0.12.4 (#9455)
Dec 2, 2024
b7a065f
perf(coverage): improve HitMap merging and internal repr (#9456)
Dec 2, 2024
d35fee6
perf(coverage): cache computed bytecode hash in CoverageCollector (#9…
Dec 2, 2024
ee9d237
fix(coverage): also ignore empty fallbacks and receives (#9459)
Dec 2, 2024
e5dbb7a
fix/feat(coverage): add --lcov-version (#9462)
Dec 2, 2024
7f8154c
chore: set --lcov-version default to 1 (#9463)
Dec 3, 2024
9af381f
fix(`anvil`): impl `maybe_as_full_db` for `ForkedDatabase` (#9465)
Dec 3, 2024
9ee6005
fix(coverage): assert should not be branch (#9467)
Dec 3, 2024
ade4b35
fix(`forge`): run `dep.has_branch` in correct dir (#9453)
Dec 3, 2024
8ef1302
chore: fix test isolate (#9468)
Dec 3, 2024
2f56133
feat: bump MSRV to 1.83 (#9473)
Dec 3, 2024
22202a7
perf(coverage): cache current HitMap, reserve when merging (#9469)
Dec 3, 2024
f9d8663
test: shuffle archive URLs (#9472)
Dec 3, 2024
805d7ce
docs: CoverageCollector comments (#9474)
Dec 3, 2024
3a1e76b
fix(`cli`): handle id and named chain_id's correctly (#9480)
Dec 4, 2024
8ac30d9
feat: dedup error messages (#9481)
Dec 4, 2024
2c9719e
chore(anvil): convert panics into errors (#9471)
Dec 4, 2024
25c978a
fix(remappings): project autoremappings should respect config (#9466)
Dec 4, 2024
3784cd8
refactor: adapt to CompilerContract trait type (#9423)
Dec 4, 2024
75fc63b
chore(deps): bump foundry-compilers 0.12.6 (#9490)
Dec 4, 2024
ce9fca2
chore: rename alphanet to odyssey (#9491)
Dec 5, 2024
a4de7e8
feat: add JSON compatibility for `forge test --summary +/ --detailed`…
Dec 5, 2024
c161c7c
fix: force `prevrandao` on Moonbeam networks (#9489)
Dec 5, 2024
8c03318
chore(cast): upgrade evmole to 0.6.1, use new style API (#9493)
Dec 5, 2024
e264381
chore: bump compilers 0.12.7 (#9498)
Dec 5, 2024
4f9f904
chore(deps): bump breaking deps (#9502)
Dec 5, 2024
43a033d
chore: improve Retry usage and warning (#9503)
Dec 5, 2024
92cd165
fix: restore lock version 3 (#9501)
Dec 5, 2024
e520767
chore(deps): remove async_recursion (#9500)
Dec 5, 2024
63484d0
feat(`cheatcodes`): count assertion for `expectRevert` (#9484)
Dec 6, 2024
00efa0d
feat(cheatcodes): add `vm.getStateDiff` to get state diffs as string …
Dec 6, 2024
2e56b8f
fix(verify): cached artifacts by version (#9520)
Dec 9, 2024
aa69ed1
ci: move deny to test (#9524)
Dec 9, 2024
fd9ee16
chore: bump alloy (#9496)
Dec 10, 2024
b090638
fix(cheatcodes): clear orderings together with trace steps on debug t…
Dec 10, 2024
0eff1ef
feat(cheatcodes): skip test suite in setup (#9532)
Dec 10, 2024
91030da
fix: mark flag incompatibility (#9530)
Dec 10, 2024
09894ef
chore(deps): weekly `cargo update` (#9533)
Dec 10, 2024
59f354c
fix(fuzz): exclude exernal libraries addresses from fuzz inputs (#9527)
Dec 10, 2024
c4fcf12
Update incorrect documentation in the READ.me (#9538)
Dec 11, 2024
539760c
fix(`anvil`): set `best_number` to `state.block.number` if greater (#…
Dec 12, 2024
2eec098
fix(`cast`): reset `env.tx.caller` for impersonated txs (#9544)
Dec 12, 2024
e22a9ec
chore: Add GH attestation for foundry binaries (#9546)
Dec 12, 2024
2f698e4
fix(release): allow contents write permission, run attestation after …
Dec 13, 2024
1276f58
chore: bump compilers (#9554)
Dec 13, 2024
dabacec
fix: account for impersonated tx in configure_tx_env (#9553)
Dec 13, 2024
233bff2
fix: read rpc config when using fork cheatcodes (#9547)
Dec 14, 2024
206dab2
chore(deps): weekly `cargo update` (#9560)
Dec 15, 2024
681bddd
feat(cast): add support for beacon proxies in cast impl (#9567)
Dec 17, 2024
6b07c77
feat(`cheatcodes`): count assertion for `expectEmit` (#9405)
Dec 17, 2024
0086d04
fix(release): check `env.IS_NIGHTLY` as string (#9568)
Dec 18, 2024
8a08a3a
Run release workflow on stable tag push (#9575)
Dec 18, 2024
6c4af1d
chore: update release notes template (#9577)
Dec 19, 2024
a263a92
chore: add contributors in release changelog (#9578)
Dec 19, 2024
af52b80
feat(foundryup): allow multiple installed versions (#9551)
Dec 19, 2024
f3b5ac7
chore: bump workspace version to `0.3.0` (#9580)
Dec 19, 2024
7ac0502
Update CI workflow template to unpin from `nightly` explicitly, relyi…
Dec 19, 2024
5a8bd89
chore: testFail* deprecation warning (#9581)
Dec 19, 2024
6091f25
chore(tests): bump forge-std version (#9584)
Dec 20, 2024
0d5ad75
chore(`foundryup`): default to stable if no specific version is passe…
Dec 20, 2024
f922a34
chore(deps): weekly `cargo update` (#9588)
Dec 22, 2024
3ba3d5f
feat(cast): pretty print other receipt fields (#9589)
Dec 24, 2024
0caabdd
chore(deps): weekly `cargo update` (#9599)
Dec 29, 2024
ffaa68f
chore: make clippy happy (#9601)
Dec 29, 2024
4f22a38
chore(fmt): tx fields indent with the same whitespaces (#9603)
Dec 30, 2024
e618b2c
chore: fix flaky inline config test (#9591)
Dec 30, 2024
68aff72
feat: update revm 19 alloy 09 (#9605)
Dec 30, 2024
03ec595
chore(deps): bump alloys (#9613)
Jan 2, 2025
6cb41fe
add comment to `-r` option about default value (#9571)
Jan 2, 2025
8555f16
fix(anvil): ipc append a newline (#9608)
Jan 3, 2025
caf8455
chore: dedup errors in eyre handler (#9612)
Jan 3, 2025
f7bb427
fix(`evm`): P256Verify address (#9618)
Jan 3, 2025
15940fc
typo: EtherScan -> Etherscan (#9607)
Jan 3, 2025
8cc2079
chore(git): enhance rust diffing (#9596)
Jan 3, 2025
c66fd40
chore(deps): weekly `cargo update` (#9623)
Jan 5, 2025
2e9d849
chore(`config`): use solar for inline config parsing (#9615)
Jan 5, 2025
a5c5be5
chore(`bind-json`): replace solang with solar (#9616)
Jan 5, 2025
15a9f17
chore(deps): bump solar 0.1.1 (#9627)
Jan 6, 2025
dc8d980
chore(forge): remove `forge debug` subcommand (#9606)
Jan 6, 2025
782787b
feat(test): add repro issue8566 testcase (#9617)
Jan 6, 2025
e4fdc45
chore: standardize use of `opts` / `args` (#9629)
Jan 6, 2025
e3ff6cb
fix: re-remove forge `debug` file (#9631)
Jan 6, 2025
5e72c69
feat: remove ethers (#9412)
Jan 6, 2025
d2dbe3e
fix(ens): don't resolve addr if doesn't contain . (#9635)
Jan 7, 2025
95442fa
feat(`verify`): default to sourcify if etherscan key not provided (#9…
Jan 7, 2025
ad09bbe
chore(`forge`): rm regex for --debug and --decode-internal (#9572)
Jan 8, 2025
b3cd2ab
fix(cheatcode): use storage access address instead account access (#9…
Jan 8, 2025
49392b5
Feat: Add `cast chain` support for `ink` & `ink-sepolia` (#9652)
Jan 8, 2025
70cd140
chore(deps): bump `alloy-chains` (#9653)
Jan 8, 2025
82cf61d
fix: do not remove `snapshots` directory before running the test suit…
Jan 9, 2025
6cbf390
fix(cheatcodes): record state diff only if balance changed (#9658)
Jan 9, 2025
39f13df
fix(config): disable optimizer by default (#9657)
Jan 9, 2025
af9ceec
fix: incorrect repo link in readme for foundry-compilers (#9660)
Jan 9, 2025
192aa2c
feat: add arm64 docker image (#9614)
Jan 9, 2025
0cc5355
chore: fix test isolate, different address for caller (#9663)
Jan 10, 2025
6f81e76
fix: set debug none for release profile (#9664)
Jan 10, 2025
761d9e1
chore(deps): weekly `cargo update` (#9668)
Jan 12, 2025
be34f5b
chore(clippy): use next_back instead of last for DoubleEndedIterator …
Jan 12, 2025
b6c094c
fix: error handling with retries when waiting for receipt (#9650)
Jan 13, 2025
ba505df
chore: use "full" for debug (#9670)
Jan 13, 2025
c42d08d
chore: don't warn in RetryError::Continue (#9671)
Jan 13, 2025
aa0161e
test: increase nextest backoff (#9672)
Jan 13, 2025
e7a0693
fix(`script`): use fork_block_number for init sender nonce (#9669)
Jan 13, 2025
92fefaf
feat(foundryup): add foundryup self-update (#9609)
Jan 13, 2025
017c59d
fix(`config`): enable `optimizer` when `optimizer_runs` set in config…
Jan 13, 2025
5b4a105
fix: propagate color config to TraceWriter (#9679)
Jan 14, 2025
ff2c564
feat(foundryup): check for running processes (#9680)
Jan 14, 2025
41c6653
chore: add version number to `foundryup` (#9681)
Jan 14, 2025
9829054
fix(config): normalize optimizer settings (#9689)
Jan 16, 2025
55badd4
ci: use reusable cargo update workflow (#9690)
Jan 16, 2025
73becfb
chore(deps): bump svm 0.5.10 (#9700)
Jan 17, 2025
00c944b
fix(verify): strip profile from contract name (#9699)
Jan 17, 2025
1f48a34
feat(`forge`): `--watch` coverage (#9702)
Jan 17, 2025
b0630f9
feat: filter by profile in `vm.getCode` (#9714)
Jan 18, 2025
18cb6f9
feat(chisel): determine proper path to Vm.sol based on proj remapping…
Jan 19, 2025
a038646
chore(deps): weekly `cargo update` (#9715)
Jan 19, 2025
90a5fdf
Fix rewrite of User-Agent header (#9707)
Jan 20, 2025
3739859
refactor: properly handle config load errors (#9713)
Jan 20, 2025
1ef98bf
chore: bump version to 0.3.1 to make it easier to identify non-stable…
Jan 20, 2025
2ddea87
fix(invariant): handle simple contract names in metrics table (#9724)
Jan 21, 2025
62147c8
chore: display warning to user if running `nightly` version (#9683)
Jan 21, 2025
f94ce46
fix(forge): allow install private deps with https and gh token (#9726)
Jan 21, 2025
fea3885
fix: release process (#9728)
Jan 21, 2025
5993795
feat: allow remapping of solidity files (#9604)
Jan 21, 2025
423644e
fix(`forge`): disable artifacts for coverage (#9692)
Jan 21, 2025
75462d9
fix: respect `disable_block_gas_limit` config key (#9732)
Jan 21, 2025
5d16800
chore: bump compilers (#9735)
Jan 22, 2025
aa04294
feat(cheatcodes): add ability to ignore (multiple) specific and parti…
Jan 22, 2025
36393fb
fix: use custom build profile in --version (#9733)
Jan 22, 2025
9ac89d4
feat(script): show the broadcasted transactions when verbose>=4 (#9655)
Jan 22, 2025
a3bfdbd
chore: remove redundant `test.sol` (#9736)
Jan 22, 2025
712bf5f
chore: pass and read tag as `CARGO_TAG_NAME` for cross build (#9738)
Jan 22, 2025
34ab235
fix(remappings): ignore conflicting remappings (#9521)
Jan 22, 2025
c22c4cc
feat(`forge`): inspect - default to pretty output (#9705)
Jan 23, 2025
b026f7a
fix(invariant): lookup fuzz interface abi by name or identifier (#9744)
Jan 23, 2025
6d9e615
feat(foundryup): manage custom built versions (#9746)
Jan 23, 2025
36d1a1b
fix(foundryup): set proper version for use call (#9750)
Jan 23, 2025
b03dd22
chore: stop supporting legacy console.sol signatures (#8910)
Jan 24, 2025
0821048
chore(deps): weekly `cargo update` (#9755)
Jan 26, 2025
ca466ae
fix(cheatcode): expect revert only for calls with greater depth than …
Jan 27, 2025
b081d66
fix(`forge bind`): prefix keyword mod names with `r#` (#9761)
Jan 27, 2025
5261dc1
feat(`cast source`): support alternative explorers (#9762)
Jan 27, 2025
66e3648
feat: override the eyre display handler globally (#9766)
Jan 27, 2025
58166ca
ci: set RUST_BACKTRACE=full (#9767)
Jan 27, 2025
4d1f72b
perf(coverage): use u32 for IDs, improve analysis (#9763)
Jan 28, 2025
58900d8
fix(coverage): keep EVM version when normalizing for ir-minimum (#9768)
Jan 28, 2025
9b3d2d7
chore: update README for `1.0` (#9540)
Jan 28, 2025
7e58d59
chore: remove ahash (#9769)
Jan 28, 2025
2509ce2
chore(deps): breaking bumps (#9773)
Jan 28, 2025
f3548cb
chore: install deps and create foundry user in cross built image (#9775)
Jan 28, 2025
c9b16c0
chore: fix isolate tests (#9776)
Jan 29, 2025
9d7c40e
fix: correctly set `gas_limit` reported by Anvil (#9774)
Jan 29, 2025
ca4740e
fix(docker): revert to use ubuntu:22.04 as base image (#9777)
Jan 29, 2025
ed63f34
fix(cheatcode): support new 7702 spec (#9779)
Jan 29, 2025
9f11e6d
fix: avoid returning None for library addresses during fuzzing (#9771)
Jan 29, 2025
1904216
chore: fix clippy (#9790)
Jan 30, 2025
fbfd9bc
feat(anvil): implement `anvil_rollback` (#9783)
Jan 30, 2025
dbf1c2a
docs(cast): clean up index docs (#9792)
Jan 30, 2025
fe92e7e
feat: add `gas_snapshot_check` flag to config, fix `FORGE_SNAPSHOT_CH…
Jan 30, 2025
abf269e
feat(`forge`): remove `testFail*` (#9574)
Jan 31, 2025
7c3bf09
fix: use sequence for rollback (#9795)
Jan 31, 2025
685631b
chore: ignore solady CI failure in win (#9797)
Jan 31, 2025
3d48000
fix(trace_filter): allow params to be object or array with len 1 (#9793)
Jan 31, 2025
56c1670
chore: point forge-std ext test to latest main (#9799)
Jan 31, 2025
9517128
chore: generate release notes from latest stable (#9801)
Jan 31, 2025
871eaaa
chore: update version numbers for `v1.0.0-rc` (#9802)
Jan 31, 2025
14e09e3
feat(cast): update polygon testnet chain and add polygon zkevm chains…
Jan 31, 2025
8692e92
chore: ci release on rc tag (#9805)
Jan 31, 2025
60f0b69
chore: update pull request template (#9804)
Jan 31, 2025
f126beb
chore(deps): weekly `cargo update` (#9809)
Feb 2, 2025
79e3ee8
chore: replace maili with op-alloy (#9810)
Feb 2, 2025
07db82e
chore(deps): bump alloy 0.11 (#9798)
Feb 2, 2025
3c6d0ec
chore(tests): bump forge-std version (#9808)
Feb 2, 2025
aee9f47
test: misc test improvements (#9812)
Feb 2, 2025
0e519ff
chore: tweak coverage warnings (#9814)
Feb 2, 2025
d071cb1
test: update config with a closure (#9813)
Feb 3, 2025
1b7b6c2
chore: update ext integration tests (#9811)
Feb 3, 2025
6e919af
fix(forge): allow `forge init --template` to work with `--no-commit` …
Feb 3, 2025
f6133f9
feat(invariant): on failures show original and current sequence len (…
Feb 3, 2025
be5e714
fix(cast): try decoding custom errors when execution reverted in cast…
Feb 4, 2025
fec2064
chore: remove rustls/openssl features (#9824)
Feb 4, 2025
96fc6b9
chore: fix base gas limit test (#9826)
Feb 5, 2025
d65ede5
fix: mark metis as different gas calc (#9834)
Feb 6, 2025
1baa9e6
feat: add mathjax support to forge doc mdbook config (#9829)
Feb 6, 2025
867484f
fix(foundryup): install for user names with empty space (#9835)
Feb 6, 2025
c4ae688
feat(invariant): generate failed call sequence as solidity (#9827)
Feb 6, 2025
1d5fa64
chore: bump compilers, fix #9788 (#9836)
Feb 6, 2025
5f6bd20
feat: add way to disable emitting of gas snapshots to disk (#9710)
Feb 7, 2025
2b107e5
chore(deps): weekly `cargo update` (#9843)
Feb 9, 2025
67be473
feat(`forge fmt`): add watch mode (#9838)
Feb 10, 2025
db3d9fc
feat(`common`): `PathOrContractInfo` arg type (#9770)
Feb 10, 2025
55785b7
fix(forge): decode fallbacks with calldata (#9859)
Feb 11, 2025
1bcd17c
feat: add `--alloy-rev` and fix `forge bind` re-run on built project …
Feb 11, 2025
e88e563
feat(forge): add option to suppress successful tests traces (#9865)
Feb 12, 2025
04937cd
chore(deps): bump alloy to `0.11.1` (#9866)
Feb 12, 2025
330c9b9
chore: fix release flow (#9869)
Feb 12, 2025
c0664e8
fix: pin to `macos-13-large` for release flow to support old SDK vers…
Feb 12, 2025
d158b9c
fix release: Pin tonistiigi/binfmt iamge (#9872)
Feb 12, 2025
aece6f4
chore: fix isolate tests (#9877)
Feb 13, 2025
e5ec47b
fix(anvil): return nonce and signature for deposit tx type (#9883)
Feb 13, 2025
6b3cf56
feat(`forge`): don't commit installations by default (#9884)
Feb 14, 2025
24d18e2
chore: fix flaky tests due to different totalDifficulty reported (#9889)
Feb 14, 2025
91740aa
fix(inspect): add flag to strip ir comments (#9825)
Feb 14, 2025
29cba10
fix(forge): flatten fails on top-level event declarations (#9892)
Feb 14, 2025
51b75c8
feat(`anvil`): emit warning server side on failing request (#9890)
Feb 14, 2025
5af4630
chore(deps): weekly `cargo update` (#9898)
Feb 17, 2025
b184ebd
fix: add support for inline `isolate` configuration (#9904)
Feb 17, 2025
3d393b6
fix(config): enable optimizer if optimizer runs > 0 in additional pro…
Feb 17, 2025
ac982da
feat: bump `alpine=3.21` in Dockerfile (#9907)
Feb 18, 2025
1946c2d
chore: update rpc keys (#9910)
Feb 18, 2025
087c676
feat(`cast age`): clarify block timestamp is UTC to allow for `date` …
Feb 18, 2025
fdd78d9
fix(`forge`): catch faulty test constructors (#9909)
Feb 18, 2025
7e8c6e9
feat: add `vm.foundryVersionCmp` and `vm.foundryVersionAtLeast` cheat…
Feb 18, 2025
97e2ebb
chore: version cmp cheatcodes clean up (#9914)
Feb 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
20 changes: 8 additions & 12 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
[alias]
cheats = "test -p foundry-cheatcodes-spec --features schema tests::"
test-debugger = "test -p forge --test cli manual_debug_setup -- --include-ignored --nocapture"

# Increase the stack size to 10MB for Windows targets, which is in line with Linux
# (whereas default for Windows is 1MB).
[target.x86_64-pc-windows-msvc]
rustflags = [
# Increases the stack size to 10MB, which is
# in line with Linux (whereas default for Windows is 1MB)
"-C",
"link-arg=/STACK:10000000",
]
rustflags = ["-Clink-arg=/STACK:10000000"]

[target.i686-pc-windows-msvc]
rustflags = [
# Increases the stack size to 10MB, which is
# in line with Linux (whereas default for Windows is 1MB)
"-C",
"link-arg=/STACK:10000000",
]
rustflags = ["-Clink-arg=/STACK:10000000"]
3 changes: 3 additions & 0 deletions .codespellrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[codespell]
skip = .git,target,testdata,Cargo.toml,Cargo.lock
ignore-words-list = crate,ser,ratatui,Caf,froms,strat
11 changes: 11 additions & 0 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[profile.default]
retries = { backoff = "exponential", count = 2, delay = "3s", jitter = true }
slow-timeout = { period = "1m", terminate-after = 3 }

[[profile.default.overrides]]
filter = "test(/ext_integration|can_test_forge_std/)"
slow-timeout = { period = "5m", terminate-after = 4 }

[[profile.default.overrides]]
filter = "package(foundry-cheatcodes-spec)"
retries = 0
7 changes: 4 additions & 3 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# auto-detection may fail for human-readable files, like the ones in abi/abi/*.sol
**/*.sol linguist-language=Solidity
crates/cheatcodes/assets/*.json linguist-generated
testdata/cheats/Vm.sol linguist-generated

crates/abi/src/bindings/*.rs linguist-generated
# See <https://git-scm.com/docs/gitattributes#_defining_a_custom_hunk_header>
*.rs diff=rust
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @danipopes @klkvr @mattsse @grandizzy @yash-atreya @zerosnacks
6 changes: 3 additions & 3 deletions .github/INTEGRATION_FAILURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ title: "bug: long-running integration tests failed"
labels: P-high, T-bug
---

The heavy (long-running) integration tests have failed. This indicates a regression in foundry.
The heavy (long-running) integration tests have failed. This indicates a regression in Foundry.

Check the [heavy integration tests workflow page]({{env.WORKFLOW_URL}}) for details.
Check the [heavy integration tests workflow page]({{ env.WORKFLOW_URL }}) for details.

This issue was raised by the workflow at `.github/workflows/heavy-integration.yml`.
This issue was raised by the workflow at `.github/workflows/heavy-integration.yml`.
8 changes: 6 additions & 2 deletions .github/ISSUE_TEMPLATE/BUG-FORM.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Bug report
description: File a bug report
labels: ["T-bug"]
labels: ["T-bug", "T-needs-triage"]
body:
- type: markdown
attributes:
Expand Down Expand Up @@ -32,6 +32,10 @@ body:
attributes:
label: What version of Foundry are you on?
placeholder: "Run forge --version and paste the output here"
- type: input
attributes:
label: What version of Foundryup are you on?
placeholder: "Run foundryup --version and paste the output here"
- type: input
attributes:
label: What command(s) is the bug in?
Expand All @@ -51,4 +55,4 @@ body:
label: Describe the bug
description: Please include relevant Solidity snippets as well if relevant.
validations:
required: true
required: true
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/FEATURE-FORM.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Feature request
description: Suggest a feature
labels: ["T-feature"]
labels: ["T-feature", "T-needs-triage"]
body:
- type: markdown
attributes:
Expand Down
13 changes: 13 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,15 @@ Thank you for your Pull Request. Please provide a description above and review
the requirements below.

Bug fixes and new features should include tests.

Contributors guide: https://github.com/foundry-rs/foundry/blob/master/CONTRIBUTING.md

The contributors guide includes instructions for running rustfmt and building the
documentation.
-->

<!-- ** Please select "Allow edits from maintainers" in the PR Options ** -->

## Motivation

<!--
Expand All @@ -19,3 +26,9 @@ thought of as being the motivation for your change.
Summarize the solution and provide any necessary context needed to understand
the code change.
-->

## PR Checklist

- [ ] Added Tests
- [ ] Added Documentation
- [ ] Breaking changes
4 changes: 2 additions & 2 deletions .github/RELEASE_FAILURE_ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ labels: P-high, T-bug

The release workflow has failed. Some or all binaries might have not been published correctly.

Check the [release workflow page]({{env.WORKFLOW_URL}}) for details.
Check the [release workflow page]({{ env.WORKFLOW_URL }}) for details.

This issue was raised by the workflow at `.github/workflows/release.yml`.
This issue was raised by the workflow at `.github/workflows/release.yml`.
Binary file added .github/assets/banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/assets/build_benchmark_solady_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/assets/build_benchmark_solady_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/assets/demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
64 changes: 57 additions & 7 deletions .github/changelog.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,66 @@
{
"categories": [
{
"title": "## Features",
"labels": ["T-feature"]
"title": "## Breaking changes",
"labels": ["T-likely-breaking "]
},
{
"title": "## Fixes",
"labels": ["T-bug", "T-fix"]
"title": "## Anvil Features",
"labels": ["C-anvil", "T-feature"],
"exhaustive": true,
"exhaustive_rules": false
},
{
"title": "## Anvil Fixes",
"labels": ["C-anvil", "T-bug"],
"exhaustive": true,
"exhaustive_rules": false
},
{
"title": "## Cast Features",
"labels": ["C-cast", "T-feature"],
"exhaustive": true,
"exhaustive_rules": false
},
{
"title": "## Cast Fixes",
"labels": ["C-cast", "T-bug"],
"exhaustive": true,
"exhaustive_rules": false
},
{
"title": "## Chisel Features",
"labels": ["C-chisel", "T-feature"],
"exhaustive": true,
"exhaustive_rules": false
},
{
"title": "## Chisel Fixes",
"labels": ["C-chisel", "T-bug"],
"exhaustive": true,
"exhaustive_rules": false
},
{
"title": "## Forge Features",
"labels": ["C-forge", "T-feature"],
"exhaustive": true,
"exhaustive_rules": false
},
{
"title": "## Forge Fixes",
"labels": ["C-forge", "T-bug"],
"exhaustive": true,
"exhaustive_rules": false
},
{
"title": "## Performance improvements",
"labels": ["T-perf"]
}
],
"ignore_labels": ["L-ignore"],
"template": "${{CHANGELOG}}\n## Other\n\n${{UNCATEGORIZED}}",
"pr_template": "- ${{TITLE}} (#${{NUMBER}})",
"empty_template": "- No changes"
"template": "${{CHANGELOG}}\n## Other\n\n${{UNCATEGORIZED}}\n## Full Changelog:\n ${{RELEASE_DIFF}}",
"pr_template": "- ${{TITLE}} (#${{NUMBER}}) by @${{AUTHOR}}",
"empty_template": "- No changes",
"max_pull_requests": 500,
"max_back_track_time_days": 120
}
Binary file removed .github/demo.gif
Binary file not shown.
Binary file removed .github/logo.png
Binary file not shown.
7 changes: 7 additions & 0 deletions .github/scripts/format.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
set -eo pipefail

# We have to ignore at shell level because testdata/ is not a valid Foundry project,
# so running `forge fmt` with `--root testdata` won't actually check anything
cargo run --bin forge -- fmt "$@" \
$(find testdata -name '*.sol' ! -name Vm.sol ! -name console.sol)
146 changes: 146 additions & 0 deletions .github/scripts/matrices.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
#!/usr/bin/env python3

import json
import os


# A runner target
class Target:
# GHA runner
runner_label: str
# Rust target triple
target: str
# SVM Solc target
svm_target_platform: str

def __init__(self, runner_label: str, target: str, svm_target_platform: str):
self.runner_label = runner_label
self.target = target
self.svm_target_platform = svm_target_platform


# A single test suite to run.
class Case:
# Name of the test suite.
name: str
# Nextest filter expression.
filter: str
# Number of partitions to split the test suite into.
n_partitions: int
# Whether to run on non-Linux platforms for PRs. All platforms and tests are run on pushes.
pr_cross_platform: bool

def __init__(
self, name: str, filter: str, n_partitions: int, pr_cross_platform: bool
):
self.name = name
self.filter = filter
self.n_partitions = n_partitions
self.pr_cross_platform = pr_cross_platform


# GHA matrix entry
class Expanded:
name: str
runner_label: str
target: str
svm_target_platform: str
flags: str
partition: int

def __init__(
self,
name: str,
runner_label: str,
target: str,
svm_target_platform: str,
flags: str,
partition: int,
):
self.name = name
self.runner_label = runner_label
self.target = target
self.svm_target_platform = svm_target_platform
self.flags = flags
self.partition = partition


profile = os.environ.get("PROFILE")
is_pr = os.environ.get("EVENT_NAME") == "pull_request"
t_linux_x86 = Target("ubuntu-latest", "x86_64-unknown-linux-gnu", "linux-amd64")
# TODO: Figure out how to make this work
# t_linux_arm = Target("ubuntu-latest", "aarch64-unknown-linux-gnu", "linux-aarch64")
t_macos = Target("macos-latest", "aarch64-apple-darwin", "macosx-aarch64")
t_windows = Target("windows-latest", "x86_64-pc-windows-msvc", "windows-amd64")
targets = [t_linux_x86, t_windows] if is_pr else [t_linux_x86, t_macos, t_windows]

config = [
Case(
name="unit",
filter="!kind(test)",
n_partitions=1,
pr_cross_platform=True,
),
Case(
name="integration",
filter="kind(test) & !test(/\\b(issue|ext_integration)/)",
n_partitions=3,
pr_cross_platform=True,
),
Case(
name="integration / issue-repros",
filter="package(=forge) & test(/\\bissue/)",
n_partitions=2,
pr_cross_platform=False,
),
Case(
name="integration / external",
filter="package(=forge) & test(/\\bext_integration/)",
n_partitions=2,
pr_cross_platform=False,
),
]


def main():
expanded = []
for target in targets:
for case in config:
if is_pr and (not case.pr_cross_platform and target != t_linux_x86):
continue

for partition in range(1, case.n_partitions + 1):
os_str = ""
if len(targets) > 1:
os_str = f" ({target.target})"

name = case.name
flags = f"-E '{case.filter}'"
if case.n_partitions > 1:
s = f"{partition}/{case.n_partitions}"
name += f" ({s})"
flags += f" --partition count:{s}"

if profile == "isolate":
flags += " --features=isolate-by-default"
name += os_str

obj = Expanded(
name=name,
runner_label=target.runner_label,
target=target.target,
svm_target_platform=target.svm_target_platform,
flags=flags,
partition=partition,
)
expanded.append(vars(obj))

print_json({"include": expanded})


def print_json(obj):
print(json.dumps(obj), end="", flush=True)


if __name__ == "__main__":
main()
Loading