fix(release): unblock the Windows, musl and old-glibc release legs - #9260
Conversation
d6fdc90 to
04a297a
Compare
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: Your plan provides up to 8 included reviews per hour; 3 remain after this review. 📝 WalkthroughWalkthroughThe changes correct platform-specific runtime compilation for musl and Windows, make the old-glibc build script locate ChangesRelease build leg fixes
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to The PR contains localized platform and release-build fixes, and no actionable merge-blocking risk remains beyond normal checks and review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Description checkExplanation The description is detailed and directly explains the defects, fixes, validation, limitations, and out-of-scope failures. It does not use every template heading, and it omits the checklist and an explicit related-issue entry, but the required change context and test information are mostly complete. Full details: Docstring CoverageExplanation Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 4 files. (1 skipped: 1 unsupported.) ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
04a297a to
0d05d36
Compare
|
Rebased onto #9268 landed the What remains in this PR is the part #9268 does not cover, all from the same #9245
Changelog fragment trimmed to match; it no longer claims the allowlist change. |
Four defects, all found by the first full-tier + stage-build run on a release candidate since v0.5.1220. None is reachable from the PR tier. - gc/mod.rs imported two `malloc_trim` counters under a bare `#[cfg(test)]` while their declarations are gated to gnu/macOS, so `perry-runtime`'s test build failed to compile on Windows MSVC (E0432). - cycle_malloc_trim.rs (new in #9245) declares a raw `thread_local!` that the policy inventory still recorded against its old home, cycle.rs. - build_linux_glibc_2_31.sh never put `$CARGO_HOME/bin` on PATH, so `rustup` was not found inside the container (exit 127). That leg was added after the last successful release and had never run to completion. - `libc::backtrace`/`backtrace_symbols_fd` are glibc extensions; gating their call sites on `target_os = "linux"` selected them for musl, where they do not exist (E0425). Verified: 59/60 local lint gates, including `cargo check --workspace --all-targets -D warnings` and workspace clippy. The musl compile itself is not verifiable locally (libmimalloc-sys needs a musl C cross-toolchain), but `rustc --print cfg` confirms musl reports `target_env="musl"`, so it now takes the empty arm.
0d05d36 to
09dec35
Compare
|
Merged. Three separate release legs, each a genuine platform-specific break rather than a flaky runner, and the changelog fragment records which is which — worth having, because "unblock the release legs" is exactly the kind of commit that becomes unattributable six months later. Validation: Landed alongside #9262, which fixes the two remaining legs ( |
Four defects blocking the v0.5.1519 release, found by the first full-tier +
stage-mode release run on a candidate since v0.5.1220. None of them is reachable from the PR tier, which is why they accumulated.The fixes
1.
gc/mod.rs— Windows MSVC test build (E0432). The twomalloc_trimexecuted counters are declared#[cfg(all(test, any(target_env = "gnu", target_os = "macos")))]but imported under a bare#[cfg(test)]. On MSVC the declarations vanish and the import dangles, soperry-runtime's test build does not compile. Import now carries the declaration's gate. Brokewindows-buildandwindows-arm64-build.2.
thread_local_cold_allowlist.json— stale record. #9245 splitcycle.rsintocycle_malloc_trim.rsand moved athread_local!with it; the policy inventory still recorded it againstcycle.rs, so the checker saw an unrecorded block in one file and a phantom in the other. Regenerated with--update: the entry moves, the count is unchanged. Brokewindows-build's GC structural audits.3.
build_linux_glibc_2_31.sh—rustup: command not found(exit 127). The container ships no Rust toolchain by design:release-packages.ymlmounts the runner's~/.cargo/~/.rustupand pointsCARGO_HOME/RUSTUP_HOMEat them. That gives cargo its data, not its binaries — nothing put$CARGO_HOME/binonPATH. Added, with an explicit check so a future regression says why. This leg was added 2026-08-18, after the last successful release, so it had never once run to completion.4.
arena/quarantine.rs+exception.rs— musl (E0425).libc::backtrace/backtrace_symbols_fdare glibc extensions. Gating their call sites ontarget_os = "linux"selects them for musl, where they do not exist. Nowall(target_os = "linux", target_env = "gnu"); musl takes the existing empty arm.Validation
59/60 local lint gates pass, including
cargo check --workspace --all-targets -D warningsand workspace clippy. (The 60th wascargo fmt, now applied.)One limitation stated plainly: the musl compile itself is not verified locally —
cargo check --target x86_64-unknown-linux-muslcannot run on macOS becauselibmimalloc-sysneeds a musl C cross-toolchain. I verified the premise instead:rustc --print cfg --target x86_64-unknown-linux-muslreportstarget_env="musl"(vs"gnu"for glibc), so the tightened gate provably selects the empty arm there. The full compile rests on CI.Not fixed here
Two further release-leg failures the same run exposed, both needing a decision rather than a code change:
ANDROID_NDK_HOMEunset onwindows-11-arm— the Android cross-build step is gated only onrunner.os == 'Windows', so it runs on both Windows runners, but only the x86_64 one has the NDK.x86_64-apple-darwinonmacos-15, an arm64 runner whose LLVM is arm64-only, so every LLVM symbol is undefined at link (ld: warning: ignoring file …,symbol(s) not found for architecture x86_64).Summary by CodeRabbit