rfcs icon indicating copy to clipboard operation
rfcs copied to clipboard

RFC: Promote aarch64-pc-windows-msvc to Tier 1

Open dpaoliello opened this issue 6 months ago • 9 comments

Rendered

dpaoliello avatar May 22 '25 19:05 dpaoliello

related: promoting *-gnullvm to tier 2 with host tools https://github.com/rust-lang/compiler-team/issues/877

programmerjake avatar May 23 '25 03:05 programmerjake

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.

Noratrieb avatar Jun 13 '25 21:06 Noratrieb

Team member @Noratrieb has proposed to merge this. The next step is review by the rest of the tagged team members:

  • [ ] @BoxyUwU
  • [x] @Dylan-DPC
  • [x] @Mark-Simulacrum
  • [x] @Noratrieb
  • [x] @SparrowLii
  • [x] @cjgillot
  • [x] @compiler-errors
  • [x] @cuviper
  • [x] @davidtwco
  • [x] @estebank
  • [x] @jieyouxu
  • [x] @matthewjasper
  • [x] @nagisa
  • [x] @oli-obk
  • [x] @petrochenkov
  • [x] @pietroalbini
  • [x] @spastorino
  • [x] @wesleywiser

Concerns:

  • ~~aarch64-windows-runners-are-in-public-preview~~ resolved by https://github.com/rust-lang/rfcs/pull/3817#issuecomment-3166086945
  • ~~ci-reliability-testing~~ resolved by https://github.com/rust-lang/rfcs/pull/3817#issuecomment-3165597103
  • ~~infra-approval~~ resolved by https://github.com/rust-lang/rfcs/pull/3817#issuecomment-2976964263
  • ~~resolve ci-reliability-testing~~ resolved by https://github.com/rust-lang/rfcs/pull/3817#issuecomment-3165599695
  • ~~resolve infra-approval~~ resolved by https://github.com/rust-lang/rfcs/pull/3817#issuecomment-2976964263

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 avatar Jun 13 '25 21:06 rfcbot

@rfcbot concern infra-approval

@rust-lang/infra are you okay with adding a new CI job for Arm64 Windows Tests as added in https://github.com/rust-lang/rust/pull/140136?

Noratrieb avatar Jun 13 '25 21:06 Noratrieb

@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 https://github.com/rust-lang/rust/pull/140136

dpaoliello avatar Jun 13 '25 22:06 dpaoliello

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 avatar Jun 16 '25 05:06 Kobzol

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.

Kobzol avatar Jun 16 '25 14:06 Kobzol

@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 avatar Jun 16 '25 14:06 Noratrieb

@rfcbot resolve infra-approval @rfcbot resolve resolve infra-approval

oops

Noratrieb avatar Jun 16 '25 14:06 Noratrieb

Following up: https://github.com/rust-lang/rust/pull/140136 was merged over a week ago, and I haven't heard of any issues with the runners yet.

dpaoliello avatar Jul 18 '25 21:07 dpaoliello

Hm, seems like the winapi crate doesn't work on windows-arm, see here. This means rustup-toolchain-install-master doesn't build on that host, making (at least) Miri development and native CI impossible.

RalfJung avatar Jul 19 '25 08:07 RalfJung

Hm, seems like the winapi crate doesn't work on windows-arm, see here. This means rustup-toolchain-install-master doesn't build on that host, making (at least) Miri development and native CI impossible.

winapi 0.3.7 added support for Arm64 Windows: https://github.com/retep998/winapi-rs/commit/3792048cb07f9b762f8f0913293027759ea78db2

The current HEAD of rustup-toolchain-install-master (version 1.8.1) has updated to winapi 0.3.9, but it doesn't look like it's been published yet. I can't figure out which commit is associated with 1.8.0, but from the build log it looks like it's pulling in winapi 0.2.8.

dpaoliello avatar Jul 21 '25 16:07 dpaoliello

At this point it should probably just switch to windows-sys. The winapi crate hasn't been updated for 5 years now.

ChrisDenton avatar Jul 21 '25 17:07 ChrisDenton

At this point it should probably just switch to windows-sys. The winapi crate hasn't been updated for 5 years now.

"just switch" is easier said then done when you're talking about a no-longer-actively-maintained dependency pulling in winapi, and that dependency doesn't have a clear replacement either.

The current HEAD of rustup-toolchain-install-master (version 1.8.1) has updated to winapi 0.3.9, but it doesn't look like it's been published yet. I can't figure out which commit is associated with 1.8.0, but from the build log it looks like it's pulling in winapi 0.2.8.

I removed the dependency on ansi_term in https://github.com/kennytm/rustup-toolchain-install-master/pull/61, which removed the winapi 0.2 dependency. Seems like that should be enough then. :)

RalfJung avatar Jul 21 '25 17:07 RalfJung

pb is only 852 lines of Rust, I don't think it would be too hard to fork it and swap out winapi for windows-rs.

Diggsey avatar Jul 21 '25 22:07 Diggsey

Ping... Rust, miri and stdarch have been successfully building on the Arm64 Windows runners for a while now.

dpaoliello avatar Jul 29 '25 18:07 dpaoliello

@Noratrieb marked the reliability concern here. They mentioned a few months, so far it has been more like few weeks, but I haven't seen issues with that runner. GitHub support is still quite bad, they still haven't managed to add rustup/cargo to the image despite claiming that they already did so a ~week ago.

I asked t-infra at #t-infra > GitHub Arm64 runners private preview @ 💬 if there are any remaining concerns.

Kobzol avatar Jul 29 '25 20:07 Kobzol

We discussed this at today's t-infra meeting, and we'd ideally like to wait with moving this target to Tier 1 until the ARM Windows GitHub Actions runners move out of preview/beta. While we also have aarch64-unknown-linux-gnu as Tier 1, which is technically also still in public preview/beta, we have already experience with running self-hosted Linux ARM64 runners, so if GitHub decided to pull back, we have reasonable alternatives. This is not true for ARM64 Windows, as we have no idea how to self-host that (if it is even possible).

I'd personally say that if it takes a long time to move out of public preview, we could re-evaluate this at a later time. But the current public preview hasn't been out for so long yet.

Kobzol avatar Aug 04 '25 14:08 Kobzol

@rfcbot concern aarch64-windows-runners-are-in-public-preview

See https://github.com/rust-lang/rfcs/pull/3817#issuecomment-3150961659

jieyouxu avatar Aug 04 '25 14:08 jieyouxu

@rfcbot resolve aarch64-windows-runners-are-in-public-preview

Runners are now out of public preview: https://github.blog/changelog/2025-08-07-arm64-hosted-runners-for-public-repositories-are-now-generally-available/

pietroalbini avatar Aug 07 '25 20:08 pietroalbini

@rfcbot resolve ci-reliability-testing looks like the reliability of it has been good enough, so let's go ahead

Noratrieb avatar Aug 07 '25 20:08 Noratrieb

@rfcbot concern resolve ci-reliability-testing

Noratrieb avatar Aug 07 '25 20:08 Noratrieb

@rfcbot resolve resolve ci-reliability-testing rfcbot :sob:

Noratrieb avatar Aug 07 '25 20:08 Noratrieb

@pietroalbini note that the concern has not been resolved, I think @jieyouxu needs to do that?

Noratrieb avatar Aug 07 '25 20:08 Noratrieb

@rfcbot resolve aarch64-windows-runners-are-in-public-preview

jieyouxu avatar Aug 07 '25 23:08 jieyouxu

:bell: This is now entering its final comment period, as per the review above. :bell:

rfcbot avatar Aug 07 '25 23:08 rfcbot

The final comment period, with a disposition to merge, as per the review above, is now complete.

As the automated representative of the governance process, I would like to thank the author for their work and everyone else who contributed.

This will be merged soon.

rfcbot avatar Aug 17 '25 23:08 rfcbot

Thanks for the RFC! I have created a tracking issue for the remainder of the implementation: https://github.com/rust-lang/rust/issues/145671

Noratrieb avatar Aug 20 '25 16:08 Noratrieb