Skip to content

Ship native Windows ARM64 binaries (nightly + release) - #804

Merged
cscheid merged 1 commit into
mainfrom
feature/bd-windows-arm64-nightly-xms5p652-ship-native-windows-arm64
Oct 8, 2026
Merged

cscheid merged 1 commit into
mainfrom
feature/bd-windows-arm64-nightly-xms5p652-ship-native-windows-arm64

Conversation

@cscheid

@cscheid cscheid commented Oct 8, 2026

Copy link
Copy Markdown
Member

Braid: bd-windows-arm64-nightly-xms5p652 · Plan: claude-notes/plans/2026-10-08-windows-arm64-nightly.md

Someone asked for Windows ARM binaries in the nightlies. Today ARM64 Windows gets windows_amd64 and runs it under x64 emulation.

Changes

  • release-pipeline.yml: new windows_arm64 build leg (aarch64-pc-windows-msvc), built natively on windows-11-arm. An x64 host can't execute an ARM64 binary, and the verify gates need to run it. This is the same reasoning as linux_arm64 on ubuntu-24.04-arm.
    • Added to the asset-manifest parity list, the release completeness check and the notes table.
    • Ships on both channels (the pipeline is shared).
  • install.ps1:
    • Detects the OS architecture from the registry, then RuntimeInformation, then env vars. This holds up when an x64 PowerShell runs under emulation.
    • On ARM64 it prefers windows_arm64 and falls back to windows_amd64 for releases that predate it.
    • New -Platform override.
    • x64 machines behave as before, with no extra API calls.
  • nightly.yml install-smoke:
    • Adds windows-11-arm.
    • On Windows, runs the installer under both PowerShell 7 and Windows PowerShell 5.1.
    • Asserts the installed q2.exe's PE machine type (0x8664 / 0xAA64) matches the runner, so the x64 fallback can't hide a missing ARM64 asset.
  • Runbook and header comments updated.

Testing

  • actionlint passes on all three workflows.
  • install.ps1 was exercised offline with pwsh 7.6 and a mocked GitHub API, covering all selection and fallback paths (details in the plan).
  • Branch dry run (Nightly, force: true, publish: false): https://github.com/quarto-dev/q2/actions/runs/37824531935. This is the first build of the new leg. The PR isn't ready to merge until it's green.
  • After merge: install-smoke only runs against a published nightly, so the first scheduled nightly after merge is the first end-to-end check of the installer changes on real ARM hardware.

🤖 Generated with Claude Code

Add a windows_arm64 (aarch64-pc-windows-msvc) leg to the shared release
pipeline, built natively on windows-11-arm so the verify gates can run
the binary. Wire it into the asset-manifest and release-completeness
checks and the release-notes table; both nightly and stable channels.

install.ps1 now detects the OS architecture (registry, RuntimeInformation,
env vars — robust to an x64 PowerShell under emulation), prefers
windows_arm64 on ARM64, and falls back to windows_amd64 for releases that
predate it. New -Platform override.

Nightly install-smoke gains windows-11-arm, runs install.ps1 under both
PowerShell 7 and Windows PowerShell 5.1, and asserts the installed
q2.exe's PE machine type matches the runner.

Plan: claude-notes/plans/2026-10-08-windows-arm64-nightly.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@posit-snyk-bot

posit-snyk-bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

✅ Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
✅ Open Source Security 0 0 0 0 0 issues
✅ Licenses 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@cscheid
cscheid merged commit 0652efd into main Oct 8, 2026
21 checks passed
@cscheid
cscheid deleted the feature/bd-windows-arm64-nightly-xms5p652-ship-native-windows-arm64 branch October 8, 2026 19:34
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