-
Notifications
You must be signed in to change notification settings - Fork 1.6k
RFC: Promote aarch64-pc-windows-msvc to Tier 1 #3817
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
9594548
to
359127e
Compare
[ci-draft-pr][https://github.com/rust-lang/rust/pull/140136] | ||
[llvm-builders][https://lab.llvm.org/buildbot/#/builders/161] | ||
[platform-support][https://github.com/rust-lang/rust/blob/e3892a40a9d06034fdf2432a9d3d29fa97726299/src/doc/rustc/src/platform-support.md?plain=1#:~:text=aarch64%2Dpc%2Dwindows%2Dmsvc] | ||
[promote-tier-2][https://github.com/rust-lang/rust/pull/75914] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The syntax for link definitions needs to have a colon and look like:
[link-name]: https://example.com/
|
||
> The target maintainer team must include at least 3 developers. | ||
|
||
There is an existing [Windows team for Rust][windows-team] and, within Microsoft, Arm64 Windows is |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are there at least 3 people in that group that are willing to be active maintainers for this particular target? It seems like we should identify who those people will be.
The windows marker team is mainly just a ping group and not necessarily maintainers (anyone can be added to it).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Problem (blocking): Yeah, Tier 1 target policy requires
The target maintainer team must include at least 3 developers.
The "windows" ping group is advisory at best, it is not even specific to the other Tier 1 x86_64-pc-windows-msvc
or x86_64-pc-windows-gnu
targets1.
On the compiler team, we lack expertise bandwidth on the Tier 1 Windows targets already. Furthermore, to the best of my knowledge, very few (if any) compiler team members have access to a aarch64-pc-windows-msvc
host, be it natively or remotely. This makes even "routine" tasks like triaging or bisection or minimizations very difficult, so for a Tier 1 target, we would have to rely on its target maintainers perhaps more than is the case for other Tier 1 targets.
Footnotes
-
In fact, those Tier 1 targets don't technically adhere to our current Target Policy, because they were grandfathered in historically (it obviously made sense at the time, and still does now), but the compiler team would like to have actual dedicated target maintainers for the other Tier 1 Windows targets too going forward. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fair enough: let me talk to a few folks internally, I'd like to get an official *-pc-windows-msvc
maintainer list setup for the various Windows targets.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@wesleywiser opened a PR to add an official set of MSVC maintainers: rust-lang/rust#142475
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! After that PR is merged, you should mention that here.
|
||
> All requirements for tier 2 apply. | ||
|
||
[`aarch64-pc-windows-msvc` is already a Tier 2 target.][platform-support] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AFAIK aarch64-pc-windows-msvc was grandfathered into the tier policy without having its requirements verified. I don't think there is anything particularly noteworthy, but I think it would probably be good to not gloss over them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The aarch64 windows target is listed on rust-lang/rust#113739 because it does not currently have any target maintainers listed. So yes, there is something quite noteworthy here. We should really go over that entire checklist.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, expanded with the relevant points from Tier 2.
related: promoting |
1811971
to
5376ccd
Compare
As mentioned above, Windows users comprise a substantial proportion of Rust developers, and Arm64 | ||
hardware is increasingly being used by them and their customers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be good to quantify this more with numbers. How many people are using ARM CPUs on Windows today? How much market share is expected?
I've tried to do some research on it and was unable to find any concrete numbers, with the closest thing being the Steam Hardware Survey listing it as 0.08% (which is obviously not really representative).
I understand that Microsoft may not want to reveal everything so directly, but having any information available would really help.
It's clear that Microsoft invests heavily in this direction and expects a larger share in the future, but I'm not sure whether this is the right time to promote the target in Rust too or whether it makes more sense to wait a bit longer until it's more established.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Snapdragon X-powered devices represent less than 1.5% of the Windows market
imo 1.5% of a huge number is still big enough to be worth supporting. elsewhere in that article they say they sold 720000 in Q3 2024. This is specifically only Snapdragon X, which is not the only Arm Windows implementation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't have any numbers that I can share.
From external analysts, over the past couple of years Arm64 PCs have accounted for 10-14% of sales:
- Predicting 13% for 2025: https://www.prnewswire.com/news-releases/2025-will-see-ai-pcs-become-the-new-normal-but-arm-based-pcs-will-not-grow-out-of-its-minority-segment-302340341.html
- 14% in 2023: https://www.counterpointresearch.com/insights/arm-based-pcs-to-nearly-double-market-share-by-2027/
- 10.6% in Q3 2023: https://www.tomshardware.com/pc-components/cpus/arm-pc-market-share-shrinks-mercury-research
In Oct 2023, it was estimated that less that 1% of the PC population was Arm64: https://www.canalys.com/insights/arming-your-pc-for-the-upcoming-ai-era. Keep in mind that's of a (now) ~1.4 billion device population, which puts it at about the same absolute number of devices as macOS (~100 million).
The GitHub issue to request Arm64 Windows runners (actions/runner-images#768) shows that there is widespread interest across the industry beyond Microsoft itself.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I also took a look at our public download dashboard: https://p.datadoghq.com/sb/3a172e20-e9e1-11ed-80e3-da7ad0900002-60425c7cb1b7beb2e8959a305a301c0c?fromUser=false&refresh_mode=sliding&from_ts=1747255594877&to_ts=1749847594877&live=true
It looks like ARM Windows is the most popular non-tier-1 host platform (but not far ahead of PPC64 Linux), while for cross-compilation it's solid among Tier 2 targets, behind several embedded targets but still fairly popular. I'd guess that the GitHub Actions runners have contributed a lot to the host downloads and will probably increase them further.
I've read through everything and it seems reasonable to me. While I would say that the current usage of Arm64 Windows falls a bit below our standards for Tier 1, I think the trend is just as important as the current numbers, and there it's very clearly upwards. Labels are adjusted to T-compiler and T-release as defined by the target tier policy. |
Team member @Noratrieb has proposed to merge this. The next step is review by the rest of the tagged team members:
Concerns:
Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! See this document for info about what commands tagged team members can give me. |
@rfcbot concern infra-approval @rust-lang/infra are you okay with adding a new CI job for Arm64 Windows Tests as added in rust-lang/rust#140136? |
FYI, I've updated and published rust-lang/rust#140136 |
We'll discuss the job at today's infra team meeting. My 2 cents (and this does not need to hold off or block the RFC) is that we should run the tests first for a few weeks or months to judge the stability, and only then officially promote the target to Tier 1, rather than promoting it outright and then potentially demoting it back. |
So, as per our #t-infra > meeting 2025-06-16, we're fine with promoting the target, but we would first like to see how stable is the ARM Windows runner, especially since it is currently in (public) preview. So I would appreciate if we could start running the tests with that runner on our CI for some time, and only after we see that it works well, we can go and officially promote the target. |
This comment was marked as resolved.
This comment was marked as resolved.
Add an aarch64-msvc build running on ARM64 Windows Resurrecting #126341 Per <rust-lang/rfcs#3817> we intend to promote `aarch64-pc-windows-msvc` to Tier 1. As part of that work, we are adding a pre-merge CI job to validate that changes do not break this target. Additionally, for consistency, the `dist-aarch64-msvc` job will also be run on Arm64 Windows runners. r? `@Kobzol` try-job: `*aarch64-msvc*`
Rendered