Skip to content

Add Windows ARM64 wheel support - #759

Open
ssss141414 wants to merge 8 commits into
awslabs:mainfrom
ssss141414:windows-arm64-wheels
Open

Add Windows ARM64 wheel support#759
ssss141414 wants to merge 8 commits into
awslabs:mainfrom
ssss141414:windows-arm64-wheels

Conversation

@ssss141414

Copy link
Copy Markdown

Summary

  • detect native win-arm64 Python builds without relying on pointer width
  • build the CRT dependencies with Ninja and clang-cl
  • disable only the vendored optimized checksum path that currently fails under ClangCL, retaining the portable implementation
  • add native Windows ARM64 build/install tests across the stable-ABI and free-threaded Python matrix
  • add a Windows ARM64 release wheel entry point matching the existing Win32/Win64 scripts

Validation

  • built awscrt-0.36.2-cp313-abi3-win_arm64.whl on native Windows ARM64
  • wheel SHA-256: AF14C5D014A29123E07F53CA9F615F96DEA3E21695791AD5EBBF1C1BCB2E5205
  • _awscrt.pyd PE machine: 0xAA64
  • clean installed-wheel local suite: 473 passed, 252 skipped
  • additional remote HTTP/2 test currently receives HTTP 503 from the public endpoint instead of the expected 404; this is not treated as a pass

Release integration note

The new release script produces the ARM64 wheel set, but the external CodeBuild/CodePipeline source and aggregation wiring are intentionally not changed here. That infrastructure must provide and validate the ARM64 secondary source before the release tee consumes it.

@ssss141414

Copy link
Copy Markdown
Author

Hosted Windows ARM64 validation is complete on final head ef45c356a7e8970eed3aa85306bf738150075b07.

Run: https://github.com/ssss141414/aws-crt-python/actions/runs/32470230302

All six native windows-11-arm build/install rows passed:

  • CPython 3.11 wheel on 3.11 and 3.12 (cp311-abi3-win_arm64)
  • CPython 3.13 wheel on 3.13 and 3.14 (cp313-abi3-win_arm64)
  • free-threaded 3.13 (cp313-cp313t-win_arm64)
  • free-threaded 3.14 (cp314-cp314t-win_arm64)

Each clean installed-wheel job ran 497 tests: OK (skipped=252). The workflow asserts the filename and embedded WHEEL tag, verifies that exactly the two known httpbin.org-dependent tests are excluded, and rejects empty discovery. Those two tests are isolated because the public endpoint currently returns 503 instead of their expected 404.

The run-wide failure is from pre-existing fork limitations: AWS OIDC credentials/CRT_CI_ROLE are unavailable to fork jobs, and some macOS jobs are blocked by account billing. The ARM64 jobs do not use those credentials and all passed. External CodeBuild/CodePipeline source and aggregation wiring remains a release-infrastructure follow-up as documented in the PR description.

@ssss141414

Copy link
Copy Markdown
Author

Hi awscrt maintainers,
I'm from Microsoft and recently I'm working on improving Python ecosystem support for Windows on Arm. So I adds CI support for Windows ARM64. Could you please help to review? Thanks.

@ssss141414
ssss141414 marked this pull request as ready for review August 25, 2026 03:33
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.

1 participant