Skip to content

ci: type-check Windows runtime on every PR - #11016

Closed
proggeramlug wants to merge 3 commits into
mainfrom
fix/10986-windows-typecheck
Closed

proggeramlug wants to merge 3 commits into
mainfrom
fix/10986-windows-typecheck

Conversation

@proggeramlug

@proggeramlug proggeramlug commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a required lint step that runs cargo xwin check for perry-runtime and perry-stdlib on x86_64-pc-windows-msvc, giving every PR a signal for cfg(windows) type errors.
  • Install cargo-xwin 0.23.0 from its checksum-pinned upstream release asset and cache its immutable MSVC sysroot. Cross-target Cargo objects remain in the runner's temporary directory instead of the shared Linux cache.
  • Raise lint's timeout to 30 minutes for the initial cold sysroot run. The native Windows build remains the link and execution gate; this new step is a type-check.

Fixes #10986.

Verification

  • GitHub-hosted Ubuntu lint run 35759147555 passed the new type-check on a cold cache. The step ran from 17:15:03 to 17:30:29 UTC (15m26s), reached both perry-runtime and perry-stdlib, and was followed by a successful formatting step.
  • On the SSH Linux host, a fresh-target clean cross-check reached and checked both Perry crates successfully in 37.97s with a warm sysroot.
  • A temporary #[cfg(windows)] const _: u8 = "type error"; in perry-runtime made the same command exit 101 with E0308, proving it can fail on Perry source; the probe was then reverted.
  • actionlint -ignore 'SC2086|SC2012|SC2129' .github/workflows/test.yml (the ignored findings are four pre-existing shellcheck findings elsewhere in the workflow)
  • python3 scripts/ci_plan.py --self-test
  • python3 scripts/gc_gate_wiring_check.py
  • scripts/check_file_size.sh
  • git diff --check

Summary by CodeRabbit

  • Tests
    • Added automated Windows cross-target type-checking for runtime and standard library components.
    • Added verification of downloaded build tooling and caching for the Windows MSVC system root.
    • Increased the lint job timeout to accommodate the expanded validation steps.

@coderabbitai

coderabbitai Bot commented Sep 22, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 1056ee9d-3b2d-468a-b387-f6c5a5d12658

📥 Commits

Reviewing files that changed from the base of the PR and between c7cbc3c and 67c3637.

📒 Files selected for processing (1)
  • .github/workflows/test.yml

Included review availability: Your plan provides up to 8 included reviews per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The lint workflow now installs and verifies cargo-xwin, restores and saves its MSVC sysroot cache, and runs a Windows-target type-check for perry-runtime and perry-stdlib. The lint timeout and explanatory comments were updated.

Changes

Windows CI type-check

Layer / File(s) Summary
Lint Windows-target validation
.github/workflows/test.yml
The lint job timeout increased to 30 minutes. The job downloads and verifies cargo-xwin v0.23.0, restores and saves the MSVC sysroot cache, and runs cargo xwin check for the Windows MSVC target in an isolated target directory.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature · Severity of issue fixed: Medium

Suggested reviewers: steinybot

Merge Risk: ⚪ Minimal · up to 67c36

The required Windows type-check is wired into the PR lint gate and is mergeable with normal checks.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The workflow implements the coding requirements in #10986. The required lint job runs on every tier and executes cargo xwin check -p perry-runtime -p perry-stdlib --target x86_64-pc-windows-msvc. …
Out of Scope Changes check ✅ Passed The reviewed changes are limited to .github/workflows/test.yml. The added tool pin, checksum verification, MSVC sysroot cache, isolated target directory, timeout, and Windows cross-target check dire…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Title check ✅ Passed The title clearly and concisely describes the main change: adding Windows runtime type-checking to CI for every pull request.
Description check ✅ Passed The description provides the summary, concrete implementation details, related issue, and extensive verification results. It omits the template's explicit Changes, Test plan, and Checklist headings, b…
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@proggeramlug

Copy link
Copy Markdown
Contributor Author

Landed on main in merge train 257 (#11039, v0.5.1640), main 990b3eeada.

Carried at head 67c3637380. CI on the train head passed every job except the known public-baseline lint step: all 6 gap shards, cargo-test, e2e-scoped, gc-stress, check, warnings and security-audit green.

This train was split by blast radius after an earlier 35-PR assembly hit five gap regressions: it carries only PRs touching no lowering path. Trains rebase-merge, so commits get new SHAs and GitHub cannot mark this merged. Closed as landed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ci: type-check cfg(windows) code in lint with cargo check --target x86_64-pc-windows-msvc

1 participant