Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Include binary wheels for ARM Windows #18593

Open
JukkaL opened this issue Feb 3, 2025 · 4 comments
Open

Include binary wheels for ARM Windows #18593

JukkaL opened this issue Feb 3, 2025 · 4 comments

Comments

@JukkaL
Copy link
Collaborator

JukkaL commented Feb 3, 2025

Feature

We only ship x64 Windows binary wheels (compiled using mypyc). Maybe we should also ship ARM Windows wheels?

To make this work, we'd probably need help from somebody who has access to an ARM Windows system, at least for testing and perhaps benchmarking.

Pitch

Binary wheels compiled with mypyc could improve performance on ARM Windows systems by 3x to 4x or so. CPython already has an experimental installer for ARM Windows. The latest Microsoft Surface laptops have ARM CPUs, and it would be nice if performance was comparable to x64 on them.

Open questions

  • Is Windows ARM popular enough among developers to make this worth it?
  • Does GitHub Actions make it easy to build ARM binaries for Windows?
  • Are all our dependencies supported on ARM Windows?
@ssbarnea
Copy link
Contributor

ssbarnea commented Feb 5, 2025

Basedo on https://github.blog/news-insights/product-news/arm64-on-github-actions-powering-faster-more-efficient-build-systems/ arm64 windows runners are generally available, so I do not see any reason for not producing them. MacOS users are high likely to use an arm64 Windows installed on their machine instead of x86 one.

@JukkaL
Copy link
Collaborator Author

JukkaL commented Feb 5, 2025

To move this forward, somebody with access to ARM Windows would have to try compiling mypy and mypyc and ensuring that tests pass and performance is reasonable. We can then look into enabling wheel builds.

@cdce8p
Copy link
Collaborator

cdce8p commented Feb 5, 2025

Is Windows ARM popular enough among developers to make this worth it?

The current PyPI download stats for mypy 1.14.* within the last 28 days.

pypinfo -pc --days 28 --all --limit 100 \
  --where 'details.cpu != "None"' 'mypy==1.14.*' system cpu libc
system_name cpu libc_name percent download_count Wheels
Linux x86_64 glibc 85.90% 8,843,136 x
Windows AMD64 None 5.13% 528,260 x
Linux aarch64 glibc 3.26% 335,467 x (added with 1.15)
Darwin arm64 None 3.04% 312,831 x
Linux x86_64 None 1.31% 135,131 x
Darwin x86_64 None 0.84% 86,298 x
Linux x86_64 musl 0.37% 38,419 x
Linux aarch64 None 0.06% 6,564
Linux i686 glibc 0.02% 1,711
Linux ppc64le glibc 0.02% 1,571
Linux aarch64 musl 0.01% 1,070
Linux armv7l glibc 0.01% 931
Emscripten wasm32 glibc 0.01% 778 x (only 3.10)
Linux s390x glibc 0.01% 554
Linux i686 None 0.00% 367
CYGWIN_NT-10.0-20348 x86_64 None 0.00% 305
Linux armv7l None 0.00% 276
FreeBSD amd64 None 0.00% 185
Linux ppc64le None 0.00% 172
Windows ARM64 None 0.00% 165 <--
Windows x86 None 0.00% 88
NetBSD amd64 None 0.00% 70
OpenBSD amd64 None 0.00% 67
Linux riscv64 glibc 0.00% 66
Linux armv8l None 0.00% 37

Does GitHub Actions make it easy to build ARM binaries for Windows?

Windows ARM runners aren't available just yet. Probably soon though github/roadmap#1098
https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories

Are all our dependencies supported on ARM Windows?

So far I haven't seen any ARM Windows wheels on PyPI. That will likely only begin to change after the Github runners are available.

@JukkaL
Copy link
Collaborator Author

JukkaL commented Feb 6, 2025

Thanks for looking up the stats! Based on them, this doesn't look relevant yet. We can revisit this once Windows ARM accounts for a non-trivial fraction of downloads (say 0.1%).

# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

3 participants