Skip to content

Commit d5cd8d7

Browse files
committed
Merge branch 'master' into v1.3.0-benches
2 parents 0758a0d + 9c3feff commit d5cd8d7

File tree

77 files changed

+1244
-687
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+1244
-687
lines changed

.codespellrc

Lines changed: 0 additions & 3 deletions
This file was deleted.

.gitattributes

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ testdata/cheats/Vm.sol linguist-generated
44
# See <https://git-scm.com/docs/gitattributes#_defining_a_custom_hunk_header>
55
*.rs diff=rust
66
crates/lint/testdata/* text eol=lf
7+
testdata/fixtures/**/* eol=lf
78

89
dprint.json linguist-language=JSON-with-Comments
9-
.devcontainer/devcontainer.json linguist-language=JSON-with-Comments
10+
.devcontainer/devcontainer.json linguist-language=JSON-with-Comments

.github/actions/benchmark-setup/action.yml

Lines changed: 0 additions & 34 deletions
This file was deleted.

.github/scripts/combine-benchmarks.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ EOF
126126
FIRST_FILE=1
127127
SYSTEM_INFO=""
128128

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

@@ -135,6 +135,9 @@ for bench_file in "forge_test_bench.md" "forge_build_bench.md" "forge_coverage_b
135135
"forge_test_bench.md")
136136
SECTION_NAME="Forge Test"
137137
;;
138+
"forge_isolate_test_bench.md")
139+
SECTION_NAME="Forge Test (Isolated)"
140+
;;
138141
"forge_build_bench.md")
139142
SECTION_NAME="Forge Build"
140143
;;

.github/workflows/benchmarks.yml

Lines changed: 57 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ env:
2828
DEFAULT_REPOS: "ithacaxyz/account:v0.3.2,Vectorized/solady:v0.1.22"
2929

3030
jobs:
31-
setup:
32-
name: Setup and Build
31+
run-benchmarks:
32+
name: Run All Benchmarks
3333
runs-on: foundry-runner
3434
steps:
3535
- name: Checkout repository
@@ -59,22 +59,16 @@ jobs:
5959
- name: Build benchmark binary
6060
run: cargo build --release --bin foundry-bench
6161

62-
- name: Upload benchmark binary
63-
uses: actions/upload-artifact@v4
62+
- name: Setup Node.js
63+
uses: actions/setup-node@v4
6464
with:
65-
name: foundry-bench
66-
path: target/release/foundry-bench
67-
68-
forge-test-bench:
69-
name: Forge Test Benchmarks
70-
needs: setup
71-
runs-on: foundry-runner
72-
steps:
73-
- name: Checkout repository
74-
uses: actions/checkout@v4
65+
node-version: "24"
7566

76-
- name: Benchmark setup
77-
uses: ./.github/actions/benchmark-setup
67+
- name: Install hyperfine
68+
run: |
69+
curl -L https://github.com/sharkdp/hyperfine/releases/download/v1.19.0/hyperfine-v1.19.0-x86_64-unknown-linux-gnu.tar.gz | tar xz
70+
sudo mv hyperfine-v1.19.0-x86_64-unknown-linux-gnu/hyperfine /usr/local/bin/
71+
rm -rf hyperfine-v1.19.0-x86_64-unknown-linux-gnu
7872
7973
- name: Run forge test benchmarks
8074
env:
@@ -83,28 +77,25 @@ jobs:
8377
VERSIONS="${{ github.event.inputs.versions || 'stable,nightly' }}"
8478
REPOS="${{ github.event.inputs.repos || env.DEFAULT_REPOS }}"
8579
86-
./foundry-bench --output-dir ./benches --force-install \
80+
./target/release/foundry-bench --output-dir ./benches --force-install \
8781
--versions $VERSIONS \
8882
--repos $REPOS \
8983
--benchmarks forge_test,forge_fuzz_test \
9084
--output-file forge_test_bench.md
9185
92-
- name: Upload test benchmark results
93-
uses: actions/upload-artifact@v4
94-
with:
95-
name: forge-test-results
96-
path: benches/forge_test_bench.md
97-
98-
forge-build-bench:
99-
name: Forge Build Benchmarks
100-
needs: setup
101-
runs-on: foundry-runner
102-
steps:
103-
- name: Checkout repository
104-
uses: actions/checkout@v4
86+
- name: Run forge isolate test benchmarks
87+
env:
88+
FOUNDRY_DIR: ${{ github.workspace }}/.foundry
89+
run: |
90+
VERSIONS="${{ github.event.inputs.versions || 'stable,nightly' }}"
91+
# Isolate tests default to Vectorized/solady but can be overridden
92+
REPOS="${{ github.event.inputs.repos || env.VECTORIZED_SOLADY }}"
10593
106-
- name: Benchmark setup
107-
uses: ./.github/actions/benchmark-setup
94+
./target/release/foundry-bench --output-dir ./benches --force-install \
95+
--versions $VERSIONS \
96+
--repos $REPOS \
97+
--benchmarks forge_isolate_test \
98+
--output-file forge_isolate_test_bench.md
10899
109100
- name: Run forge build benchmarks
110101
env:
@@ -113,85 +104,76 @@ jobs:
113104
VERSIONS="${{ github.event.inputs.versions || 'stable,nightly' }}"
114105
REPOS="${{ github.event.inputs.repos || env.DEFAULT_REPOS }}"
115106
116-
./foundry-bench --output-dir ./benches --force-install \
107+
./target/release/foundry-bench --output-dir ./benches --force-install \
117108
--versions $VERSIONS \
118109
--repos $REPOS \
119110
--benchmarks forge_build_no_cache,forge_build_with_cache \
120111
--output-file forge_build_bench.md
121112
122-
- name: Upload build benchmark results
123-
uses: actions/upload-artifact@v4
124-
with:
125-
name: forge-build-results
126-
path: benches/forge_build_bench.md
127-
128-
forge-coverage-bench:
129-
name: Forge Coverage Benchmarks
130-
needs: setup
131-
runs-on: foundry-runner
132-
steps:
133-
- name: Checkout repository
134-
uses: actions/checkout@v4
135-
136-
- name: Benchmark setup
137-
uses: ./.github/actions/benchmark-setup
138-
139113
- name: Run forge coverage benchmarks
140114
env:
141115
FOUNDRY_DIR: ${{ github.workspace }}/.foundry
142116
run: |
143117
VERSIONS="${{ github.event.inputs.versions || 'stable,nightly' }}"
144118
# Coverage only runs on ithacaxyz/account:v0.3.2
145119
146-
./foundry-bench --output-dir ./benches --force-install \
120+
./target/release/foundry-bench --output-dir ./benches --force-install \
147121
--versions $VERSIONS \
148122
--repos ${{ env.ITHACAXYZ_ACCOUNT }} \
149123
--benchmarks forge_coverage \
150124
--output-file forge_coverage_bench.md
151125
152-
- name: Upload coverage benchmark results
126+
- name: Combine benchmark results
127+
run: ./.github/scripts/combine-benchmarks.sh benches
128+
129+
- name: Commit and read benchmark results
130+
id: benchmark_results
131+
env:
132+
GITHUB_HEAD_REF: ${{ github.head_ref }}
133+
run: ./.github/scripts/commit-and-read-benchmarks.sh benches "${{ github.event_name }}" "${{ github.repository }}"
134+
135+
- name: Upload benchmark results as artifacts
153136
uses: actions/upload-artifact@v4
154137
with:
155-
name: forge-coverage-results
156-
path: benches/forge_coverage_bench.md
157-
158-
combine-results:
159-
name: Combine and Publish Results
160-
needs: [forge-test-bench, forge-build-bench, forge-coverage-bench]
138+
name: benchmark-results
139+
path: |
140+
benches/forge_test_bench.md
141+
benches/forge_isolate_test_bench.md
142+
benches/forge_build_bench.md
143+
benches/forge_coverage_bench.md
144+
benches/LATEST.md
145+
146+
outputs:
147+
branch_name: ${{ steps.benchmark_results.outputs.branch_name }}
148+
pr_comment: ${{ steps.benchmark_results.outputs.pr_comment }}
149+
150+
publish-results:
151+
name: Publish Results
152+
needs: run-benchmarks
161153
runs-on: foundry-runner
162154
steps:
163155
- name: Checkout repository
164156
uses: actions/checkout@v4
165157

166-
- name: Download all benchmark results
158+
- name: Download benchmark results
167159
uses: actions/download-artifact@v4
168160
with:
169-
pattern: forge-*-results
161+
name: benchmark-results
170162
path: benches/
171-
merge-multiple: true
172-
173-
- name: Combine benchmark results
174-
run: ./.github/scripts/combine-benchmarks.sh benches
175-
176-
- name: Commit and read benchmark results
177-
id: benchmark_results
178-
env:
179-
GITHUB_HEAD_REF: ${{ github.head_ref }}
180-
run: ./.github/scripts/commit-and-read-benchmarks.sh benches "${{ github.event_name }}" "${{ github.repository }}"
181163

182164
- name: Push branch for manual runs
183165
if: github.event_name == 'workflow_dispatch'
184166
run: |
185-
git push origin "${{ steps.benchmark_results.outputs.branch_name }}"
186-
echo "Pushed branch: ${{ steps.benchmark_results.outputs.branch_name }}"
167+
git push origin "${{ needs.run-benchmarks.outputs.branch_name }}"
168+
echo "Pushed branch: ${{ needs.run-benchmarks.outputs.branch_name }}"
187169
188170
- name: Create PR for manual runs
189171
if: github.event_name == 'workflow_dispatch'
190172
uses: actions/github-script@v7
191173
with:
192174
script: |
193-
const branchName = '${{ steps.benchmark_results.outputs.branch_name }}';
194-
const prComment = `${{ steps.benchmark_results.outputs.pr_comment }}`;
175+
const branchName = '${{ needs.run-benchmarks.outputs.branch_name }}';
176+
const prComment = `${{ needs.run-benchmarks.outputs.pr_comment }}`;
195177
196178
// Create the pull request
197179
const { data: pr } = await github.rest.pulls.create({
@@ -219,7 +201,7 @@ jobs:
219201
with:
220202
script: |
221203
const prNumber = ${{ github.event.inputs.pr_number || github.event.pull_request.number }};
222-
const prComment = `${{ steps.benchmark_results.outputs.pr_comment }}`;
204+
const prComment = `${{ needs.run-benchmarks.outputs.pr_comment }}`;
223205
224206
const comment = `${prComment}
225207

.github/workflows/test.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,12 @@ jobs:
5353
cache-on-failure: true
5454
- run: cargo test --workspace --doc
5555

56-
codespell:
56+
typos:
5757
runs-on: ubuntu-latest
5858
timeout-minutes: 30
5959
steps:
6060
- uses: actions/checkout@v4
61-
- uses: codespell-project/actions-codespell@v2
62-
with:
63-
skip: "*.json"
61+
- uses: crate-ci/typos@v1
6462

6563
clippy:
6664
runs-on: ubuntu-latest
@@ -120,7 +118,7 @@ jobs:
120118
- nextest
121119
- docs
122120
- doctest
123-
- codespell
121+
- typos
124122
- clippy
125123
- rustfmt
126124
- forge-fmt

0 commit comments

Comments
 (0)