Skip to content

Add Windows ARM64 wheels#663

Merged
bwoodsend merged 3 commits intoultrajson:mainfrom
tonybaloney:patch-1
Apr 23, 2025
Merged

Add Windows ARM64 wheels#663
bwoodsend merged 3 commits intoultrajson:mainfrom
tonybaloney:patch-1

Conversation

@tonybaloney
Copy link
Copy Markdown
Contributor

Adds the recently released Windows ARM64 runner and support in CIBW

@hugovk hugovk added the changelog: Added For new features label Apr 22, 2025
@hugovk
Copy link
Copy Markdown
Member

hugovk commented Apr 22, 2025

It's failing for Windows arm64 with PyPy, shall we skip it?

cibuildwheel: Invalid archs option {<Architecture.arm64: 'arm64'>}. Windows only supports [<Architecture.AMD64: 'AMD64'>, <Architecture.ARM64: 'ARM64'>, <Architecture.x86: 'x86'>] at the moment. If you want to set emulation architectures on Linux, use CIBW_ARCHS_LINUX instead.
  architectures: arm64
  build_selector: 
    build_config: *
    skip_config: pp39*
    requires_python: >=3.9
    enable: ['cpython-prerelease', 'pypy']

@bwoodsend
Copy link
Copy Markdown
Collaborator

I was reading that as it just wants ARM64 instead of arm64?

@tonybaloney
Copy link
Copy Markdown
Contributor Author

I fixed the casing and also added an exclude for pypy arm64 on Windows

@tonybaloney
Copy link
Copy Markdown
Contributor Author

I downloaded the build artifacts and tested the wheel on Python 3.12, it works fine.

Copy link
Copy Markdown
Member

@hugovk hugovk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was reading that as it just wants ARM64 instead of arm64?

Aha, so it does!

I did a test build, removing pp*-win_arm64 from the skip:

          CIBW_SKIP: "pp39*"

And keeping it caps "ARM64", and it passed:

https://github.com/hugovk/ultrajson/actions/runs/14598948889/job/40951953358

And just like this PR it produced 5 wheels:

  ujson-5.7.1.dev125-cp310-cp310-win_arm64.whl   37 kB
  ujson-5.7.1.dev125-cp311-cp311-win_arm64.whl   37 kB
  ujson-5.7.1.dev125-cp312-cp312-win_arm64.whl   37 kB
  ujson-5.7.1.dev125-cp313-cp313-win_arm64.whl   37 kB
  ujson-5.7.1.dev125-cp39-cp39-win_arm64.whl     37 kB

But only for CPython and not PyPy. I expected it to (attempt to) create PyPy wheels. Checking the docs, cibuildwheel doesn't support PyPy on Windows Arm64 yet, which is fair enough.

I suggest let's remove pp*-win_arm64 from the skip. When cibuildwheel adds support in the future, we'll get the wheels.


The case sensitivity is surprising but sort of documented -- it only shows ARM64 for Windows and arm64 for macOS. I opened pypa/cibuildwheel#2373 to ask about this.

Comment thread .github/workflows/deploy.yml Outdated
Co-authored-by: Hugo van Kemenade <[email protected]>
@tonybaloney
Copy link
Copy Markdown
Contributor Author

@hugovk all done

Copy link
Copy Markdown
Member

@hugovk hugovk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@bwoodsend bwoodsend merged commit a2febd2 into ultrajson:main Apr 23, 2025
27 checks passed
@bwoodsend
Copy link
Copy Markdown
Collaborator

Don't suppose we're able to just upload the new wheels to the current release or do we have to release a new version?

@tonybaloney
Copy link
Copy Markdown
Contributor Author

@bwoodsend you can upload specific wheels to an existing version if those wheels didn't exist beforehand.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog: Added For new features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants