Skip to content

Build and test on native ubuntu-24.04-arm - #233

Merged
colemancda merged 5 commits into
masterfrom
feature/ci-arm64-linux
Aug 3, 2026
Merged

Build and test on native ubuntu-24.04-arm#233
colemancda merged 5 commits into
masterfrom
feature/ci-arm64-linux

Conversation

@colemancda

Copy link
Copy Markdown
Member

Summary

Adds a linux-arm64 job to swift.yml, mirroring the existing linux job's matrix (Swift 6.2.3/6.3.3, debug/release, static/dynamic) on GitHub's hosted ubuntu-24.04-arm runner.

This is distinct from swift-arm.yml's existing armv6/armv7 jobs, which cross-compile on x86_64 runners because those 32-bit ARM targets have no hosted execution environment. ubuntu-24.04-arm is a real 64-bit ARM machine, so this job builds and runs the full test suite natively, using the same official multi-arch Swift container images the x86_64 job already uses (Docker pulls the arm64 variant automatically).

Test plan

  • CI run on this PR exercises the new Linux (ARM64) matrix and passes

Mirrors the existing x86_64 Linux job's matrix (Swift 6.2.3/6.3.3,
debug/release, static/dynamic) on GitHub's hosted ARM64 runner, using
the same official multi-arch Swift container images. Unlike
swift-arm.yml's armv6/armv7 jobs, this is a real 64-bit ARM machine
rather than a cross-compilation target, so it builds and runs the
full test suite directly.
@github-code-quality

github-code-quality Bot commented Aug 3, 2026

Copy link
Copy Markdown

Code Coverage Overview

Languages: Swift

Swift / code-coverage/llvm-cov

The overall coverage in commit 5fffa80 in the feature/ci-arm64-lin... branch remains at 89%, unchanged from commit dada08c in the master branch.


Updated August 03, 2026 18:25 UTC

Same jobs, same coverage — arch is now a matrix dimension instead of
a separate duplicated job, with an include block supplying the
matching runner label per architecture.
@colemancda
colemancda force-pushed the feature/ci-arm64-linux branch from 415a79d to 06988a7 Compare August 3, 2026 16:48
unsafeBitCast between UInt128 and its 16-byte tuple representation
assumes compatible alignment, but UInt128 is naturally 16-byte
aligned while a tuple of UInt8 is 1-byte aligned. withUnsafeBytes
plus loadUnaligned make no such assumption.

This is a correctness cleanup, not a fix for the arm64 crash in
HCILEPrivacyTests — that crash reproduces unchanged with this
applied, so its cause lies elsewhere.
A single failing cell was cancelling the rest mid-compile, which
hides exactly the arch/toolchain/config breakdown needed to diagnose
a platform-specific failure.
They witnessed `async throws` protocol requirements with synchronous
`throws` methods, so every call went through a compiler-generated
thunk. Diagnostic for the arm64 debug crash in HCILEPrivacyTests:
if the thunk is where a 16-byte-aligned parameter struct gets
mislaid, removing it should make the crash go away.
@colemancda
colemancda merged commit 7cc6904 into master Aug 3, 2026
51 of 55 checks passed
@colemancda
colemancda deleted the feature/ci-arm64-linux branch August 3, 2026 23:01
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