From 6bb3f49ba4bcea1942d1b6d891cf2b64b3c0818e Mon Sep 17 00:00:00 2001 From: MUGUNDAN Date: Mon, 12 Oct 2026 09:50:15 +0530 Subject: [PATCH 1/2] Add CI support for publishing Windows ARM64 Wheels --- .github/workflows/wheel.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/wheel.yaml b/.github/workflows/wheel.yaml index d8fa6ab11..a9ac8a512 100644 --- a/.github/workflows/wheel.yaml +++ b/.github/workflows/wheel.yaml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: # macos-15-large is an intel runner, macos-14 is an arm64 runner - os: [ubuntu-latest, ubuntu-22.04-arm, windows-latest, macos-15-large, macos-14] + os: [ubuntu-latest, ubuntu-22.04-arm, windows-latest, windows-11-arm, macos-15-large, macos-14] env: # on free-threaded builds also check that no extension re-enables the GIL CIBW_TEST_COMMAND: python -c "import sys, sysconfig, numcodecs; assert not (sysconfig.get_config_var('Py_GIL_DISABLED') and sys._is_gil_enabled())" @@ -34,6 +34,15 @@ jobs: with: submodules: true fetch-depth: 0 # required for version resolution for nightly wheels + + # Windows ARM64 builds fail immediately with the default GCC toolchain, + # so use LLVM Clang to build wheels instead. + - name: Configure Clang for Windows ARM64 Builds + if: matrix.os == 'windows-11-arm' + shell: pwsh + run: | + "CC=clang-cl" >> $env:GITHUB_ENV + "CXX=clang-cl" >> $env:GITHUB_ENV - uses: pypa/cibuildwheel@v3.4.1 From 05b4a67c0c679d3d08dbeb7a72fd12d556ced2c3 Mon Sep 17 00:00:00 2001 From: MUGUNDAN Date: Mon, 12 Oct 2026 11:09:50 +0530 Subject: [PATCH 2/2] Update xfail condition for Windows platform in tests --- tests/test_pickles.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_pickles.py b/tests/test_pickles.py index fdabd459c..82afb999d 100644 --- a/tests/test_pickles.py +++ b/tests/test_pickles.py @@ -1,5 +1,6 @@ import itertools import sys +import platform import numpy as np import pytest @@ -51,7 +52,7 @@ def test_repr(): # https://stackoverflow.com/questions/58194852/modulenotfounderror-no-module-named-numpy-core-multiarray-r @pytest.mark.skipif(sys.byteorder != "little", reason="Pickle does not restore byte orders") @pytest.mark.xfail( - sys.platform == "win32", + sys.platform == "win32" and platform.machine().lower() != "arm64", reason=( "Pickle fails to read w/ Windows carriage return " "( https://github.com/zarr-developers/numcodecs/issues/271 )"