Skip to content

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

dpaoliello
Copy link
Contributor

@dpaoliello dpaoliello commented May 22, 2025

@dpaoliello dpaoliello force-pushed the aarch64tier1 branch 2 times, most recently from 9594548 to 359127e Compare May 22, 2025 21:56
Comment on lines 116 to 119
[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]
Copy link
Contributor

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
Copy link
Contributor

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).

Copy link
Member

@jieyouxu jieyouxu May 23, 2025

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

  1. 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.

Copy link
Contributor Author

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.

Copy link
Contributor Author

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

Copy link
Member

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]
Copy link
Contributor

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.

Copy link
Member

@RalfJung RalfJung May 23, 2025

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.

Copy link
Contributor Author

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.

@ehuss ehuss added T-compiler Relevant to the compiler team, which will review and decide on the RFC. T-infra Relevant to the infrastructure team, which will review and decide on the RFC. T-release Relevant to the release team, which will review and decide on the RFC. labels May 23, 2025
@programmerjake
Copy link
Member

related: promoting *-gnullvm to tier 2 with host tools rust-lang/compiler-team#877

@dpaoliello dpaoliello force-pushed the aarch64tier1 branch 2 times, most recently from 1811971 to 5376ccd Compare May 23, 2025 19:25
Comment on lines +35 to +36
As mentioned above, Windows users comprise a substantial proportion of Rust developers, and Arm64
hardware is increasingly being used by them and their customers.
Copy link
Member

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.

Copy link
Member

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.

Copy link
Contributor Author

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:

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.

Copy link
Member

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.

@Noratrieb Noratrieb removed the T-infra Relevant to the infrastructure team, which will review and decide on the RFC. label Jun 13, 2025
@Noratrieb
Copy link
Member

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.
For Arm64 MacOS it took us way too long to make it Tier 1 (because of GitHub lacking runners), so I'm glad that here we can be more proactive.
My only concern here is the mentioned drawback, that the runners, being new, could prove themselves being unstable.
Therefore, my approval here is predicated on having reliable CI for this target, and I think that if this proves to not be the case, it should be temporarily demoted until problems are resolved.

Labels are adjusted to T-compiler and T-release as defined by the target tier policy.
@rfcbot merge
One other thing that's missing is infra approval for the new CI job, but we can do this during the FCP.

@rfcbot
Copy link
Collaborator

rfcbot commented Jun 13, 2025

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 rfcbot added proposed-final-comment-period Currently awaiting signoff of all team members in order to enter the final comment period. disposition-merge This RFC is in PFCP or FCP with a disposition to merge it. labels Jun 13, 2025
@Noratrieb
Copy link
Member

@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?

@dpaoliello
Copy link
Contributor Author

@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

@Kobzol
Copy link
Contributor

Kobzol commented Jun 16, 2025

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.

@Kobzol
Copy link
Contributor

Kobzol commented Jun 16, 2025

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.

@Noratrieb
Copy link
Member

@rfcbot concern resolve infra-approval
@rfcbot concern ci-reliability-testing

OK, in that case you should go ahead and continue with your PR to add the CI. If it works reliably for a few months, we can merge the RFC, officially announcing the promotion and documenting it in the rustc book.

@Noratrieb

This comment was marked as resolved.

rust-bors bot added a commit to rust-lang/rust that referenced this pull request Jun 16, 2025
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*`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
disposition-merge This RFC is in PFCP or FCP with a disposition to merge it. proposed-final-comment-period Currently awaiting signoff of all team members in order to enter the final comment period. T-compiler Relevant to the compiler team, which will review and decide on the RFC. T-release Relevant to the release team, which will review and decide on the RFC.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants