Skip to content

Track the next-release migration from Windows GNU/MinGW to native MSVC #611

Description

@LunaStev

Target release: the next release. Goal: supported Windows compiler hosts and generated programs use MSVC on amd64 and ARM64, and active Windows build/release/runtime paths no longer require GNU/MinGW.

Audit baseline: master 3950416e, 2026-09-12. This is a migration plan based on current code and existing reports, not a claim that every validation gap is a reproduced compiler bug.

Explicit MSVC targets, COFF linking, and transactional DLL/import-library/PDB publication already exist. Native ARM64 host CRT/message ownership was repaired in #493. Remaining work spans native amd64 host provisioning, reliable SDK/runtime resolution, executable ABI proof, and release independence. Building the compiler with MSVC alone is not completion: the current Windows output default is GNU.

This tracker coordinates focused work; it does not duplicate the original host-build report #292, output-target umbrella #498, or Windows provider umbrella #385. The earlier instruction in #498 to retain GNU applies while prerequisites are being built. The new release goal authorizes a final removal only after the gates below pass.

Difficulty is an estimate of ABI/runtime risk and required expertise, not a severity label. The five very-high tasks involve native executable evidence across calling conventions, startup, stack behavior, or module ownership; some correct code may only need stronger tests. First-contribution tasks have bounded scope and no ABI redesign.

First contributions

Medium difficulty

High difficulty

Very high difficulty

Reuse existing work

Provider gaps are existing Windows correctness work, not evidence that changing the Rust toolchain fixes them. Native MSVC execution must cover the APIs advertised for this release. Broader new platform APIs can remain separate follow-up work when they are not required for that supported surface.

Order and release gates

  1. Land independent first-contribution checks and native host/SDK/dependency foundations. Resolve Restore Windows ARM64 case builds when static CRT linking cannot locate psapi #608/Fix native Windows ARM64 compiler stack overflow on the executor restart fixture #609. Keep GNU usable during this stage.
  2. Complete native x64/ARM64 ABI, ordinary startup, DLL and large-frame/unwind validation. Extend the full existing case suites to explicit MSVC execution without deleting or duplicating their workloads.
  3. Build native MSVC release archives, validate extracted artifacts in controlled Windows environments, and switch the native default only once required execution gates pass.
  4. Remove Windows GNU registrations, fallback/discovery code, CI provisioning and package inputs in the final retirement issue. Unsupported old triples get actionable migration errors. Gate release on MSVC-only Windows results.

Exit criteria:

  • Both compiler host architectures and generated program architectures are verified as native, and the enabled LLVM backends are explicit.
  • Native cases and ABI/runtime checks pass; skipped execution or object-only success does not substitute for required native results.
  • The distributed compiler/tools and ordinary generated programs work with the stated Windows prerequisites, with no MinGW payloads or hidden GNU runtime/tool dependencies.
  • No silent fallback to GNU occurs, and the active Windows target list/build/release paths are MSVC-only after cutover.
  • Preserve non-Windows GNU support and Linux LoongArch64. Preserve meaningful tests by adapting them before removing obsolete harness paths.
  • Continue using native Windows OS APIs in std/sys; this migration does not authorize replacing those providers with libc wrappers. Compiler/LLVM CRT dependencies are handled separately from the Wave standard-library API layer.

Each child issue owns an independently reviewable outcome with evidence, completion criteria and dependencies. This task creates issues only; implementation and release cutover happen in subsequent work.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    buildIssues related to building the project or compiling errors.ciGitHub CI or CIhelp wantedThe issue requires extra attention or help from others.migrationIssues related to migrating from older systems or versions.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions