Skip to content

ci: build and test Windows ARM64 wheels - #991

Merged
martindurant merged 1 commit into
dask:mainfrom
johnnynunez:ci/windows-arm64-wheels
Oct 13, 2026
Merged

martindurant merged 1 commit into
dask:mainfrom
johnnynunez:ci/windows-arm64-wheels

Conversation

@johnnynunez

Copy link
Copy Markdown

This adds native Windows on Arm (win_arm64) wheels.

Changes

  • wheel.yml: new windows-11-arm entry in the buildWin matrix, so release tags also build win_arm64 wheels with the same cibuildwheel setup (cp311, cp312, cp313, cp314, cp314t).
  • test_wheel.yaml: adds windows-11-arm to the existing build-and-pytest matrix, so PRs test a native ARM64 wheel too.
  • cp310-* is skipped on ARM64 only: NumPy has no win_arm64 wheel for Python 3.10, and building numpy 2.2.6 from source inside the isolated build env fails (arraytypes.c.src:4441: #error "Did not find correct pointer sized integer."). See the first fork run below.

Why: there are no Windows ARM64 wheels on PyPI, so users on Windows on Arm currently need a compiler to install fastparquet. GitHub's hosted windows-11-arm runners are free for public repositories.

Verification on my fork (the fork has no release tags, so the verification branch fetches the upstream tags first and runs buildWin on that branch instead of a tag; the workflow is otherwise identical to this PR):

Extra check beyond the existing CI (the release workflow does not run tests; test_wheel.yaml only tests cp311). I installed each wheel from the buildWin artifact on a native ARM64 interpreter and ran the suite:

  • cp311 with pandas<3: 385 passed, 125 skipped, 2 xfailed — https://github.com/johnnynunez/fastparquet/actions/runs/38313081790
  • cp312, cp313, cp314 with pandas<3: pandas 2.x has no win_arm64 wheels. The source-built pandas 2.3.3 crashes with an access violation in a pandas-only probe (pd.DataFrame({'a': [np.datetime64(...)]}), without importing fastparquet), with both numpy 2.4 and 2.5. So these versions can't be tested with pandas 2 on this platform: https://github.com/johnnynunez/fastparquet/actions/runs/38313852182
  • cp312, cp313, cp314 with the official pandas 3.0.6 wheels: 371 passed, 124 skipped, 4 xfailed, 1 xpassed, 12 failed. The same 12 pandas-3 assertions fail on all three versions (string dtype/attributes in test_api row-group rewrites, test_pandas_hive_serialization, test_auto_null_object, test_append_fail_incompatible, test_empty_columns). pyarrow is not installed in that environment. I have not run the same pandas-3-without-pyarrow setup on x64, so I'm not claiming these failures are ARM64-specific or that they aren't: https://github.com/johnnynunez/fastparquet/actions/runs/38314515987

The ARM64 job in test_wheel.yaml builds pandas<3 from source for cp311. That adds about 3 minutes to the job.

architecture: 'arm64'
# cp310: NumPy has no win_arm64 wheel for Python 3.10 and its
# source build fails in the isolated build environment
skip: "cp310-*"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

py3.10 is past support, so this will be true for all the wheels at the next release

@martindurant

Copy link
Copy Markdown
Member

(ignoring pandas CI - their build has moved on)

@martindurant
martindurant merged commit d5c5742 into dask:main Oct 13, 2026
19 of 20 checks passed
@martindurant

Copy link
Copy Markdown
Member

Note that new pypi wheels won't appear unless there is a new releease

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 this pull request may close these issues.

2 participants