Skip to content

Please provide Windows ARM64 wheels #109

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
nanonyme opened this issue Aug 9, 2024 · 13 comments · May be fixed by #164
Open

Please provide Windows ARM64 wheels #109

nanonyme opened this issue Aug 9, 2024 · 13 comments · May be fixed by #164

Comments

@nanonyme
Copy link

nanonyme commented Aug 9, 2024

There is now native ARM64 Python since release 3.12. many central projects including this one do not provide wheels for this platform. Please start building wheels also for Windows ARM64 when convenient.

@ofek
Copy link
Contributor

ofek commented Aug 21, 2024

Yes this would be fantastic, we've been getting issues where users can no longer install our packages.

@nanonyme
Copy link
Author

It's possible this is pending GitHub ARM64 Windows project like for many other Python projects. That in term is most likely pending Windows Server 2025 release which is the first release to support ARM64.

@ofek
Copy link
Contributor

ofek commented Aug 21, 2024

Cross compilation is possible, for example cibuildwheel already supports doing that for Windows ARM.

@mattip
Copy link
Contributor

mattip commented Aug 21, 2024

Native Arm64 windows github action runners are in beta. I am not aware of an easy way to get docker or qemu to run windows-arm64 on a github CI runner for testing.

users can no longer install our packages

You imply that once they could and now they can't. Is that what you meant?

Cross compilation is possible

Yes, but that does not solve the testing problem. I would be hesitant to release a package like CFFI without extensively testing that it works on a new platform. This is also the approach NumPy has taken: it will not release windows-arm64 wheels without testing. Here is the relevant comment chain on the issue.

@mattip
Copy link
Contributor

mattip commented Aug 21, 2024

A quick search on another base package in the python extensions multiverse, cryptography, resulted in a similar approach: no wheels without testing.

@nanonyme
Copy link
Author

Native Arm64 windows github action runners are in beta. I am not aware of an easy way to get docker or qemu to run windows-arm64 on a github CI runner for testing.

Yeah, I've been digging around and the reason it's only in beta even though Microsoft is heavily pushing ARM64 most likely is because there is no existing non-beta Windows Server that can run on ARM64. It's no doubt going to be released any year now.

@nanonyme
Copy link
Author

nanonyme commented Aug 21, 2024

Yes, but that does not solve the testing problem. I would be hesitant to release a package like CFFI without extensively testing that it works on a new platform. This is also the approach NumPy has taken: it will not release windows-arm64 wheels without testing. Here is the relevant comment chain on the issue.

I wholeheartedly agree. If you crosscompile, you need some way to test. Where I work this meant completely different system to where build actually happened. Windows ARM64 isn't really yet in great shape. The issue was filed in good faith requesting this eventually since I didn't find existing issue. That is, to signal that consumers needing this exist.

@mattip
Copy link
Contributor

mattip commented Aug 21, 2024

The issue was filed in good faith

I am not really a core dev here, but thanks for the clarification. Bootstrapping a new architecture, especially for a platform as popular as windows, is going to take a while.

I think CPython could only release an experimental version because they (a) run a buildbot farm of distributed machines rather than being dependent on centralized CI. This of course has its own security implications, and requires a larger effort. And (b) CPython has the support of the linaro Windows On Arm team who run the CPython buildbot. Maybe someone knows how to talk to them and get some core projects CI runners?

@ncoghlan
Copy link

Unfortunately, the trust management issues around the core CPython buildbot fleet mean that even offering other projects intermittent access isn't feasible, let alone routine access for artifact creation.

I'm sure MS would like their Copilot+ PCs to be practical platforms for AI development in addition to AI consumption, so I'll see if anyone in the core dev team has GitHub contacts to talk to about community orgs getting access to the ARM64 beta runners.

@localden
Copy link

@ncoghlan let me know if you don't have any direct contacts and I can likely help connect. We've been looking at deploying some of the auth stack pieces on Windows on ARM (win-arm64) and the cffi dependency blocks us from successfully rolling the code out on the platform.

@nitzmahone
Copy link
Member

nitzmahone commented Sep 5, 2024

It's possible this is pending GitHub ARM64 Windows project like for many other Python projects

Yep, exactly.

Windows aarch64 wheels are unlikely to happen anytime soon unless Microsoft does GH-hosted WoA runners like they recently did for MacOS on Apple Silicon. Python wheels with cross-compiled statically-linked extensions are fraught with peril and must be thoroughly tested under their native arches. Access to hardware isn't a problem- I've got plenty of physical/virtual Windows/aarch64 stuff laying around. That said, I can't justify the time to create and maintain a bespoke WoA runner pool. If/when such runners become available to this project, I'm quite happy to add CI and wheel support for WoA.

@tdunkleArm
Copy link

Hello everybody, I wanted to bring to attention that Microsoft published a blog post yesterday about GitHub now hosting WoA runners that are available to all public repos.

@nitzmahone I wanted to put this topic back on your radar. Are you still willing to add CI and wheel support now that the runner should be available to this project?

lazka added a commit to lazka/cffi that referenced this issue Apr 22, 2025
ARM64 Python is available since Python 3.11, so add specs for 3.11-3.13

Use actions/setup-python to avoid using the host Python (3.9 currently
on windows-2022) since the arm image doesn't have a native Python atm
(see actions/partner-runner-images#85) and
cibuildwheel warns that it will require 3.11 with v3, so might as well
bump it for everything.

Also adds one arm64 build to the default matrix setup, since the separate
image makes it different enough to warant testing on PRs imo.

Fixes python-cffi#109
@lazka lazka linked a pull request Apr 22, 2025 that will close this issue
lazka added a commit to lazka/cffi that referenced this issue Apr 22, 2025
ARM64 Python is available since Python 3.11, so add specs for 3.11-3.13

Use actions/setup-python to avoid using the host Python (3.9 currently
on windows-2022) since the arm image doesn't have a native Python atm
(see actions/partner-runner-images#85) and
cibuildwheel warns that it will require 3.11 with v3, so might as well
bump it for everything.

Also adds one arm64 build to the default matrix setup, since the separate
image makes it different enough to warrant testing on PRs imo.

Fixes python-cffi#109
@lazka
Copy link

lazka commented Apr 22, 2025

I've created #164 to fix this.

lazka added a commit to lazka/cffi that referenced this issue Apr 23, 2025
ARM64 Python is available since Python 3.11, so add specs for 3.11-3.13

Use actions/setup-python to avoid using the host Python (3.9 currently
on windows-2022) since the arm image doesn't have a native Python atm
(see actions/partner-runner-images#85) and
cibuildwheel warns that it will require 3.11 with v3, so might as well
bump it for everything.

Also adds one arm64 build to the default matrix setup, since the separate
image makes it different enough to warrant testing on PRs imo.

Fixes python-cffi#109
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants