Skip to content

Skip windows-2025 Swift 6.1/6.2 in CI matrix (MSVC 14.51 STL needs Clang 20)#418

Merged
leogdion merged 1 commit into
v1.0.0-beta.3from
fix/windows-2025-swift-matrix
Jun 30, 2026
Merged

Skip windows-2025 Swift 6.1/6.2 in CI matrix (MSVC 14.51 STL needs Clang 20)#418
leogdion merged 1 commit into
v1.0.0-beta.3from
fix/windows-2025-swift-matrix

Conversation

@leogdion

Copy link
Copy Markdown
Member

Problem

The build-windows job fails on windows-2025 with Swift 6.1 and 6.2. It's an environmental toolchain incompatibility, not a MistKit code bug:

  • The windows-2025 runner image now resolves the newest installed Visual Studio toolset (MSVC 14.51, VS18) via vswhere. Its STL header yvals_core.h hard-asserts STL1000: Unexpected compiler version, expected Clang 20 or newer.
  • Swift 6.1 and 6.2 bundle Clang 19, so the assert fires when swift-crypto's CCryptoBoringSSL includes <memory>. Swift 6.3 bundles Clang 20, so it passes.
  • windows-2022 defaults to an older 14.4x toolset compatible with Clang 19, so it builds all three Swift versions fine.

In a recent run, the only red Windows jobs were windows-2025 × 6.1-RELEASE and windows-2025 × 6.2-RELEASE; everything else was green.

Change

Add a matrix exclude for windows-2025 × {6.1, 6.2}. Resulting Windows coverage:

Runner Swift
windows-2022 6.1, 6.2, 6.3
windows-2025 6.3

Swift 6.1/6.2 stay covered on windows-2022; Swift 6.3 still exercises the new 14.51 toolset on windows-2025. No package or shared-action changes.

Why not pin an older toolset

Pinning windows-2025 to the VS2022/14.44 toolset would keep 6.1/6.2 coverage there, but it's a fragile env workaround (depends on the Swift/clang driver honoring an injected INCLUDE/LIB over vswhere's latest, and on the older toolset staying installed). The exclude is a zero-risk config change with full passing evidence on windows-2022.

Follow-up: GitHub will eventually retire windows-2022. When that happens (or 6.1/6.2 are dropped), revisit — toolset-pinning or -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH becomes the fallback.

🤖 Generated with Claude Code

…ang 20)

The windows-2025 runner now resolves the newest installed MSVC toolset
(14.51, VS18) whose STL hard-asserts STL1000: expected Clang 20 or newer.
Swift 6.1/6.2 bundle Clang 19, so swift-crypto's CCryptoBoringSSL fails to
compile. Swift 6.3 bundles Clang 20 and passes; windows-2022 defaults to an
older 14.4x toolset compatible with Clang 19.

Exclude windows-2025 x {6.1, 6.2}: those keep building on windows-2022, and
only Swift 6.3 builds on windows-2025.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9a84ea4e-2810-42c0-9c77-7f3eb28c019a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/windows-2025-swift-matrix

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.

@claude

claude Bot commented Jun 30, 2026

Copy link
Copy Markdown

Review: Skip windows-2025 Swift 6.1/6.2 in CI matrix

A small, well-scoped CI workflow change. Summary by category:

Code quality / correctness

  • The exclude entries correctly repeat both 'version' and 'build' for the nested 'swift' object, giving an exact match against the full object as defined in the swift list above. This matters: GitHub Actions exclude matching on object-typed matrix values requires the excluded value to equal the whole object, not a subset of its keys. (The existing wasm/wasm-embedded exclude earlier in this same file only specifies 'swift: { version: "6.1" }', which works only because that matrix swift objects happen to have a single key -- an exact match by coincidence. The new windows exclude does it correctly/defensively for a two-key object.)
  • Indentation and structure are consistent with the existing exclude block style in this file.
  • The explanatory comment (MSVC 14.51 STL requiring Clang 20+, Swift 6.1/6.2 shipping Clang 19, windows-2022 unaffected) is clear and gives future maintainers enough context to revisit the decision without re-deriving it.

Potential issues

  • Minor maintainability nit: the excluded version/build pairs duplicate values already declared in the swift list a few lines above, so a future bump of the Swift version matrix requires updating both places in sync. Not really avoidable given GitHub Actions exclude semantics, and the PR description already flags follow-up options (toolset pinning, -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH) once windows-2022 is retired or 6.1/6.2 support is dropped, so this is already tracked rather than a blocking concern.
  • No functional risk: this only narrows the windows-2025 matrix; windows-2022 keeps full 6.1/6.2/6.3 coverage, and windows-2025 still exercises the newer toolset via 6.3.

Performance

  • Net positive: drops 2 of 6 Windows matrix jobs (the ones failing for environmental reasons), reducing CI minutes without losing meaningful coverage (6.1/6.2 still build on windows-2022).

Security

  • None -- pure CI matrix configuration, no secrets, permissions, or new actions/inputs introduced.

Test coverage

  • N/A for a workflow-only change; the real validation is the resulting CI run on this PR -- worth confirming the windows-2025 x 6.1/6.2 jobs are absent and the remaining 4 Windows jobs (windows-2022 x 6.1/6.2/6.3, windows-2025 x 6.3) are green before merging.

Overall: looks correct and low-risk. No changes requested.

@codecov

codecov Bot commented Jun 30, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 72.03%. Comparing base (9894d48) to head (1ee77cf).

Additional details and impacted files
@@                Coverage Diff                @@
##           v1.0.0-beta.3     #418      +/-   ##
=================================================
+ Coverage          71.82%   72.03%   +0.21%     
=================================================
  Files                168      156      -12     
  Lines               3844     3698     -146     
=================================================
- Hits                2761     2664      -97     
+ Misses              1083     1034      -49     
Flag Coverage Δ
mistdemo-spm-macos ?
mistdemo-swift-6.2-jammy ?
mistdemo-swift-6.2-noble ?
mistdemo-swift-6.3-jammy ?
mistdemo-swift-6.3-noble ?
spm 71.76% <ø> (+0.24%) ⬆️
swift-6.1-jammy 71.73% <ø> (ø)
swift-6.1-noble 71.59% <ø> (-0.28%) ⬇️
swift-6.2-jammy 71.59% <ø> (-0.06%) ⬇️
swift-6.2-noble 71.59% <ø> (ø)
swift-6.3-jammy 71.54% <ø> (ø)
swift-6.3-noble 71.89% <ø> (+0.29%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@leogdion leogdion merged commit 89b2a61 into v1.0.0-beta.3 Jun 30, 2026
44 checks passed
@leogdion leogdion deleted the fix/windows-2025-swift-matrix branch July 1, 2026 00:28
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.

1 participant