Those who read all the way through release pages will have noticed that we’ve had “experimental” releases for Windows ARM64 platforms. These have been stable since about 3.10, but it’s taken a while for the ecosystem to catch up.
During that time, we didn’t want “regular” users using it, as they had an almost certain likelihood of failing to install packages due to lack of wheels.[1] The “experimental” label was intended to dissuade these users, while still allowing early adopters and (it was hoped) package developers to get prepared.
With GitHub Actions adding ARM64 images earlier this year, and a multi-year effort by a number of people (many supported by Microsoft specifically to help projects add support), it now appears that as many projects who are willing to support the platform already do, and we aren’t likely to be any more prepared for regular users to start using the ARM64 build on their platform.
So this post is an announcement of intent to make the Windows ARM64 releases the default for Windows ARM64 users at the time when 3.15 is released. So around October 2026, our recommendation (and the behaviour of our install manager) will be to install our ARM64 binaries on Windows ARM64 machines. The current recommendation/behaviour is to always install the AMD64 binaries and let them be emulated.
Broadly speaking, packages that have released wheels for Windows ARM64 are supporting at least 3.14, and often back to 3.11 (or 3.9, which is entirely unnecessary, but go ahead). Combined with the fact that it’s easier for tools such as the Python install manager and uv to change the default for all versions at once, our plan is to do just that.
Also worth noting that this does not change the support tier (PEP 11) of the Windows ARM64 platform, where it remains Tier 3.[2] That does put us in an awkward position if there’s a platform-specific issue that doesn’t affect other Windows architectures, since an ARM64-specific blocker won’t delay the entire release, but I think we’re fine to deal with that if/when it occurs. We’ve already been releasing for the last few years without issue.
This post is the place to capture any feedback, since we can very easily change our minds if good reasons are raised. With twelve months notice, hopefully it won’t be a big surprise when the change occurs.[3]
Intel emulation on Windows ARM64 is very good, but while it’s continuing to be improved, native binaries are of course more efficient and better integrated with the OS. ↩︎
Until a second core dev volunteers to offer support, and we add the handful of lines to the GitHub Actions PR configuration to build and test it. ↩︎
Anecdotally, I’ve heard plenty of surprise that we haven’t changed it earlier (and a few demands that I get it changed immediately, which obviously I’ve resisted for the sake of our user base). ↩︎