From 4c05286ea6f45b3b8ac054d83981b4980bf34535 Mon Sep 17 00:00:00 2001 From: Justin Kovacich Date: Mon, 24 Aug 2026 10:37:24 -0400 Subject: [PATCH] ci: pin the bare-metal nightly lane past a clippy ICE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every nightly from 2026-08-22 onward ICEs on this job with `unexpected rigid alias in layout_of after normalization`, on the opaque returned by `bare_metal_tasks::run_someip`. `main` has been red since 08-22 with no code change. The trigger is `clippy::pedantic` enabling `large_futures`, which switches to Codegen mode to read a coroutine layout while the opaque aliases are still marked rigid from type checking. Confirmed as a toolchain bug, not ours: plain `cargo check` on the same nightly is clean, only `cargo clippy` fails, and it reproduces on unmodified `main`. Bisected to the nightly-2026-08-21 → nightly-2026-08-22 window. rust-lang/rust-clippy#17601 fixed it on 2026-08-23, but the fix has to ride a clippy subtree sync into rustc before any nightly carries it, so the lane stays red until then. Pinning to the last known-good nightly rather than allowing the lint keeps `large_futures` running — it is worth more here than anywhere else in the tree, since a fat future on the bare-metal runtime is a static pool sized to hold it. All four steps of the job pass on the pinned toolchain. Co-Authored-By: Claude Opus 5 --- .github/workflows/ci.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d43b141..babac4e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,8 +67,20 @@ jobs: # feature combos it ships, plus a real no_std target build via build-std. steps: - uses: actions/checkout@v6 - - uses: dtolnay/rust-toolchain@nightly + # Pinned rather than floating on `@nightly`. `clippy::pedantic` enables + # `large_futures`, which ICEs under the next trait solver on any nightly + # from 2026-08-22 onward — `unexpected rigid alias in layout_of after + # normalization`, on the opaque returned by `bare_metal_tasks::run_someip`. + # It is the lint, not the code: plain `cargo check` on the same nightly is + # clean, and it reproduces on unchanged `main`. + # + # Fixed upstream by rust-lang/rust-clippy#17601 (merged 2026-08-23), which + # has to ride a clippy subtree sync into rustc before it reaches a nightly. + # UNPIN once a nightly carries that fix — restore `@nightly` and delete + # this comment; the pinned date is the last known-good toolchain. + - uses: dtolnay/rust-toolchain@master with: + toolchain: nightly-2026-08-21 components: clippy, rust-src targets: thumbv7em-none-eabihf - uses: Swatinem/rust-cache@v2