ci: pin the bare-metal nightly lane past a clippy ICE - #152
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #152 +/- ##
=======================================
Coverage 81.30% 81.30%
=======================================
Files 47 47
Lines 15514 15514
=======================================
Hits 12613 12613
Misses 2901 2901 |
JustinKovacich
marked this pull request as ready for review
August 24, 2026 14:43
zheylmun
approved these changes
Aug 24, 2026
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 <noreply@anthropic.com>
zheylmun
force-pushed
the
ci/pin-bare-metal-nightly
branch
from
August 24, 2026 14:51
623599d to
4c05286
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bare-metal runtime (nightly)has been red onmainsince 2026-08-22 with no code change behind it.What breaks
Every nightly from
nightly-2026-08-22onward ICEs the job:It is the toolchain, not us
cargo +nightly check -p simple-someip --no-default-features --features bare-metal-runtime,clientis clean on the same nightly — onlycargo clippyfails.main; re-running the job onmain's last green commit (6369f1c, green 08-21) fails today.nightly-2026-08-21(rustc8925ea358) is good,nightly-2026-08-22(rustcc656540d6) is the first bad one, and-23/-24stay bad.The trigger is
clippy::pedanticenablinglarge_futures, which switches to Codegen mode to read a coroutine layout while the opaque aliases are still marked rigid from type checking. Reported upstream several times over (rust-lang/rust#161542, rust-lang/rust-clippy#17622, #17617) and fixed by rust-lang/rust-clippy#17601, merged 2026-08-23 — but that fix has to ride a clippy subtree sync into rustc before it reaches a nightly, so the lane stays red until then.Why pin rather than
-A clippy::large_futuresPinning keeps the lint running. It is worth more on this lane than anywhere else in the tree: a fat future on the bare-metal runtime is a static pool sized to hold it. Allowing the lint would silence it everywhere the runtime is linted, for however long the sync takes.
Verification
All four steps of the job pass locally on
nightly-2026-08-21:clippy … bare-metal-runtime,clientclippy … bare-metal-runtime,serverbuild -Z build-std=core --target thumbv7em-none-eabihf(client, server)cargo docunderRUSTDOCFLAGS=-D warningsThe other nightly job (
build-std core gate) runs no clippy, is unaffected, and is left floating deliberately.Unpinning
The comment on the step says to restore
@nightlyand delete it once a nightly carries the clippy fix. Worth checking back in a week or so.