|
| 1 | +- Feature Name: promote-aarch64-pc-windows-msvc-to-tier-1 |
| 2 | +- Start Date: 2025-05-22 |
| 3 | +- RFC PR: [rust-lang/rfcs#3817](https://github.com/rust-lang/rfcs/pull/3817) |
| 4 | +- Rust Issue: [rust-lang/rust#0000](https://github.com/rust-lang/rust/issues/0000) |
| 5 | + |
| 6 | +# Summary |
| 7 | +[summary]: #summary |
| 8 | + |
| 9 | +Promote aarch64-pc-windows-msvc to Tier 1 with Host Tools. |
| 10 | + |
| 11 | +# Motivation |
| 12 | +[motivation]: #motivation |
| 13 | + |
| 14 | +About [30% of Rust users use Windows][survey-2024], while the majority of these developers and their |
| 15 | +customers are using x64 hardware, the usage of Arm64 Windows has been growing since it was first |
| 16 | +made available in Windows 10, and has been accelerating, especially with the availability of the |
| 17 | +SnapDragon X processors. |
| 18 | + |
| 19 | +# Guide-level explanation |
| 20 | +[guide-level-explanation]: #guide-level-explanation |
| 21 | + |
| 22 | +No changes required: Rust tooling for Arm64 Windows has been available for a while now so this |
| 23 | +doesn't affect the end user experience. |
| 24 | + |
| 25 | +# Reference-level explanation |
| 26 | +[reference-level-explanation]: #reference-level-explanation |
| 27 | + |
| 28 | +Tier 1 targets must adhere to the [Tier 1 Target Policy][tier-1-policy]. Going through these |
| 29 | +requirements point-by-point: |
| 30 | + |
| 31 | +> Tier 1 targets must have substantial, widespread interest within the developer community, and must |
| 32 | +> serve the ongoing needs of multiple production users of Rust across multiple organizations or |
| 33 | +> projects. These requirements are subjective, and determined by consensus of the approving teams. |
| 34 | +
|
| 35 | +As mentioned above, Windows users comprise a substatial propotion of Rust developers, and Arm64 |
| 36 | +hardware is increasingly being used by them and their customers. |
| 37 | + |
| 38 | +> The target maintainer team must include at least 3 developers. |
| 39 | +
|
| 40 | +There is an existing [Windows team for Rust][windows-team] and, within Microsoft, Arm64 Windows is |
| 41 | +considered to be a Tier 1 target for internal Rust usage. |
| 42 | + |
| 43 | +> The target must build and pass tests reliably in CI, for all components that Rust's CI considers |
| 44 | +> mandatory. |
| 45 | +> The target must not disable an excessive number of tests or pieces of tests in the testsuite in |
| 46 | +> order to do so. This is a subjective requirement. |
| 47 | +
|
| 48 | +[The `dist-aarch64-msvc` CI job has been running reliably for over 4 years now][promote-tier-2], |
| 49 | +and I have [new CI jobs working where Rust is built and tested on Arm64 Windows runners][ci-draft-pr]. |
| 50 | + |
| 51 | +> The target must provide as much of the Rust standard library as is feasible and appropriate to |
| 52 | +> provide. |
| 53 | +
|
| 54 | +The full Standard Library is available. |
| 55 | + |
| 56 | +> Building the target and running the testsuite for the target must not take substantially longer |
| 57 | +> than other targets, and should not substantially raise the maintenance burden of the CI |
| 58 | +> infrastructure. |
| 59 | +
|
| 60 | +[A `try` run of the new CI jobs completed in under 2 hours.][try-job] |
| 61 | + |
| 62 | +> If running the testsuite requires additional infrastructure (such as physical systems running the |
| 63 | +> target), the target maintainers must arrange to provide such resources to the Rust project, to the |
| 64 | +> satisfaction and approval of the Rust infrastructure team. |
| 65 | +> Such resources may be provided via cloud systems, via emulation, or via physical hardware. |
| 66 | +
|
| 67 | +The new CI jobs use the free [`windows-11-arm` runners provided by GitHub][runner-announcement]. |
| 68 | + |
| 69 | +> Tier 1 targets must not have a hard requirement for signed, verified, or otherwise "approved" |
| 70 | +> binaries. Developers must be able to build, run, and test binaries for the target on systems they |
| 71 | +> control, or provide such binaries for others to run. (Doing so may require enabling some |
| 72 | +> appropriate "developer mode" on such systems, but must not require the payment of any additional |
| 73 | +> fee or other consideration, or agreement to any onerous legal agreements.) |
| 74 | +
|
| 75 | +There are no differences between x64 and Arm64 Windows in this regard. |
| 76 | + |
| 77 | +> All requirements for tier 2 apply. |
| 78 | +
|
| 79 | +[`aarch64-pc-windows-msvc` is already a Tier 2 target.][platform-support] |
| 80 | + |
| 81 | +# Drawbacks |
| 82 | +[drawbacks]: #drawbacks |
| 83 | + |
| 84 | +The `windows-11-arm` runners provided by GitHub are relatively new, and so we do not know what the |
| 85 | +availability or reliability of these runners will be. |
| 86 | + |
| 87 | +# Rationale and alternatives |
| 88 | +[rationale-and-alternatives]: #rationale-and-alternatives |
| 89 | + |
| 90 | +`aarch64-pc-windows-msvc` could be left as a Tier 2 with Host Tools target, but given the importance |
| 91 | +of this target to Microsoft and the increasing usage of Arm64 by Windows users, it will become more |
| 92 | +and more likely that issues with this target will need to be treated as critical. Catching issues |
| 93 | +early in development will prevent the need to Beta and Stable backports. |
| 94 | + |
| 95 | +# Prior art |
| 96 | +[prior-art]: #prior-art |
| 97 | + |
| 98 | +- [RFC 2959][rfc-2959] promoted `aarch64-unknown-linux-gnu` to Tier 1. |
| 99 | +- [RFC 3671][rfc-3671] promoted `aarch64-apple-darwin` to Tier 1. |
| 100 | +- LLVM has dedicated [Arm64 Windows builders][llvm-builders]. |
| 101 | + |
| 102 | +# Unresolved questions |
| 103 | +[unresolved-questions]: #unresolved-questions |
| 104 | + |
| 105 | +None. |
| 106 | + |
| 107 | +# Future possibilities |
| 108 | +[future-possibilities]: #future-possibilities |
| 109 | + |
| 110 | +* Adding Arm64 Windows jobs to more Rust repos, such as `stdarch` and `cargo`. |
| 111 | +* Promoting `arm64ec-pc-windows-msvc` to Tier 1. |
| 112 | +* Add a `aarch64-pc-windows-gnu` target. |
| 113 | +* Promote `aarch64-pc-windows-gnullvm` to Tier 1. |
| 114 | + |
| 115 | +[ci-draft-pr][https://github.com/rust-lang/rust/pull/140136] |
| 116 | +[llvm-builders][https://lab.llvm.org/buildbot/#/builders/161] |
| 117 | +[platform-support][https://github.com/rust-lang/rust/blob/e3892a40a9d06034fdf2432a9d3d29fa97726299/src/doc/rustc/src/platform-support.md?plain=1#:~:text=aarch64%2Dpc%2Dwindows%2Dmsvc] |
| 118 | +[promote-tier-2][https://github.com/rust-lang/rust/pull/75914] |
| 119 | +[rfc-2959]: https://rust-lang.github.io/rfcs/2959-promote-aarch64-unknown-linux-gnu-to-tier1.html |
| 120 | +[rfc-3671]: https://rust-lang.github.io/rfcs/3671-promote-aarch64-apple-darwin-to-tier-1.html |
| 121 | +[runner-announcement]: https://github.com/orgs/community/discussions/155713 |
| 122 | +[survey-2024]: https://blog.rust-lang.org/2025/02/13/2024-State-Of-Rust-Survey-results |
| 123 | +[tier-1-policy]: https://doc.rust-lang.org/rustc/target-tier-policy.html#tier-1-target-policy |
| 124 | +[try-job][https://github.com/rust-lang-ci/rust/actions/runs/14871501014] |
| 125 | +[windows-team]: https://github.com/rust-lang/team/blob/055aa9ddb4e9a10c760042baa54da71b1585a821/teams/windows.toml |
0 commit comments