@@ -211,6 +211,35 @@ jobs:
211211 - name : cargo check (v4 / AVX-512 + hpc-extras)
212212 run : cargo check --target=x86_64-unknown-linux-gnu -p ndarray --features approx,serde,rayon,hpc-extras
213213
214+ nightly-simd-polyfill :
215+ # TD-SIMD-9 from .claude/knowledge/simd-dispatch-architecture.md.
216+ # Exercises the `feature = "nightly-simd"` dispatch arm in
217+ # `src/simd.rs` (added in Phase 2 / PR #173) so the portable
218+ # `core::simd::*` backend doesn't bit-rot between PRs.
219+ #
220+ # Why nightly: `src/simd_nightly/*` uses `#![feature(portable_simd)]`
221+ # which only compiles on nightly rustc. The stable `cargo check`
222+ # paths in tests/clippy never reach this arm.
223+ #
224+ # `cargo check` rather than full build/test — pure type/borrow/cfg
225+ # verification. Catches arm shadowing bugs and the kind of API-break
226+ # codex flagged on PR #173 (lowercase aliases dropped).
227+ #
228+ # Runs only on merge_group + push (not every PR) to keep nightly
229+ # toolchain pulls out of the per-PR critical path. Mirrors the
230+ # `miri` job's gating strategy.
231+ if : github.event_name == 'merge_group' || github.event_name == 'push'
232+ runs-on : ubuntu-latest
233+ name : nightly-simd-polyfill
234+ steps :
235+ - uses : actions/checkout@v4
236+ - uses : dtolnay/rust-toolchain@nightly
237+ - uses : Swatinem/rust-cache@v2
238+ - name : cargo check (nightly + nightly-simd feature)
239+ run : cargo check -p ndarray --features approx,serde,rayon,nightly-simd
240+ - name : cargo check (nightly + nightly-simd + hpc-extras)
241+ run : cargo check -p ndarray --features approx,serde,rayon,nightly-simd,hpc-extras
242+
214243 blas-msrv :
215244 runs-on : ubuntu-latest
216245 name : blas-msrv
@@ -310,6 +339,7 @@ jobs:
310339 - native-backend
311340 - hpc-stream-parallel
312341 - tier4-avx512-check
342+ - nightly-simd-polyfill
313343 - miri
314344 - cross_test
315345 - cargo-careful
0 commit comments