Skip to content

Demote i686-pc-windows-gnu #822

Closed
Closed
@workingjubilee

Description

@workingjubilee

Proposal

The 32-bit Windows GNU target, known by the tuple i686-pc-windows-gnu, remains a problematic target in CI.

We currently claim to offer it tier 1 support, nominally, but it is extremely difficult to maintain it. Some of these problems seem like Windows problems in general, but it is often also bringing in additional problems due to the complexity of also introducing the GNU toolchain. For 32-bit x86 Windows, the target has the additional complexity of having a very constrained amount of resources available.

In general, the tier 1 targets are expected to be something that most contributors can deal with, but in practice, even people who are comfortable with the Windows OS and familiar with its APIs, thus capable of building the necessary target-specific code for Windows, struggle with the windows-gnu target. Even the people who like the target have... interesting... ways of describing the... creative... choices that were required to implement it. And 32-bit Windows is even rougher, of course! Most people are now using 64-bit Windows, which has many important differences.

Given that we can't really realistically expect tier 1 technical support for the i686-pc-windows-gnu target, I propose that we implement the most simple way of dealing with its continuous CI failures in our pipeline: we cease to expect it to execute all our tests in CI, downgrading it to at most tier 2.

Obviously, many of the statements I have made apply to a lesser degree to the following tuples:

  • i686-pc-windows-msvc
  • x86_64-pc-windows-gnu
  • x86_64-pc-windows-msvc

However, all of these see more use and more maintenance, comparatively, and none have the "triple-threat" of being a Windows+GNU kitbash on a 32-bit target. They also have a significantly larger userbase:

rustc host tuple 2024 Oct downloads 2024 Nov downloads 2024 Dec downloads (c. 25th)
i686-pc-windows-gnu 53_199 56_050 48_579
i686-pc-windows-msvc 162_228 242_732 240_984
x86_64-pc-windows-gnu 282_402 320_400 294_367
x86_64-pc-windows-msvc 4_738_135 4_600_556 4_555_129

Mentors or Reviewers

Process

The main points of the Major Change Process are as follows:

  • File an issue describing the proposal.
  • A compiler team member or contributor who is knowledgeable in the area can second by writing @rustbot second.
    • Finding a "second" suffices for internal changes. If however, you are proposing a new public-facing feature, such as a -C flag, then full team check-off is required.
    • Compiler team members can initiate a check-off via @rfcbot fcp merge on either the MCP or the PR.
  • Once an MCP is seconded, the Final Comment Period begins. If no objections are raised after 10 days, the MCP is considered approved.

You can read more about Major Change Proposals on forge.

Comments

This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    T-compilerAdd this label so rfcbot knows to poll the compiler teammajor-changeA proposal to make a major change to rustc

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions