-
-
Notifications
You must be signed in to change notification settings - Fork 202
Add ARM64 Windows builds for Python 3.11+ #387
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
Conversation
116a612
to
bb7bc6e
Compare
We're failing missing
on amd64, you can see we copy this file
but we don't on arm64
Looks like |
49b6f84
to
00ea84c
Compare
By manually copying the
Where we fail to run the PGO tests because, of course, we're not on an ARM runner. |
I don't really know what the plan is here. There aren't public ARM Windows runners (though they might be eventually actions/runner-images#10820 / github/roadmap#970). We (Astral) could pay for runners, but I can't set that up in this repository. We could skip PGO, but we're still going to fail later (we need to invoke |
Now that this is in the Astral org, I intend to try adding an ARM runner. |
As a note, before releasing this we need to add proper prioritization for these builds to uv — as arm64 wheels are not prevalent we may not want to actually use these builds by default. |
FWIW, we still consider them experimental in upstream, and I'm regularly tracking whether to make them non-experimental. Right now, that's not going to happen anytime soon, unless I get sick of the people who are meant to be using them going "I'm not going to fix my package/tool until it's non-experimental" when it's still experimental because they haven't fixed anything (okay, clearly I'm already sick of them, but I can't shout at them all at once 😆 ) When we think it's time to unleash users on these builds by default, it'll be announced as part of an upstream beta release (or earlier, but probably not earlier - definitely no later than beta). |
3.9 fails validation due to missing
3.13 fails more eagerly with the same problem
Looks like this is because the artifact we use for tcl/tk does not include arm64 binaries — so we'll try the newer version. |
57fee9e
to
4e98498
Compare
Okay now this is working on 3.11+, I don't want to get side-tracked debugging the 3.9 / 3.10 tkinter problems. We'll also need to add these builds to the release targets. |
Neither did I, which is why we never enabled it upstream for those versions. Honestly, I wouldn't bother with 3.11 and 3.12 either. There are potentially bugs in those that were never fixed. There's also a known compiler bug in 14.43 (searching build output for |
See astral-sh#12906 and astral-sh/python-build-standalone#387 - as soon as we start shipping arm64 Windows Python builds in python-build-standalone, uv is going to start discovering them, and there aren't enough arm64 Windows wheels for that to make sense as a default yet. As a very minimal stopgap, consider those builds incompatible. No functional change expected at the moment, but this unblocks python-build-standalone shipping arm64 Windows Python builds and lets us manage the transition in some better way like a configuration knob.
Co-authored-by: Adrian Antkowiak <[email protected]>
This reverts commit a9748a9.
465c0b7
to
1b37af1
Compare
and prefer emulated x64 windows in its stead. This is preparatory work for shipping support for uv downloading and installing aarch64 (arm64) windows Pythons. We've [had builds for this platform ready for a while](astral-sh/python-build-standalone#387), but have held back on shipping them due to a fundamental problem: **The Python packaging ecosystem does not have strong support for aarch64 windows**, e.g., not many projects build aarch64 wheels yet. The net effect of this is that, if we handed you an aarch64 python interpreter on windows, you would have to build a lot more sdists, and there's a high chance you will simply fail to build that sdist and be sad. Yes unfortunately, in this case a non-native Python interpreter simply *works better* than the native one... in terms of working at all, today. Of course, if the native interpreter works for your project, it should presumably have better performance and platform compatibility. We do not want to stand in the way of progress, as ideally this situation is a temporary state of affairs as the ecosystem grows to support aarch64 windows. To enable progress, on aarch64 Windows builds of uv: * We will still use a native python interpreter, e.g., if it's at the front of your `PATH` or the only installed version. * If we are choosing between equally good interpreters that differ in architecture, x64 will be preferred. * If the aarch64 version is newer, we will prefer the aarch64 one. * We will emit a diagnostic on installation, and show the python request to pass to uv to force aarch64 windows to be used. * Will be shipping [aarch64 Windows Python downloads](astral-sh/python-build-standalone#387) * Will probably add some kind of global override setting/env-var to disable this behaviour. * Will be shipping this behaviour in [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) We're coordinating with Microsoft, GitHub (for the `setup-python` action), and the CPython team (for the `python.org` installers), to ensure we're aligned on this default and the timing of toggling to prefer native distributions in the future. See discussion in - #12906 --- This is an alternative to * #13719 which uses sorting rather than filtering, as discussed in * #13721
Picking up #93