* Add Foundry multi-version benchmarking suite
- Automated benchmarking across multiple Foundry versions using hyperfine
- Supports stable, nightly, and specific version tags (e.g., v1.0.0)
- Benchmarks 5 major Foundry projects: account, v4-core, solady, morpho-blue, spark-psm
- Tests forge test, forge build (no cache), and forge build (with cache)
- Generates comparison tables in markdown format
- Uses foundryup for version management
- Exports JSON data for detailed analysis
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix benchmark script JSON data extraction and table formatting
- Fix relative path issue causing JSON files to fail creation
- Convert benchmark directories to absolute paths using SCRIPT_DIR
- Improve markdown table formatting with proper column names and alignment
- Use unified table generation with string concatenation for better formatting
- Increase benchmark runs from 3 to 5 for more reliable results
- Use --prepare instead of --cleanup for better cache management
- Remove stderr suppression to catch hyperfine errors
- Update table headers to show units (seconds) for clarity
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* parallel benchmarking
* refac: mv to benches/ dir
* feat: criterion benches
* fix: install foundry versions at once
* nit
* - setup benchmark repos in parallel
- run forge build in parallet for forge-test bench
- switch foundry versions
- README specifying prereqs
* feat: shell script to run benches
* feat: ci workflow, fix script
* update readme
* feat: enhance benchmarking suite with version flexibility
- Add `get_benchmark_versions()` helper to read versions from env var
- Update all benchmarks to use version helper for consistency
- Add `--versions` and `--force-install` flags to shell script
- Enable all three benchmarks (forge_test, build_no_cache, build_with_cache)
- Improve error handling for corrupted forge installations
- Remove complex workarounds in favor of clear error messages
The benchmarks now support custom versions via:
./run_benchmarks.sh --versions stable,nightly,v1.2.0
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
* latest bench
* rm notes
* remove shell based bench suite
* feat: benches using criterion (#10805)
* feat: criterion benches
* - setup benchmark repos in parallel
- run forge build in parallet for forge-test bench
- switch foundry versions
- README specifying prereqs
* feat: shell script to run benches
* feat: ci workflow, fix script
* update readme
* feat: enhance benchmarking suite with version flexibility
- Add `get_benchmark_versions()` helper to read versions from env var
- Update all benchmarks to use version helper for consistency
- Add `--versions` and `--force-install` flags to shell script
- Enable all three benchmarks (forge_test, build_no_cache, build_with_cache)
- Improve error handling for corrupted forge installations
- Remove complex workarounds in favor of clear error messages
The benchmarks now support custom versions via:
./run_benchmarks.sh --versions stable,nightly,v1.2.0
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
* latest bench
* rm notes
* remove shell based bench suite
---------
Co-authored-by: Claude <noreply@anthropic.com>
* unified benchmarker -
* main.rs
* forge version is controlled by the bin
* parses criterion json to collect results - writes to LATEST.md
* parallel bench
* refac
* refac benchmark results table generation
* cleanup main.rs
* rm dep
* cleanup main.rs
* deser estimate
* nit
* cleanup CriterionResult type
* feat: specify repos via flag
* nits
* update bench ci and README
* bench fuzz tests
* fmt
* license
* coverage bench
* nits
* clippy
* clippy
* separate benches into different jobs in CI
* remove criterion
* feat: hyperfine setup in foundry-bench
* forge version details: hash and date
* run benches again - run cov with --ir-min
* del
* bench in separate ci jobs
* move combine bench results logic to scripts
* setup foundryup in ci
* setup foundryup fix
* clippy
* ci: run on foundry-runner
* ci: don't use wget
* ci: add build essential
* ci: nodejs and npm
* install hyperfine for each job
* fix
* install deps script
* add benchmark-setup, using setup-node action, remove redundant files
* fix
* fix
* checkout repo
* nits
* nit
* fix
* show forge test result in top comment
* force foundry install
* fix bench comment aggregation
* nit
* fix
* feat: create PR for manual runs, else commit in the PR itself.
* fix
* fetch and pull
* chore(`benches`): update benchmark results
🤖 Generated with [Foundry Benchmarks](https://github.com/foundry-rs/foundry/actions)
Co-Authored-By: github-actions <github-actions@github.com>
* fix
* chore(`benches`): update benchmark results
🤖 Generated with [Foundry Benchmarks](https://github.com/foundry-rs/foundry/actions)
Co-Authored-By: github-actions <github-actions@github.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: github-actions <github-actions@github.com>
* ci: switch macos test runner to use aarch64
* tmp: run it
* Revert "ci: switch macos test runner to use aarch64"
This reverts commit 844d375d93.
* Revert "tmp: run it"
This reverts commit 0eb13b77de.
* Reapply "ci: switch macos test runner to use aarch64"
This reverts commit f6da785344.
* Always maintain a nightly release tagged `nightly`
This works as a release channel: it is always possible to
download the latest nightly from the release tagged `nightly`.
Additionally, 3 nightlies tagged with `nightly-${SHA}` are kept,
allowing users to rollback to a specific nightly.
* Move `nightly` tag last
Ensures that newer `foundryup` installations don't fail
to update while the new `nightly-${SHA}` release is still missing
some release assets.
* Keep 3 days of nightlies
* Fix release asset names
* Version channel handling in `foundryup`
* Driveby: Use `foundry.paradigm.xyz`
* Fix rebase slipup
* Move GitHub scripts into their own files