Repository navigation
ci: build on macos-15 with Xcode 16.0 before macos-14 is retired - #258
Merged
Merged
Conversation
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.
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.
Summary
GitHub retires the
macos-14runner 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'smacos-14entry tomacos-15, built with Xcode 16.0, the oldest Xcode on that image.What breaks
During a brownout, a
macos-14job is cancelled before any step runs, with the annotation "This job failed because of a scheduled macOS 14 runner image brownout".Build on macos-14was cancelled this way on #239 and #241 on October 30, and passed when re-run outside the brownout. From November 2, jobs onmacos-14are terminated with an error (actions/runner-images#13518).Change
macos-14becomesmacos-15.macos-15, a new step setsDEVELOPER_DIRto 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.
macos-15(that image has Xcode 16.0 to 26.3): the oldest that GitHub's runners provide oncemacos-14is retired.macos-latest(macOS 26) uses Xcode 26.6.ubuntu-24.04andmacos-latestread those symbols (Symbols that the C++ runtime's demangler predates, such as C++23 explicit object members, stay mangled in the output #240: before the fallback existed,const-suggestion-explicit-object.cppfailed only onmacos-14); that ofmacos-15has not been measured. After this PR, no runtime of this CI is known to need the fallback.Required checks are unchanged:
protect-maindoes not requireBuild on macos-15, just as it did not requireBuild on macos-14.Verification
No local runner can stand in for
macos-15, so this PR's own CI run is the test. InBuild 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 printedApple clang version 16.0.0 (clang-1600.0.26.3)and Configure reportedAppleClang 16.0.0.16000026for C and C++. The 14 checks that ran passed;Attach binaries to GitHub Release, which runs only onv*tags, was skipped.