Skip to content

ci: build on macos-15 with Xcode 16.0 before macos-14 is retired - #258

Merged
SizzleUnrlsd merged 1 commit into
mainfrom
ci/replace-retired-macos-14
Nov 1, 2026
Merged

SizzleUnrlsd merged 1 commit into
mainfrom
ci/replace-retired-macos-14

Conversation

@SizzleUnrlsd

@SizzleUnrlsd SizzleUnrlsd commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Summary

GitHub retires the macos-14 runner image on November 2, 2026 (actions/runner-images#13518). Until then, jobs on that image are cancelled during scheduled brownouts. This PR moves the build matrix's macos-14 entry to macos-15, built with Xcode 16.0, the oldest Xcode on that image.

What breaks

During a brownout, a macos-14 job is cancelled before any step runs, with the annotation "This job failed because of a scheduled macOS 14 runner image brownout". Build on macos-14 was cancelled this way on #239 and #241 on October 30, and passed when re-run outside the brownout. From November 2, jobs on macos-14 are terminated with an error (actions/runner-images#13518).

Change

  • ci.yml: the build matrix entry macos-14 becomes macos-15.
  • On macos-15, a new step sets DEVELOPER_DIR to Xcode 16.0, which CMake's /usr/bin/c++ follows, and prints the compiler's version. If the image no longer has Xcode 16.0, the step fails instead of building with another Xcode.

Impact on coverage

This PR loses two pieces of coverage. Losing them is not a decision to drop compatibility with AppleClang 15 or with the macOS 14 runtime: that stays a separate decision.

Required checks are unchanged: protect-main does not require Build on macos-15, just as it did not require Build on macos-14.

Verification

No local runner can stand in for macos-15, so this PR's own CI run is the test. In Build on macos-15, the new step must print Apple clang 16.0.0, and the Configure step must report AppleClang 16.0.0. On this PR's first run, the step printed Apple clang version 16.0.0 (clang-1600.0.26.3) and Configure reported AppleClang 16.0.0.16000026 for C and C++. The 14 checks that ran passed; Attach binaries to GitHub Release, which runs only on v* tags, was skipped.

GitHub retires the macos-14 image on November 2, 2026, and fails its jobs
during the scheduled brownouts before that (actions/runner-images#13518):
"Build on macos-14" was cancelled before any step on #239 and #241 on
October 30.

The job moves to macos-15 with Xcode 16.0, the oldest Xcode of that
image: its AppleClang 16.0.0 is the oldest Apple compiler GitHub's
runners still provide. The step fails if the image no longer has Xcode
16.0, rather than building with another one.

Two things are then no longer tested: AppleClang 15, the compiler the
job was added for (#228), since macos-14 is the only image with Xcode
15; and the macOS 14 C++ runtime, whose demangler predates C++23
explicit object members (#240). These are losses of coverage, not a
decision to drop compatibility with either.
@SizzleUnrlsd
SizzleUnrlsd marked this pull request as ready for review November 1, 2026 00:01
@SizzleUnrlsd
SizzleUnrlsd merged commit 2e3c12c into main Nov 1, 2026
15 checks passed
@SizzleUnrlsd
SizzleUnrlsd deleted the ci/replace-retired-macos-14 branch November 1, 2026 00:02
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