Skip to content

wip: fmt solar #10907

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 352 commits into
base: dani/fmt-solar
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
352 commits
Select commit Hold shift + click to select a range
b42d512
chore: Add unused deps lint (#10666)
nguyenethan01 Jun 2, 2025
1d25ca5
chore(`Makefile`): add .PHONY, fix help formatting (#10686)
zerosnacks Jun 3, 2025
132cb13
chore: fix clippy (#10687)
grandizzy Jun 3, 2025
665fc04
chore: activate `prague` hardfork and Solidity version `0.8.30` as de…
zerosnacks Jun 3, 2025
213d27d
chore: add license to preprocessor deploy helper (#10684)
grandizzy Jun 3, 2025
cde1f32
chore: update announcements link in `nightly` warning for Foundry boo…
zerosnacks Jun 3, 2025
b2bcaf5
chore(deps): weekly `cargo update` (#10680)
github-actions[bot] Jun 3, 2025
18159b1
chore: fix flaky test, bump timeout max rejects, use http provider (#…
grandizzy Jun 3, 2025
5ae91c6
feat: added disable-code-size-limit flag in forge script (#10661)
Soubhik-10 Jun 3, 2025
82159b5
chore: remove unused opcodes file (#10695)
zerosnacks Jun 3, 2025
66edc26
chore: add additional check for is_impersonanted (#10701)
mattsse Jun 4, 2025
365cbb4
feat(forge): eip712 cheatcodes + forge cmd (eip712 + bind-json) with …
0xrusowsky Jun 4, 2025
dc43e2c
fix: always update auth txenv var (#10707)
mattsse Jun 4, 2025
8cdf80b
fix(cast): do not use default overrides if no override arg (#10710)
grandizzy Jun 5, 2025
b3fe111
feat: add some clippy lint (#10479)
taikoonwang Jun 5, 2025
1334c42
chore: bump version 1.2.3 (#10712)
grandizzy Jun 5, 2025
f914e01
fix(anvil): guard against the blockchain advancing while checking lat…
alexghr Jun 5, 2025
01328a9
feat(script): keep script / tx timestamp as milis instead seconds (#1…
grandizzy Jun 5, 2025
9963414
fix: eip7702 cheatcodes multiple auth (#10623)
zjesko Jun 5, 2025
fe04be8
docs: add uninstall instructions (#10335)
redtrama Jun 6, 2025
eefb8a0
chore(`forge bind`): pin alloy to 1.0 + e2e test (#10724)
yash-atreya Jun 6, 2025
192332e
Update README.md (#10725)
jenpaff Jun 6, 2025
548d1f0
fix(chisel): memory data location for string and bytes params (#10729)
grandizzy Jun 8, 2025
f0932d0
chore: update proptest to 1.7.0 (#10733)
grandizzy Jun 9, 2025
cdd74cb
chore(deps): weekly `cargo update` (#10728)
github-actions[bot] Jun 9, 2025
090f002
feat(cast): add `--cost` for `estimate` to return the eth cost at cu…
0xvv Jun 9, 2025
f13f60e
fix: check for op deposit tx when handling cast tx (#10742)
mattsse Jun 10, 2025
c199a5b
chore: remove announcement link in `nightly` as it is unmaintained (#…
zerosnacks Jun 10, 2025
8b04d0d
fix: adds remaining ZKsync chains for estimate gas checks (#10719)
dutterbutter Jun 10, 2025
1836d5e
feat: Add anvil set erc20 allowance endpoint (#10746)
pistomat Jun 10, 2025
3aac249
refactor: unify ERC20 storage slot discovery logic (#10749)
mattsse Jun 10, 2025
df0ec82
chore: gitignore CLAUDE instructions and settings (#10750)
yash-atreya Jun 10, 2025
9b58320
fix: pin action gh release to v2.2.2 (#10752)
grandizzy Jun 10, 2025
ac0411d
feat(forge vb): creation code from tx trace (#10751)
grandizzy Jun 10, 2025
d544ae2
feat(`forge`): run lint on forge build (#10748)
yash-atreya Jun 11, 2025
01e9dc2
chore(config): enable show_metrics by default in [invariant] section …
0xChaddB Jun 11, 2025
2dbd8c9
chore: update nix flake (#10485)
shaunkh Jun 11, 2025
2494b70
bug(`nix`): fix build in CI (#10767)
zerosnacks Jun 12, 2025
558d7d5
fix(forge): Ignore file access events to prevent rebuild loop (#10763)
joeblogg801 Jun 12, 2025
6fb7c59
fix(`forge`): don't include lib in lint runs (#10771)
yash-atreya Jun 12, 2025
4416ed2
docs: minor fixes for uninstall instructions (#10777)
zerosnacks Jun 13, 2025
d22e730
deps: bump foundry-fork-db 0.15.1 (#10778)
onbjerg Jun 13, 2025
ea2b67f
Update flake.lock (#10780)
github-actions[bot] Jun 15, 2025
4435b46
feat(forge): table tests (#10775)
grandizzy Jun 16, 2025
893da4d
chore(deps): weekly `cargo update` (#10781)
github-actions[bot] Jun 16, 2025
66fe662
feat: add useSeed cheatcode to set RNG seed (#10698)
Another-DevX Jun 16, 2025
3617425
feat(cast): `compute_address` add support CREATE2 addresses (#10783)
mablr Jun 16, 2025
d417122
show native token symbol on tx broadcast (#10770)
ahsan-javaiid Jun 16, 2025
2ddd74a
chore: add hash to eip-712 cmd (#10764)
0xrusowsky Jun 16, 2025
c49d363
bug(anvil): incorrectly adds +1 gas when estimating transactions with…
gitToki Jun 17, 2025
9ac31cd
fix: eip712, bind-json solar cleanups (#10789)
DaniPopes Jun 17, 2025
b515c90
ci: don't check all features (#10790)
DaniPopes Jun 17, 2025
6ceff66
feat: added block.time and block.number override in cast (#10727)
Soubhik-10 Jun 18, 2025
bfc53de
chore: pin nextest version in ci (#10800)
grandizzy Jun 18, 2025
88d32ec
wip: try-catch
0xrusowsky Jun 18, 2025
aa1a0a5
wip: try-catch
0xrusowsky Jun 18, 2025
e945d91
feat: print compact tuple
0xrusowsky Jun 18, 2025
0189490
wip: inline comments
0xrusowsky Jun 18, 2025
3bde150
wip: try-cactch
0xrusowsky Jun 19, 2025
6181d51
chore: clean up unused EOF code (#10715)
zerosnacks Jun 19, 2025
23e8841
fix(forge): vm.getChain use config for rpc and alias (#10806)
grandizzy Jun 19, 2025
8e66fd1
feat(forge): `--exclude-tests` option from coverage (#10807)
grandizzy Jun 19, 2025
0c3dc32
chore: bump vyper 0.4.3 and remove previous `prague` handling (#10808)
zerosnacks Jun 19, 2025
f03869c
chore: fix failing test (#10813)
grandizzy Jun 19, 2025
fa8d17e
chore: unpin `rustfmt` nightly (#10815)
zerosnacks Jun 19, 2025
383429c
Revert "chore: pin nextest version in ci" (#10814)
zerosnacks Jun 19, 2025
7b1b531
chore: use native alloy functions for otterscan helpers (#10816)
mattsse Jun 19, 2025
4fb811a
chore: reuse alloy lenient blocknumber deserializer (#10817)
mattsse Jun 19, 2025
6aa1860
chore: remove HexDisplay util (#10819)
mattsse Jun 20, 2025
9d93694
chore: update external integration tests (#10811)
zerosnacks Jun 20, 2025
edb9cc0
chore: remove unused util (#10818)
mattsse Jun 20, 2025
2b3f9ff
test(cast): add tests for EIP-712 type names with colons (#10772)
mattsse Jun 20, 2025
e6de72c
feat(forge): coverage guided fuzzing & time based campaigns for invar…
0xalpharush Jun 20, 2025
ed86c64
chore: use existing minimal_tx_type fn (#10826)
mattsse Jun 21, 2025
ca9f420
feat(fmt): dprint for toml, json, md, dockerfile, ts, & yml (#10824)
o-az Jun 21, 2025
bc59dc5
bump solar to have try-catch spans (#10832)
0xrusowsky Jun 22, 2025
a478009
Update flake.lock (#10830)
github-actions[bot] Jun 22, 2025
e44249a
chore(deps): weekly `cargo update` (#10831)
github-actions[bot] Jun 22, 2025
6f86df2
wip comment fmt
0xrusowsky Jun 23, 2025
43e1fc2
wip: array expr
0xrusowsky Jun 23, 2025
9694fa1
finish arrays
0xrusowsky Jun 23, 2025
2322863
block comments
0xrusowsky Jun 23, 2025
e174b3c
doc block comments
0xrusowsky Jun 23, 2025
20d91e2
ternary operators
0xrusowsky Jun 24, 2025
8bd3d64
feat(cast): add recover-authority for EIP7702 Authorization (#10839)
jsvisa Jun 24, 2025
12ff25d
fix(forge): filter selectors if test contract is target (#10798)
grandizzy Jun 24, 2025
a3b6b33
refactor: flatten bind_json.rs to one pass without state structs (#10…
DaniPopes Jun 24, 2025
d0fc977
cast: Improve debugger when tracing on-chain transactions/calls (#10596)
ngotchac Jun 25, 2025
6de8703
chore(forge-lint): clickable links + housekeeping (#10847)
0xrusowsky Jun 25, 2025
c3e58d4
fix: receipt conversion (#10853)
mattsse Jun 26, 2025
242069c
feat(forge lint): disable lints with inline comment (#10776)
0xrusowsky Jun 26, 2025
c20d7af
feat(cast): display public_key on wallet creation with "new" and "new…
mablr Jun 26, 2025
8f02485
feat(cast): print a warning on calling a contract without code (#10842)
ryzhak Jun 26, 2025
04f9927
Fix typos in test identifiers and improve timestamp assertions (#10851)
leopardracer Jun 26, 2025
b202bd4
fix: Respect `--override-*` flags on `cast call` with `--trace` flag …
Yen Jun 26, 2025
51650ea
fix: replace broken JSON-RPC error code link with EIP-1474 reference …
MozirDmitriy Jun 26, 2025
6c01dc6
chore: simplify tx type conversion (#10862)
mattsse Jun 27, 2025
361db14
wip: fn header
0xrusowsky Jun 27, 2025
ba2821d
feat(cheatcodes): extend usable range in `assertApproxEqRel` (#10758)
beeb Jun 27, 2025
e2a4055
wip: fn header
0xrusowsky Jun 27, 2025
39898f4
feat(forge-lint): [claude] unchecked calls (#10810)
0xrusowsky Jun 27, 2025
01691c2
chore: make clippy happy (#10870)
mattsse Jun 28, 2025
ae7205c
fix(cast): Always use from field of getTransaction rpc response in ca…
ckoopmann Jun 28, 2025
4808664
cast: rm expect dependency_on_unit_never_type_fallback (#10872)
jsvisa Jun 28, 2025
bc96621
feat(cast): add flag to disable HTTPS certificate validation for RPC …
mablr Jun 28, 2025
348ddf8
Update flake.lock (#10873)
github-actions[bot] Jun 29, 2025
26cd54b
chore(deps): weekly `cargo update` (#10874)
github-actions[bot] Jun 29, 2025
cd7bb91
feat: added eth_sendRawTransactionSync and eth_sendTransactionSync su…
Rimeeeeee Jun 29, 2025
cd086b7
chore(deps): bump alloy-trie 0.9 (#10881)
DaniPopes Jun 29, 2025
9b6716b
chore(cast wallet): get public key using Alloy's helper (#10883)
mablr Jun 30, 2025
4d09252
Add more unit tests to `cast call` (#10888)
ryzhak Jun 30, 2025
38f6f7c
fix: doc block comments + block braces
0xrusowsky Jul 1, 2025
164f9fb
feat(forge lint): unused imports (#10662)
0xrusowsky Jul 1, 2025
4f57725
chore: add trace for contract_abi error (#10898)
mattsse Jul 1, 2025
b1c8150
Fix typos in Anvil module comments, docs, and test names (#10889)
MozirDmitriy Jul 1, 2025
84e50ef
feat(`anvil`): reset to in-mem (#10897)
yash-atreya Jul 2, 2025
1d7f5eb
fix(links): update foundry book links (#10899)
sambacha Jul 2, 2025
6d178bb
refactor state to organize helpers
0xrusowsky Jul 2, 2025
6983a93
fix: forge doc panic (#10901)
zerosnacks Jul 2, 2025
66f9c6c
fix commasep with initial trailing cmnt
0xrusowsky Jul 2, 2025
ab0768a
chore: typos (#10908)
DaniPopes Jul 2, 2025
7ba3c5f
fix: improve contract fmt
0xrusowsky Jul 3, 2025
729e250
fix: block comments + contract definition
0xrusowsky Jul 3, 2025
3c518a1
fix: wrap trailing comments
0xrusowsky Jul 3, 2025
d4c9403
fix fn alingment
0xrusowsky Jul 3, 2025
b06a67b
fix: rmv unecessary check
0xrusowsky Jul 3, 2025
9ec0299
fix(`cast`): bump alloy to 0.2.5 for Ethereum V2 API compatility w/ `…
zerosnacks Jul 3, 2025
710a158
chore: bump to rust edition 2024 (#10802)
zerosnacks Jul 3, 2025
6cd8b02
chore: ignore edition 2024 bump in .git-blame-ignore-revs (#10919)
DaniPopes Jul 3, 2025
488b962
test: check before listening (#10920)
mattsse Jul 3, 2025
08b7c94
chore: bump to MSRV 1.88 (#10921)
DaniPopes Jul 3, 2025
37e143e
fix: spawn state writer blocking (#10922)
mattsse Jul 4, 2025
6092317
fix: spawn fork backendhandler on current tokio runtime (#10923)
mattsse Jul 4, 2025
c156ebf
working fn headers!!!
0xrusowsky Jul 4, 2025
3e1b039
Fix misleading doc comment for chisel_history_file function (#10928)
GarmashAlex Jul 4, 2025
9d47d9c
fix(docs): correct --unlocked flag documentation for RPC transaction …
CreeptoGengar Jul 4, 2025
a6afa14
block with comments at the beginning
0xrusowsky Jul 4, 2025
c50d4e5
feat: add mesc chainid lookup (#10927)
mattsse Jul 5, 2025
4c52bc2
Update flake.lock (#10936)
github-actions[bot] Jul 6, 2025
16aa884
bump solar
0xrusowsky Jul 6, 2025
b2072e6
chore(deps): weekly `cargo update` (#10937)
github-actions[bot] Jul 6, 2025
e480934
chore: remove invalid etherscan API key (#10942)
grandizzy Jul 7, 2025
e83b282
feat(forge): support vyper contract verification in `forge verify-con…
Another-DevX Jul 7, 2025
e01b956
feat(cast): add flag to disable alias (#10924)
varun-doshi Jul 7, 2025
63fb6f0
feat(forge): apply fail_on_revert for fuzz tests too (#10941)
grandizzy Jul 7, 2025
23a991e
fix: dont check pool for gettransaction receipt (#10946)
mattsse Jul 7, 2025
9399689
feat(forge): add support for repository-path in forge doc (#10879)
nitininhouse Jul 8, 2025
f14cee8
chore: add cast code disassemble test (#10950)
grandizzy Jul 8, 2025
2c65fbc
fix: use correct mix hash for header (#10951)
mattsse Jul 8, 2025
9769cd8
fix(cast call/estimate/send): omit function selector from arguments o…
nuntax Jul 8, 2025
72409d4
chore: more etherescan v1 cleanup (#10956)
grandizzy Jul 8, 2025
9b2d464
feat(cast): rpc --json should format as json (#10871)
jsvisa Jul 8, 2025
109f264
fix: update block env after tx forking (#10963)
mattsse Jul 8, 2025
a78d1ff
feat(cast): add disable-labels for cast run (#10970)
grandizzy Jul 9, 2025
9265b29
chore: remove unused import in Counter template (#10969)
grandizzy Jul 9, 2025
4f1d965
chore: link rustdocs in README (#10971)
yash-atreya Jul 9, 2025
867a414
fix(ci): ignore scroll test (#10976)
grandizzy Jul 10, 2025
01e3bc5
feat(`dependencies`): support pinning of tags / revs when using `.git…
yash-atreya Jul 10, 2025
d592b3e
feat(`foundryup`): avoid unnecessary downloads and verify hashes of d…
zerosnacks Jul 10, 2025
9a6dbad
chore: clippy fix (#10983)
grandizzy Jul 11, 2025
ad3e238
fix(cast): account state diffs overrides (#10982)
grandizzy Jul 11, 2025
387928b
fix(forge-lint): [unused imports] check path slice (#10985)
0xrusowsky Jul 11, 2025
a7382ef
inline if statements based on user config
0xrusowsky Jul 11, 2025
aa3cc0f
feat: benchmark suite (#10804)
yash-atreya Jul 11, 2025
f59a696
Clarify comments in ChiselRunner: fix incomplete and misleading docst…
GarmashAlex Jul 12, 2025
90561a2
chore(deps): weekly `cargo update` (#10997)
github-actions[bot] Jul 13, 2025
c16f06a
Update flake.lock (#10996)
github-actions[bot] Jul 13, 2025
3162a89
operator expr
0xrusowsky Jul 13, 2025
0591876
feat: added get_blob_by_hash (#10987)
Soubhik-10 Jul 14, 2025
5c2e8d6
finish binary operators + housekeeping
0xrusowsky Jul 14, 2025
3105192
housekeeping
0xrusowsky Jul 14, 2025
677fd7f
chore: fix clippy (#11011)
grandizzy Jul 15, 2025
09dc9ff
feat: binary expressions
0xrusowsky Jul 15, 2025
57aff04
fix: string literals
0xrusowsky Jul 15, 2025
faf1503
fix(forge-lint): [unused imports] check doc cmnts (inheritdoc) (#11003)
0xrusowsky Jul 15, 2025
9a11b37
chore: update dependencies (#11007)
zerosnacks Jul 15, 2025
887c9b7
chore(deps): bump to revm 27.0.3 (#10838)
zerosnacks Jul 15, 2025
920ee3a
chore: bump to 1.3.0 (#11013)
grandizzy Jul 15, 2025
5a4835c
fix(`cheatcodes`): count `0` swallows non-matching reverts (#10867)
yash-atreya Jul 15, 2025
00988ab
feat: fuzzer metrics (#10988)
0xalpharush Jul 15, 2025
13c4502
fix(invariant): apply targetSelector and excludeSelector for test con…
grandizzy Jul 16, 2025
3d6d8fe
fix(forge-lint): [unused-imports] manually walk override paths (#11020)
0xrusowsky Jul 16, 2025
d0eca3d
fix(`cheatcodes`): load pranked caller acc in state (#11023)
yash-atreya Jul 16, 2025
3b0a10f
refactor comments + finish mappings
0xrusowsky Jul 16, 2025
2f7e57a
fix(forge-lint): [inline-config] use relative span positions (#11022)
0xrusowsky Jul 16, 2025
78989e0
chore: relax tracer bounds (#11024)
mattsse Jul 16, 2025
03e3dbc
feat(forge-lint): new `LateLintPass` + support code snippets (#10846)
0xrusowsky Jul 16, 2025
81d1867
named functions
0xrusowsky Jul 16, 2025
6d097d6
chore: remove manual usage of solar SessionGlobals (#10980)
DaniPopes Jul 16, 2025
26dab16
docs: Fix dead links across the codebase (#11012)
vtjl10 Jul 16, 2025
6d34b33
feat(cast): add `--raw` option to block subcommand (#11027)
mablr Jul 16, 2025
25dbd09
chore: return reorged blocks (#11026)
mattsse Jul 17, 2025
0af4341
fix: ensure account is always loaded and marked as touched when prank…
zerosnacks Jul 17, 2025
c617d1b
item spacing
0xrusowsky Jul 17, 2025
874a6b0
feat(forge fmt): Adds tab support as indent char in fmt (#10979)
mathewmeconry Jul 17, 2025
61106c3
fix(cheatcodes): remove redundant computation in validate_private_key…
reject-i Jul 17, 2025
7c22331
docs(lintrules): reflect latest impl changes (#11031)
0xrusowsky Jul 17, 2025
fc5ae7f
more flexible comments + return stmts
0xrusowsky Jul 17, 2025
5eb910c
fix(forge): show git submodule status error (#11033)
grandizzy Jul 17, 2025
375025d
chore: centralize and reduce number of spawned tokio runtimes (#11040)
DaniPopes Jul 18, 2025
6692a25
refactor(cast): simplify Unit parsing in from_fixed_point (#11042)
KumaCrypto Jul 18, 2025
834228c
chore: migrate from codespell to typos (#11045)
DaniPopes Jul 18, 2025
c78faa2
feat(cast): add checksum address with chain id (#11043)
KumaCrypto Jul 18, 2025
f3b697d
fix(`benches`): bench sequentially (#11032)
yash-atreya Jul 19, 2025
99235af
Update flake.lock (#11049)
github-actions[bot] Jul 20, 2025
3d961b8
chore(deps): weekly `cargo update` (#11050)
github-actions[bot] Jul 20, 2025
0739d77
feat: add support for passthrough of `debug_codeByHash` (#11053)
cakevm Jul 20, 2025
679c2ec
fix: enable edge coverage only when needed (#11041)
grandizzy Jul 20, 2025
cfea8fa
chore: fix isolate test workflow (#11055)
grandizzy Jul 21, 2025
6a8410e
chore(`deps`): update alloy-evm to 0.15 (#11057)
zerosnacks Jul 21, 2025
56b806a
chore: lookup codehash locally (#11060)
mattsse Jul 21, 2025
8439227
feat(anvil): use signatures identifier for --print-traces (#11070)
mattsse Jul 23, 2025
cb8f3bf
feat: use alloy-evm apply overrides (#11071)
mattsse Jul 23, 2025
566244e
Update to soldeer 0.6.0 (#11044)
mario-eth Jul 23, 2025
9dbae34
docs: remove misleading code hash reference from impersonate method d…
Galoretka Jul 23, 2025
450f2c7
feat(`benches`): forge test --isolate (#11037)
yash-atreya Jul 23, 2025
ecdb1ea
chore(deps): bump svm, toml (#11074)
DaniPopes Jul 23, 2025
ae262ec
fix: avoid reloading files to pcx (#11076)
0xrusowsky Jul 23, 2025
575279d
perf: improve InspectorStack (#11077)
DaniPopes Jul 23, 2025
3a11020
feat(`cheats`): add `vm.getRawBlockHeader(blockNumber)` (#11082)
0xClandestine Jul 24, 2025
9c3feff
chore(deps): bump revm v27.1.0 (#11079)
DaniPopes Jul 24, 2025
a616c7a
fix(`benches`): forge build benches (#11036)
yash-atreya Jul 24, 2025
31cba15
chore: use alloy-evm::apply_state_overrides (#11083)
Soubhik-10 Jul 24, 2025
5bbc09c
fix: doc comment for set_code method in Db trait (#11087)
Galoretka Jul 24, 2025
6e1059b
chore(`benches`): latest benches (#11086)
yash-atreya Jul 24, 2025
e5519c6
fix: remove misleading `$ETH_FROM` (#11088)
zerosnacks Jul 24, 2025
391f37f
fix(cast): use all providers if local artifacts used (#11090)
grandizzy Jul 24, 2025
0af1bd6
var definition and flexible comments (#11093)
0xrusowsky Jul 24, 2025
485640e
Remove the --froms flag (#11099)
CodeSandwich Jul 25, 2025
54a6410
feat(forge-lint): [claude] check for unwrapped modifiers (#10967)
0xClandestine Jul 25, 2025
5a552bb
perf: box inspectors in InspectorStack (#11100)
DaniPopes Jul 25, 2025
b57f7c1
feat(anvil): added js tracer (#11052)
Soubhik-10 Jul 25, 2025
16a0a81
comment wrapping
0xrusowsky Jul 26, 2025
fbd3abe
chore: more StackInspector cleanups (#11105)
DaniPopes Jul 26, 2025
a3bb11e
Update flake.lock (#11114)
github-actions[bot] Jul 27, 2025
a81a955
chore(deps): weekly `cargo update` (#11115)
github-actions[bot] Jul 27, 2025
e394ae3
sorted imports
0xrusowsky Jul 27, 2025
dfa7b91
fix(cast): improve handling of `mktx --raw-unsigned` with runtime val…
mablr Jul 27, 2025
094eff8
feat(forge): "add" alias for install subcommand (#11124)
mablr Jul 28, 2025
88b14a1
fix(`cast`): unknown signatures are cached as an empty string (#11127)
zerosnacks Jul 28, 2025
e566080
chore: update package.homepage (#11131)
DaniPopes Jul 28, 2025
1aef588
chore(deps): update dependencies including fixes for incompatible ver…
zerosnacks Jul 28, 2025
1c7cd9d
fix: use existing functions for accountinfo (#11134)
mattsse Jul 28, 2025
cd21898
fix: tracy integration (#11135)
DaniPopes Jul 28, 2025
8030cbc
feat(`cheatcodes`): decode and show mismatched params on expectEmit (…
yash-atreya Jul 29, 2025
e653dbf
Revert "fix(`cast`): unknown signatures are cached as an empty string…
zerosnacks Jul 29, 2025
54d2561
fix(`anvil`): unwrap panic in `eth/backend/mem/mod.rs` (#11141)
zerosnacks Jul 29, 2025
7cb9f70
middle cmnts for arrays and literals with subdenominations
0xrusowsky Jul 29, 2025
a499df4
revert: solar won't have spanned dataloc + subdenom
0xrusowsky Jul 30, 2025
f063eeb
Merge branch 'master' of github.com:foundry-rs/foundry into rusowsky/…
0xrusowsky Jul 30, 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
  •  
  •  
  •  
3 changes: 0 additions & 3 deletions .codespellrc

This file was deleted.

2 changes: 1 addition & 1 deletion .config/nextest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
chisel-serial = { max-threads = 1 }

[profile.default]
retries = { backoff = "exponential", count = 2, delay = "3s", jitter = true }
retries = { backoff = "exponential", count = 2, delay = "5s", jitter = true }
slow-timeout = { period = "1m", terminate-after = 3 }

[[profile.default.overrides]]
Expand Down
84 changes: 84 additions & 0 deletions .devcontainer/Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
FROM ubuntu:22.04

ARG USERNAME=foundry
ARG USER_UID=1000
ARG USER_GID=$USER_UID
ARG PYTHON_VERSION=3.11
ARG NODE_MAJOR=20
ARG VYPER_VERSION=0.4.3

ENV DEBIAN_FRONTEND=noninteractive
ENV CARGO_TERM_COLOR=always \
RUST_BACKTRACE=full

WORKDIR /workspace

RUN apt-get update && apt-get install -y --no-install-recommends \
# Build tools
build-essential \
clang \
lld \
pkg-config \
# Network/SSL
curl \
ca-certificates \
gnupg \
libssl-dev \
# Version control & utils
git \
sudo \
unzip \
# Python
python${PYTHON_VERSION} \
python3-pip \
python${PYTHON_VERSION}-venv \
# Add Node.js repo
&& mkdir -p /etc/apt/keyrings \
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_MAJOR}.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
# Update again after adding repo and install Node.js
&& apt-get update && apt-get install -y --no-install-recommends \
nodejs \
# Clean up apt cache
&& apt-get clean && rm -rf /var/lib/apt/lists/*

# Ensure python points to the installed python version
RUN ln -sf /usr/bin/python${PYTHON_VERSION} /usr/bin/python && \
ln -sf /usr/bin/python${PYTHON_VERSION} /usr/bin/python3

# Create non-root user with sudo privileges
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME -s /bin/bash \
# Setup sudo without password prompt
&& echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/$USERNAME \
&& chmod 0440 /etc/sudoers.d/$USERNAME \
# Add user to the sudo group (standard practice)
&& usermod -aG sudo $USERNAME

# Switch to the non-root user
USER $USERNAME
WORKDIR /home/$USERNAME

# --- User-specific installations ---

# Install Bun
ENV BUN_INSTALL="/home/$USERNAME/.bun"
ENV PATH="$BUN_INSTALL/bin:$PATH"
RUN curl -fsSL https://bun.sh/install | bash

# Install Rust & cargo-nextest
ENV CARGO_HOME="/home/$USERNAME/.cargo"
ENV RUSTUP_HOME="/home/$USERNAME/.rustup"
ENV PATH="$CARGO_HOME/bin:$PATH"
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \
&& cargo install cargo-nextest --locked

# Install Vyper using pip
# Ensure pip user install directory is in PATH
ENV PYTHONUSERBASE="/home/$USERNAME/.local"
ENV PATH="$PYTHONUSERBASE/bin:$PATH"
RUN pip3 install --user vyper==${VYPER_VERSION}

# Switch back to the main workspace directory
WORKDIR /workspace

49 changes: 49 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// For format details, see https://aka.ms/devcontainer.json.
{
"name": "Foundry Development",
"build": {
"context": "..",
"dockerfile": "Dockerfile.dev"
},

"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": true,
"configureZshAsDefaultShell": true,
"installOhMyZsh": true,
"upgradePackages": true
}
},

"forwardPorts": [],

"postCreateCommand": "rustup default stable && rustup update",

"customizations": {
"vscode": {
"extensions": [
"rust-lang.rust-analyzer",
"serayuzgur.crates",
"tamasfe.even-better-toml",
"ms-python.python",
"dbaeumer.vscode-eslint",
"oven.bun-vscode"
],
"settings": {
"rust-analyzer.checkOnSave": true,
"rust-analyzer.cargo.features": "all"
}
}
},

"remoteUser": "foundry",

"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached",

"workspaceFolder": "/workspace",

"mounts": [
"source=${localEnv:HOME}/.cargo/registry,target=/home/foundry/.cargo/registry,type=bind,consistency=cached",
"source=${localEnv:HOME}/.cargo/git,target=/home/foundry/.cargo/git,type=bind,consistency=cached"
]
}
3 changes: 3 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@

# fmt: all (#3398)
860d083183b51a6f8d865408ef1a44aa694d6862

# chore: bump to rust edition 2024 (#10802)
710a1584aae8e0f8ca8d5ba552632dc72381091e
5 changes: 5 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@ testdata/cheats/Vm.sol linguist-generated

# See <https://git-scm.com/docs/gitattributes#_defining_a_custom_hunk_header>
*.rs diff=rust
crates/lint/testdata/* text eol=lf
testdata/fixtures/**/* eol=lf

dprint.json linguist-language=JSON-with-Comments
.devcontainer/devcontainer.json linguist-language=JSON-with-Comments
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ the code change.

- [ ] Added Tests
- [ ] Added Documentation
- [ ] Breaking changes
- [ ] Breaking changes
204 changes: 204 additions & 0 deletions .github/scripts/combine-benchmarks.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
#!/bin/bash
set -euo pipefail

# Script to combine individual benchmark results into LATEST.md
# Usage: ./combine-benchmarks.sh <output_dir>

OUTPUT_DIR="${1:-benches}"

# Create output directory if it doesn't exist
mkdir -p "$OUTPUT_DIR"

# Define the benchmark files and their section names
declare -A BENCHMARK_FILES=(
["forge_test_bench.md"]="Forge Test"
["forge_build_bench.md"]="Forge Build"
["forge_coverage_bench.md"]="Forge Coverage"
)

# Function to extract a specific section from a benchmark file
extract_section() {
local file=$1
local section=$2
local in_section=0

while IFS= read -r line; do
if [[ "$line" =~ ^##[[:space:]]+"$section" ]]; then
in_section=1
echo "$line"
elif [[ $in_section -eq 1 && "$line" =~ ^##[[:space:]] && ! "$line" =~ ^##[[:space:]]+"$section" ]]; then
break
elif [[ $in_section -eq 1 ]]; then
echo "$line"
fi
done < "$file"
}

# Function to extract summary info (repos and versions) from a file
extract_summary_info() {
local file=$1
local in_summary=0
local in_repos=0
local in_versions=0

while IFS= read -r line; do
# Check for Summary section
if [[ "$line" =~ ^##[[:space:]]+Summary ]]; then
in_summary=1
continue
fi

# Check for Repositories Tested subsection
if [[ $in_summary -eq 1 && "$line" =~ ^###[[:space:]]+Repositories[[:space:]]+Tested ]]; then
in_repos=1
echo "### Repositories Tested"
echo
continue
fi

# Check for Foundry Versions subsection
if [[ $in_summary -eq 1 && "$line" =~ ^###[[:space:]]+Foundry[[:space:]]+Versions ]]; then
in_repos=0
in_versions=1
echo "### Foundry Versions"
echo
continue
fi

# End of summary section
if [[ $in_summary -eq 1 && "$line" =~ ^##[[:space:]] && ! "$line" =~ ^##[[:space:]]+Summary ]]; then
break
fi

# Output repo or version lines
if [[ ($in_repos -eq 1 || $in_versions -eq 1) && -n "$line" ]]; then
echo "$line"
fi
done < "$file"
}

# Function to extract benchmark table from a section
extract_benchmark_table() {
local file=$1
local section=$2
local in_section=0
local found_table=0

while IFS= read -r line; do
if [[ "$line" =~ ^##[[:space:]]+"$section" ]]; then
in_section=1
continue
elif [[ $in_section -eq 1 && "$line" =~ ^##[[:space:]] && ! "$line" =~ ^##[[:space:]]+"$section" ]]; then
break
elif [[ $in_section -eq 1 ]]; then
# Skip empty lines before table
if [[ -z "$line" && $found_table -eq 0 ]]; then
continue
fi
# Detect table start
if [[ "$line" =~ ^\|[[:space:]]*Repository ]]; then
found_table=1
fi
# Output table lines
if [[ $found_table -eq 1 && -n "$line" ]]; then
echo "$line"
fi
fi
done < "$file"
}

# Function to extract system information
extract_system_info() {
local file=$1
# Extract from System Information to end of file (EOF)
awk '/^## System Information/ { found=1; next } found { print }' "$file"
}

# Start building LATEST.md
cat > "$OUTPUT_DIR/LATEST.md" << EOF
# 📊 Foundry Benchmark Results

**Generated at**: $(date -u '+%Y-%m-%d %H:%M:%S UTC')

EOF

# Process each benchmark file
FIRST_FILE=1
SYSTEM_INFO=""

for bench_file in "forge_test_bench.md" "forge_isolate_test_bench.md" "forge_build_bench.md" "forge_coverage_bench.md"; do
if [ -f "$OUTPUT_DIR/$bench_file" ]; then
echo "Processing $bench_file..."

# Get the section name
case "$bench_file" in
"forge_test_bench.md")
SECTION_NAME="Forge Test"
;;
"forge_isolate_test_bench.md")
SECTION_NAME="Forge Test (Isolated)"
;;
"forge_build_bench.md")
SECTION_NAME="Forge Build"
;;
"forge_coverage_bench.md")
SECTION_NAME="Forge Coverage"
;;
esac

# Add section header
echo "## $SECTION_NAME" >> "$OUTPUT_DIR/LATEST.md"
echo >> "$OUTPUT_DIR/LATEST.md"

# Add summary info (repos and versions)
extract_summary_info "$OUTPUT_DIR/$bench_file" >> "$OUTPUT_DIR/LATEST.md"
echo >> "$OUTPUT_DIR/LATEST.md"

# Handle different benchmark types
if [[ "$bench_file" == "forge_test_bench.md" ]]; then
# Extract both Forge Test and Forge Fuzz Test tables
extract_benchmark_table "$OUTPUT_DIR/$bench_file" "Forge Test" >> "$OUTPUT_DIR/LATEST.md"

# Check if Forge Fuzz Test section exists
if grep -q "^## Forge Fuzz Test" "$OUTPUT_DIR/$bench_file"; then
echo >> "$OUTPUT_DIR/LATEST.md"
echo "## Forge Fuzz Test" >> "$OUTPUT_DIR/LATEST.md"
echo >> "$OUTPUT_DIR/LATEST.md"
extract_benchmark_table "$OUTPUT_DIR/$bench_file" "Forge Fuzz Test" >> "$OUTPUT_DIR/LATEST.md"
fi
elif [[ "$bench_file" == "forge_build_bench.md" ]]; then
# Extract No Cache table
echo "### No Cache" >> "$OUTPUT_DIR/LATEST.md"
echo >> "$OUTPUT_DIR/LATEST.md"
extract_benchmark_table "$OUTPUT_DIR/$bench_file" "Forge Build (No Cache)" >> "$OUTPUT_DIR/LATEST.md"
echo >> "$OUTPUT_DIR/LATEST.md"

# Extract With Cache table
echo "### With Cache" >> "$OUTPUT_DIR/LATEST.md"
echo >> "$OUTPUT_DIR/LATEST.md"
extract_benchmark_table "$OUTPUT_DIR/$bench_file" "Forge Build (With Cache)" >> "$OUTPUT_DIR/LATEST.md"
else
# Extract the benchmark table for other types
extract_benchmark_table "$OUTPUT_DIR/$bench_file" "$SECTION_NAME" >> "$OUTPUT_DIR/LATEST.md"
fi

echo >> "$OUTPUT_DIR/LATEST.md"

# Extract system info from first file only
if [[ $FIRST_FILE -eq 1 ]]; then
SYSTEM_INFO=$(extract_system_info "$OUTPUT_DIR/$bench_file")
FIRST_FILE=0
fi
else
echo "Warning: $bench_file not found, skipping..."
fi
done

# Add system information at the end
if [[ -n "$SYSTEM_INFO" ]]; then
echo "## System Information" >> "$OUTPUT_DIR/LATEST.md"
echo >> "$OUTPUT_DIR/LATEST.md"
echo "$SYSTEM_INFO" >> "$OUTPUT_DIR/LATEST.md"
fi

echo "Successfully combined benchmark results into $OUTPUT_DIR/LATEST.md"
Loading
Loading