diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f86899a..16059e7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -239,7 +239,9 @@ jobs: # shared one, cargo's mtime check can reuse one tree's build for the other # and compare a binary against itself. Both trees build the PR's copy of # the example, so both sides run one workload; a PR whose example calls - # API the base lacks cannot be compared and reads INCOMPLETE. + # API the base lacks cannot be compared and reads INCOMPLETE. Both build + # with `--features macros`, so the cases behind it, the `#[cachekit]` path, + # are measured too. perf-ir: name: Instruction counts vs base if: github.event_name == 'pull_request' @@ -320,8 +322,8 @@ jobs: env: BASE_LABEL: ${{ steps.base.outputs.label }} run: | - (cd "$RUNNER_TEMP/ir/head" && CARGO_TARGET_DIR=../head-target cargo build --locked --release --example bench_hot_path) - (cd "$RUNNER_TEMP/ir/base" && CARGO_TARGET_DIR=../base-target cargo build --locked --release --example bench_hot_path) || { + (cd "$RUNNER_TEMP/ir/head" && CARGO_TARGET_DIR=../head-target cargo build --locked --release --features macros --example bench_hot_path) + (cd "$RUNNER_TEMP/ir/base" && CARGO_TARGET_DIR=../base-target cargo build --locked --release --features macros --example bench_hot_path) || { { echo '### Instruction counts: INCOMPLETE' echo diff --git a/README.md b/README.md index 31942cb..d0fccf7 100644 --- a/README.md +++ b/README.md @@ -924,9 +924,10 @@ reports either one as exit 2. CI runs this comparison on every pull request (the **Instruction counts vs base** check): it builds the pull request and the commit it merges into, each -in its own target directory, measures both on the same runner, and posts the -verdict as one comment it edits in place (a pull request from a fork gets no -comment; its verdict is in the run summary). A case it did not measure reads +in its own target directory and with `--features macros` (the `#[cachekit]` +cases need it), measures both on the same runner, and posts the verdict as +one comment it edits in place (a pull request from a fork gets no comment; its +verdict is in the run summary). A case it did not measure reads INCOMPLETE, never PASS. A release pull request is measured against the last release tag instead. The check is not required: a deliberate cost increase is accepted at review.