.github/workflows: add a native Windows/arm64 test target#471
Open
hajimehoshi wants to merge 1 commit into
Open
.github/workflows: add a native Windows/arm64 test target#471hajimehoshi wants to merge 1 commit into
hajimehoshi wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR extends the CI test matrix to run the test suite natively on Windows/arm64 using the hosted windows-11-arm runner, and adjusts the test helper that builds shared libraries so it can handle a multi-word CC (e.g., zig cc -target ...) needed on that runner.
Changes:
- Add
windows-11-armto the maintestmatrix (Go 1.25.x and 1.26.x). - Install Zig on Windows/arm64 and configure Go to use it as
CCfor producing arm64 DLLs. - Update
buildSharedLibto splitgo env CCinto an executable + leading args for multi-wordCC.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
func_test.go |
Updates buildSharedLib to support multi-word CC values used by the new Windows/arm64 CI configuration. |
.github/workflows/test.yml |
Adds a native Windows/arm64 runner, installs/configures Zig for that target, and skips steps not applicable on Windows/arm64 (MSYS2, 386 cgo, race). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
0bca654 to
52e1817
Compare
Add windows-11-arm to the test matrix so the Windows/arm64 ABI is exercised on real hardware (Go 1.25.x and 1.26.x). The runner has no C toolchain that targets Windows arm64 (its bundled gcc is an x86_64 mingw build and MSYS2 is omitted), so the tests that compile a C shared library are skipped on windows/arm64, as they already are on windows/386. The skip lives in buildSharedLib, so every test that builds a C library inherits it. The remaining tests still cover the Go callback and syscall paths on the platform. Also skip the Windows steps that do not apply to arm64: the MSYS2 setup, the Cgo variant of the 386 test, and the race detector, which Go does not support on windows/arm64. Closes ebitengine#468 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
52e1817 to
bd7c2ac
Compare
Member
Author
|
@TotallyGamerJet Please take a look, thanks |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What issue is this addressing?
Closes #468
What type of issue is this addressing?
feature
What this PR does | solves
Adds a native
windows-11-armrunner to thetestjob matrix (Go 1.25.xand 1.26.x) so the Windows/arm64 ABI is exercised on real hardware.
The GitHub
windows-11-armimage has no C toolchain that targets Windowsarm64 — its bundled
gccis an x86_64 mingw build and MSYS2 is omitted —and
zig cc's aarch64-windows backend crashes nondeterministically(~40% of invocations,
0xc0000005/0xc0000409, no diagnostic) on therunner. Rather than ship a flaky-toolchain workaround, the tests that
compile a C shared library at run time are skipped on windows/arm64,
mirroring the existing windows/386 skip. The remaining tests still cover
the Go callback and syscall paths on the platform.
Changes:
windows-11-armto the matrix.buildSharedLib(now takingtesting.TB) so every C-library test inherits it and it can't beforgotten on a new call site. This also subsumes the existing
windows/386 skip.
Cgo variant of the 386 test, and
go test -race(the race detector isunsupported on windows/arm64).
Filed by Claude (Claude Code), on behalf of @hajimehoshi.