Repository navigation
feat: build Windows ARM64 wheels - #1925
Conversation
Add the hosted windows-11-arm runner to the cibuildwheel matrix so releases also ship native win_arm64 wheels with the Cython extensions.
|
Thanks for contributing! A quick note: this project is in the process of moving from LGPL-2.1 to Apache 2.0, and may keep LGPL-2.1-or-later as an OR option so GPL-2.0-only projects can keep using the library, see #1835. By continuing with this pull request you agree that this new contribution is offered under both Apache 2.0 and LGPL-2.1-or-later, so it is covered under either outcome. This notice does not affect your previous contributions. If you would like to consent to relicensing those as well, please post the consent statement on #1835; silence is never treated as consent for past work. If offering this contribution under these licenses does not work for you, no hard feelings; reply with the exact phrase |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1925 +/- ##
==========================================
+ Coverage 99.69% 99.87% +0.17%
==========================================
Files 33 33
Lines 3913 3913
Branches 568 568
==========================================
+ Hits 3901 3908 +7
+ Misses 6 3 -3
+ Partials 6 2 -4 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Merging this PR will not alter performance1 warning
Comparing |
|
Traveling this week, but will take a look as soon as I can |
|
We had a problem where the runner was producing arm and x86_64 wheels at the same time. need to make sure this doesn't come back |
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues are identified for the Windows ARM64 wheel-build addition.
No open issues 🎉
What changed in this PR
Adds native Windows ARM64 wheels to the release pipeline, giving Windows on Arm users prebuilt Cython extensions without requiring a local compiler.
Changes:
- Adds
windows-11-armto thebuild_wheelsrunner matrix. - Reuses the existing cibuildwheel configuration and Python-version filters.
| File | Description |
|---|---|
.github/workflows/ci.yml |
Adds the Windows ARM64 runner to release wheel builds. |
Review effort: Balanced
Current diff lacks guard. Lane relies on |
PR Review — feat: build Windows ARM64 wheelsAlmost ready: the change is the right size, but it needs an explicit ARM64 pin before merge, as @bdraco asked. The one-line matrix addition reuses the existing cibuildwheel pin,
Checklist
Automated review by Kōan (Claude) |
halibsbot
left a comment
There was a problem hiding this comment.
Tip
No blocking issues found — ready to merge.
Adds the hosted
windows-11-armrunner to thebuild_wheelsmatrix so releases also ship nativewin_arm64wheels with the Cython extensions compiled. Today Windows on Arm users get the sdist and need a local compiler, or end up on the pure-Python fallback. GitHub'swindows-11-armrunners are free for public repositories.On that runner cibuildwheel's default
autoarch selects ARM64 only, and the existingCIBW_SKIPapplies unchanged, so it builds the same CPython versions as the other platforms: cp310, cp311, cp312, cp313, cp314, cp314t, cp315, cp315t (there is no PyPy for Windows ARM64).Test plan
build_wheelsonly runs after a release on master, so I verified it in my fork with a build-only copy of the job (same cibuildwheel pin and env, no release/publish steps, one job per Python version) and ran the test suite (pytest --timeout=60 tests, without coverage) against each installed wheel, plus an x64 control lane with the same harness:https://github.com/johnnynunez/python-zeroconf/actions/runs/38311471960
.pyd, PE machine ARM64), and the tests imported the compiledzeroconffrom the installed wheel, not the source tree./proc, macOS-only,SO_REUSEPORT, multicast loopback on GitHub Windows runners); the xfail/xpass split varies between runs on both architectures.Side note, not changed here: when all versions are built in one job (as in
build_wheels), the cp314t/cp315t Windows wheels also pick up the cp314/cp315.pydfiles from the previous build. The current cp314twin_amd64wheel on PyPI has 36.pydfiles for this reason. The free-threaded interpreter doesn't load the extra files, so they are harmless, and the new ARM64 lane will behave the same way.