diff --git a/.github/actions/install-rust/action.yml b/.github/actions/install-rust/action.yml index 04bee8af..f4d9168e 100644 --- a/.github/actions/install-rust/action.yml +++ b/.github/actions/install-rust/action.yml @@ -10,9 +10,14 @@ runs: steps: - name: Install rust-toolchain.toml shell: bash - run: rustup show + run: rustup toolchain install - name: Install additional rustup components if: inputs.components != '' shell: bash run: echo "${{ inputs.components }}" | tr ',' '\n' | xargs rustup component add - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2 + with: + # Avoid caching ~/.cargo/bin on macOS — restoring it on a runner with a + # different rustup version overwrites the cargo proxy with a stale + # rustup-init, breaking `cargo fmt`/`clippy`/etc. + cache-bin: ${{ runner.os != 'macOS' }} diff --git a/skills/codspeed-setup-harness/SKILL.md b/skills/codspeed-setup-harness/SKILL.md index 1fe35771..d8f7fe1b 100644 --- a/skills/codspeed-setup-harness/SKILL.md +++ b/skills/codspeed-setup-harness/SKILL.md @@ -287,7 +287,7 @@ Good benchmarks are representative, isolated, and stable. Here are guidelines: - **Avoid benchmarking setup**: Use the framework's setup/teardown mechanisms to exclude initialization from measurements. -- **Prevent dead code elimination**: Use `black_box()` (Rust), `benchmark.pedantic()` (Python), or equivalent to ensure the compiler/runtime doesn't optimize away the work you're measuring. +- **Prevent dead code elimination**: Use `black_box()` (Rust), `benchmark::DoNotOptimize` (C++), or `Blackhole.consume` (JMH) so the compiler doesn't optimize away unused results. - **Cover the critical path**: Benchmark the functions that matter most to your users — the ones called frequently or on the hot path.