Promote Windows on ARM (win_arm64) to a fully supported platform - #15350
Promote Windows on ARM (win_arm64) to a fully supported platform#15350khmyznikov wants to merge 1 commit into
Conversation
Windows on ARM was previously kept in a stability validation period: its wheel was built and smoke-tested but not uploaded, and the arm64 test and wheel-build steps used continue-on-error with soft-failure warnings so problems would not block CI or releases. This promotes win_arm64 to full support: - Upload the arm64 wheel like every other platform (drop the arch guard in the windows-wheel action). - Remove continue-on-error and the "Report soft failure" steps for the arm64 entries in ci.yml and wheel-builder.yml, so arm64 failures are treated as real failures. - Add Python 3.15-dev arm64 entries for both tests (ci.yml) and wheel builds (wheel-builder.yml). Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 879e51f7-4d6c-4e05-a054-fd91a4649153
|
Additionally, verified the upcoming update for gh runner, currently it's under the name |
|
We're currently planning to restore support in 51 (likely a Sep/Oct release given our history), but we'd like to see one more month of stability before we actually merge. Thanks for working with us on this and helping stabilize the runners. |
|
@reaperhulk Sounds good, Sep would be great. |
…hon too fix failed builds on windows arm64 (see pyca/cryptography#15350), we can just not install it there as it will fallback on the Rust implementation (so no detailed bench for this specific platform for now), will lift the gate on cryptography v51
|
We maintain a Python MCP server package that transitively depends on cryptography via pyjwt[crypto] (pulled in unconditionally by the mcp SDK). It currently fails to install on win_arm64: no wheel, and a source build needs a Rust toolchain plus the MSVC linker, which most end users don't have. We filed the underlying issue in mcp's repo (modelcontextprotocol/python-sdk#3373), but this wheel is the actual fix. No pressure on timing, just confirming there are real users waiting on this. |
pyca/cryptography#15350 is open and mergeable, targeting the 51 release (likely September/October 2026), which would resolve the win_arm64 install failure regardless of the linked mcp SDK issue's own outcome.
|
Data point from a Windows ARM64 user: I checked PyPI and none of 47.0.0, 48.0.0, 48.0.1, 49.0.0, 50.0.0, 50.0.1 ship a win_arm64 wheel — 46.0.3 ( For anyone blocked in the meantime: building 50.0.0 from sdist on native aarch64-pc-windows-msvc works if OpenSSL is vendored. Recipe that produced a working static wheel for me (rustc 1.96.1 aarch64-pc-windows-msvc, MSVC 14.51 Hostarm64\arm64, Strawberry Perl):
The resulting wheel is fully static (no libcrypto DLL dependency), same shape as the official ones. |
The Intel-Mac and Windows-ARM notes told users to `pipx inject painapple-code "cryptography<49"` / `"cryptography<=46.0.3"`, duplicating in four docs sites a pin that pyproject.toml's `[tls]` extra already encodes behind PEP 508 markers. That made the docs the stalest copy: if pyca/cryptography restores Windows-ARM wheels (pyca/cryptography#15350 is planned but unreleased) the extra updates and the prose silently doesn't. `painapple-code[tls]` resolves to exactly one correct pin per platform — verified across all six marker environments: <49 on Intel macOS, <=46.0.3 on Windows-ARM, >=50.0.0 everywhere cryptography is already a base dependency (where the extra is a harmless no-op). So one command is now correct everywhere and users no longer have to know which platform they are on. The three-tab per-platform block in install-pip.md collapses to a pipx/pip pair. server.py's _tls_unavailable box leads with the same command (`pipx install --force`, since anyone seeing it already installed) and demotes the pin to an informational line explaining why nothing compiles. That line is now gated on the platform actually being in _CRYPTOGRAPHY_GAP — previously the fallback branch (a broken install on a supported platform) would have claimed a bare `cryptography` was "the last release upstream still ships a wheel for", which is nonsense there. No packaging change: _CRYPTOGRAPHY_GAP, the markers and the extra are untouched, and test_tls_optional.py's 23 tests (which assert the three stay in sync) still pass. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Windows on ARM was previously kept in a stability validation period: its wheel was built and smoke-tested but not uploaded, and the arm64 test and wheel-build steps used continue-on-error with soft-failure warnings so problems would not block CI or releases.
This promotes win_arm64 to full support:
Maintenance support: