fix: bump the nightly past a codegen ICE that broke the Linux release build - #984
Merged
Conversation
nightly-2026-07-24 through -07-26 carry rust-lang/rust#159815, an ICE in rustc_codegen_ssa when a function returns an all-uninit MaybeUninit. tokio 1.53.1 hits it in the multi-thread runtime, so `nix build .#packages.x86_64-linux.bedwars` could not produce a release binary at all, and nothing could be deployed. Differentials, on the minimal repro from the upstream issue: opt-level 0, 1 OK opt-level 2, 3 ICE aarch64-apple-darwin ICE, identically so it is not x86 codegen and not something a build flag avoids without deoptimising tokio. Bumping tokio is not available either: 1.53.1 is the newest published version. Walking the nightlies gives a three-day window: nightly-2026-07-23 rustc 6f72b5dd5 OK nightly-2026-07-24 rustc 89c61a754 ICE nightly-2026-07-25 rustc da86f4d07 ICE nightly-2026-07-26 rustc 008fa22ce ICE <- the old pin nightly-2026-07-27 rustc dc3f85158 OK <- the fix landed rust-lang/rust#159825 merged 2026-07-26T06:29:12Z, so -07-27 is the first nightly carrying it. That makes this a one-day move forward rather than a three-day rollback, and it leaves no knob behind: when the fix reaches beta the pin is just a normal pin again. Upstream issue: rust-lang/rust#159815 Upstream fix: rust-lang/rust#159825
Benchmark Results for generalComparing to 8d9680c |
The coverage job failed on a test that passes under nextest: a_passive_owned_by_the_kit_module_sees_the_damage_pipeline assertion left == right failed: the passive should only arm against non-melee The counter the Porcupine passive incremented was a process-global static. Nine tests in that file build a Porcupine world, cargo test runs them as threads in one process, and any two dealing non-melee damage at the same moment shared one number. nextest gives every test its own process, so nix run .#test never saw it and never will. It is a flecs singleton now, so it belongs to the world that observed the damage. Registered explicitly because this workspace builds flecs with manual registration, where first use of an unregistered component aborts. Five consecutive cargo test --all-features --workspace runs pass.
Benchmark Results for generalComparing to d8cd11d |
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #984 +/- ##
==========================================
- Coverage 41.01% 40.91% -0.11%
==========================================
Files 226 239 +13
Lines 24181 25697 +1516
Branches 957 1004 +47
==========================================
+ Hits 9917 10513 +596
- Misses 14049 14966 +917
- Partials 215 218 +3 see 4 files with indirect coverage changes 🚀 New features to boost your workflow:
|
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.
nix build .#packages.x86_64-linux.bedwarsdied in the compiler:What the differentials said
The upstream issue carries an 8-line reproduction, which turns a 40-minute
nix buildinto a sub-secondrustccall, so all of these ran against that rather than the workspace.Tests (ubuntu-latest)being green proves nothing: it is a debug build and cargoUnit compiles at-C opt-level=3.codegen_return_terminator.The fix
Bump the pin forward one day, to the nightly that carries rust-lang/rust#159825, which fixes #159815. Root cause upstream: #157797 added
OperandValue::Uninitand missed thePassMode::Direct | PassMode::Pairbranch.Forward rather than back, deliberately. Rolling back to 07-23 also works, but it is a knob someone has to remember to remove and it strands the workspace three days behind. Bumping forward becomes an ordinary pin the moment the fix reaches beta.
Rejected:
opt-level=1for tokio only, which permanently deoptimises the async runtime of a game server to work around a compiler bug that is already fixed.Verified
The whole workspace moves with a toolchain pin, so every gate was re-run.
Zero occurrences of
internal compiler errorin the full build log.(sent by an AI agent via Claude Code, model claude-opus-4-6)