build: raise MSRV 1.97.0 -> 1.97.1 (1.97.0 miscompiles gp-core's shape)#71
Merged
Conversation
rust#159035: under optimizations, `Option::map` over nested enum/struct types segfaults instead of yielding None -- which is what gp-core is made of. An LLVM optimizer pass emits an unconditional `trunc nuw` that is poison for a -1 niche tag; the trigger was a rustc change. 1.97.1 ships the LLVM fix plus a revert of that trigger (stable backport rust#159288; beta backport rust#159072 -> 1.98). 1.96.1 unaffected; 1.97.0 is the only released stable that ever carried it. rust-version is the only lever that refuses the broken compiler: CI pins no stable toolchain (setup-rust-toolchain@v1 defaults to stable, which already resolves 1.97.1); the sole 1.97.0 in ci.yml was a comment. The advisory miri lane pins nightly but was never exposed -- Miri interprets MIR and never runs the LLVM optimizer. The bug is fixed everywhere and 1.97.0 is dead, so the docs just state the MSRV; this message is the durable home for the why, reachable from `git blame Cargo.toml`. Historical 1.97.0 references in ai-docs/plans/done/**, learnings.md, INDEX.md and _inbox.jsonl are deliberately untouched -- they record what was true when those tasks ran. 0 new tests; 103 workspace tests green on 1.97.1.
The cargo test comment read '97 gp-core + 2 gp-gen' (= 99). #11 added gp-render's tessellation smoke test and golden guard, and the workspace runs 2 doc-tests. Pre-existing staleness, unrelated to the MSRV bump.
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.
Summary
Raises the workspace MSRV from 1.97.0 to 1.97.1. 1.97.0 miscompiles: under optimizations,
Option::mapover nested enum/struct types segfaults instead of yieldingNone(rust#159035) — which is whatgp-coreis made of. An LLVM optimizer pass emits an unconditionaltrunc nuwthat is poison for a-1niche tag; the trigger was a rustc change. 1.97.1 ships the LLVM fix plus a revert of that trigger.Fixed everywhere — stable backport rust#159288 (→ 1.97.1), beta backport rust#159072 (→ 1.98). 1.96.1 unaffected; 1.97.0 is the only released stable that ever carried it.
rust-versionis the only lever that refuses the broken compiler. CI pins no stable toolchain (setup-rust-toolchain@v1defaults to stable, which already resolves 1.97.1), and there is norust-toolchain.toml— the sole1.97.0inci.ymlwas a comment. The advisorymirilane pinsnightlybut was never exposed: Miri interprets MIR and never runs the LLVM optimizer.The docs just state the MSRV. The rationale lives in the commit message, reachable from
git blame Cargo.toml— the bug is fixed everywhere and 1.97.0 is dead, so carrying its history inREADME.mdwould be archaeology that rots.Commits
1db57e0Cargo.toml, plus aci.ymlcomment and three live doc claimsad130deREADME'scargo testcomment said 99, actual is 103Deliberately untouched
~24 other
1.97.0references are historical records and stay:ai-docs/plans/done/**(completed-task specs/designs),ai-docs/learnings.md(append-only per AGENTS.md Boundary rule 1),ai-docs/plans/INDEX.md,ai-docs/deferred/_inbox.jsonl. They record what was true when those tasks ran; rewriting them would falsify history.Tracking
No tracking issue — direct product-owner instruction.
Test plan
cargo build --workspace✅cargo test --workspace— 103 passed, 0 failed ✅ (on 1.97.1)cargo clippy --workspace --all-targets -- -D warnings✅cargo fmt --check✅RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --workspace✅actionlint .github/workflows/ci.yml✅ (run beforegit add— AGENTS.md AXIOM;ci.ymlchanged)cargo metadata— all 5 crates resolverust-version = 1.97.1viarust-version.workspace = true0 new tests — a toolchain floor bump has no new behaviour to cover.
🤖 Generated with Claude Code