|
| 1 | ++++ |
| 2 | +layout = "post" |
| 3 | +date = 2025-03-12 |
| 4 | +title = "Demoting i686-pc-windows-gnu" |
| 5 | +author = "Noratrieb" |
| 6 | +team = "Compiler Team <https://www.rust-lang.org/governance/teams/compiler>" |
| 7 | ++++ |
| 8 | + |
| 9 | +In Rust 1.87.0, the Tier 1 target `i686-pc-windows-gnu` will be demoted to Tier 2. |
| 10 | +As a Tier 2 Target, builds will continue to be distributed for both the standard library and the compiler for now. |
| 11 | + |
| 12 | +## Background |
| 13 | + |
| 14 | +Rust has supported Windows for a long time, with two different flavors of Windows targets: MSVC-based and GNU-based. MSVC-based targets (for example the most popular Windows target `x86_64-pc-windows-msvc`) use Microsoft’s native linker and libraries, while GNU-based targets (like `i686-pc-windows-gnu`) are built entirely from free software components like `gcc`, `ld`, and MinGW. |
| 15 | + |
| 16 | +The major reason to use a GNU-based toolchain instead of the native MSVC-based one is cross-compilation and licensing. `link.exe` only runs on Windows (barring Wine hacks) and requires a license for commercial usage. |
| 17 | + |
| 18 | +`x86_64-pc-windows-gnu` and `i686-pc-windows-gnu` are currently both Tier 1 with host tools. |
| 19 | +The [Target Tier Policy] contains more details on what this entails, but the most important part is that tests for these targets are being run on every merged PR. |
| 20 | +This is the highest level of support we have, and is only used for the most high value targets (the most popular Linux, Windows, and Apple targets). |
| 21 | + |
| 22 | +The `*-windows-gnu` targets currently do not have any dedicated target maintainers. |
| 23 | +We do not have a lot of expertise for this toolchain, and issues often aren't fixed and cause problems in CI that we have a hard time to debug. |
| 24 | + |
| 25 | +The 32-bit version of this target is especially problematic and has significantly less usage than `x86_64-pc-windows-gnu`, which is why it's being demoted to Tier 2. |
| 26 | + |
| 27 | +## What is changed? |
| 28 | + |
| 29 | +After Rust 1.87.0, `i686-pc-windows-gnu` will now be Tier 2 with host tools. |
| 30 | +For users, nothing will change immediately. Builds of both the standard library and the compiler will still be distributed by the Rust Project for use via `rustup` or alterantive installation methods. |
| 31 | + |
| 32 | +This does mean that in the future, this target will likely accumulate bugs faster because of the reduced testing. |
| 33 | + |
| 34 | +## Future |
| 35 | + |
| 36 | +If no maintainers are found and the `*-windows-gnu` targets continue causing problems, they may be demoted further. |
| 37 | +No concrete plans about this have been made yet. |
| 38 | + |
| 39 | +If you rely on the `*-windows-gnu` targets and have expertise in this area, we would be very happy to have you as a target maintainer. You can check the [Target Tier Policy] for what exactly that would entail. |
| 40 | + |
| 41 | +For more details on the motivation of the demotion, see [RFC 3771](https://rust-lang.github.io/rfcs/3771-demote-i686-pc-windows-gnu.html) which proposed this change. |
| 42 | + |
| 43 | +[Target Tier Policy]: https://doc.rust-lang.org/nightly/rustc/target-tier-policy.html |
0 commit comments