Skip to content

[DO NOT MERGE] probe macOS 27 runner labels - #658

Closed
Sunrisepeak wants to merge 2 commits into
mainfrom
verify/macos-27-runner
Closed

Sunrisepeak wants to merge 2 commits into
mainfrom
verify/macos-27-runner

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Measurement only: which of macos-27, macos-27-arm64, macos-26, macos-latest are served, and which macOS each runs. Closed after the readings are recorded.

Sunrisepeak pushed a commit that referenced this pull request Sep 16, 2026
GitHub serves macOS 27 under the preview label xcode-27 (macOS 27.0 with Xcode
27, actions/runner-images#14404); there is no macos-27 label. Measured on #658:
the label delivers macOS 27.0 (26A5406e), arm64, ImageOS macos27.

- ci-macos and ci-macos-e2e run on macos-15 and xcode-27.
- ci-fresh-install runs the xlings and Homebrew channels on macos-14 (the
  floor) and xcode-27 (the newest release).
- Every macOS 27 leg asserts sw_vers major 27, because the label names an
  Xcode and its base OS has changed once.
- setup-macos-llvm takes the image as an input and puts it in the xlings cache
  key, which named macos15 for every image.
@Sunrisepeak

Copy link
Copy Markdown
Member Author

Measurement recorded in .agents/docs/2026-09-17-655-implementation-plan.md §5.1: the xcode-27 label delivers macOS 27.0 (26A5406e), arm64, ImageOS macos27, Xcode 27.0, Apple clang 21.0.0. There is no macos-27 label; the first run naming it was cancelled while queued.

Sunrisepeak added a commit that referenced this pull request Sep 16, 2026
…mpiler receives (#655); macOS 27 (#657)

* One reading of a compile-flag element; the databases list what the compiler receives (#655)

An element of `cflags`, `cxxflags` and `asmflags` now has one meaning on every
host: the POSIX shell's word syntax without expansions, where a backslash
escapes only a blank, a quote or a backslash (mcpp.manifest.flag_words,
SPEC-004 §8). The ninja writer quotes each word for its host, and
compile_commands.json and `mcpp emit build-database` list the words, so the
databases equal the build by construction instead of re-reading command lines.

Before, an element meant whatever the host's command-line reader made of it
(measured on Linux and Windows runners, #656: five of fourteen spellings gave
different macros), and the databases listed the text with a third reading,
which is how libarchive's `-DPLATFORM_CONFIG_H=\"...\"` reached consumers with
its backslashes.

- A `defines` entry is one value: `N="x"` reaches the compiler as `-DN="x"`
  (it arrived as `-DN=x`). Features, globs, targets and `mcpp:cfg=` alike.
- Link units keep their rendered text; GAS units' database entries list their
  edge's list; the `-std` guard, dialect promotion and include normalisation
  read words.
- Windows `shell_quote_arg` doubles backslashes before a quote and the closing
  quote.
- The first plan after an upgrade names an element whose words changed
  (`build/flag-words`); a repeated plan says nothing. No flag-list element of
  the published index changes.

Tests: FlagWords.* (syntax table and round trip), CompileCommandsArgs.*
(edge equals database, host quoting round trip, /bin/sh as the reference),
e2e 736 (same assertions on every host; fails on 2026.9.16.2).
Records: .agents/docs/2026-09-17-655-*.
Version 2026.9.17.1.

* 655: the ecosystem verification script

* CI on macOS 27: ci-macos, ci-macos-e2e and both fresh-install channels

GitHub serves macOS 27 under the preview label xcode-27 (macOS 27.0 with Xcode
27, actions/runner-images#14404); there is no macos-27 label. Measured on #658:
the label delivers macOS 27.0 (26A5406e), arm64, ImageOS macos27.

- ci-macos and ci-macos-e2e run on macos-15 and xcode-27.
- ci-fresh-install runs the xlings and Homebrew channels on macos-14 (the
  floor) and xcode-27 (the newest release).
- Every macOS 27 leg asserts sw_vers major 27, because the label names an
  Xcode and its base OS has changed once.
- setup-macos-llvm takes the image as an input and puts it in the xlings cache
  key, which named macos15 for every image.

* macOS 27: the std module builds; the -D compatibility rule; host-shaped test fixes

macOS 27 (measured on the xcode-27 image, #659): the 27.0 SDK's math.h leaves
INFINITY and NAN to <float.h> once modules are on, and clang 22's header does
not supply them under -std=c++23, so libc++'s std module stopped building.
apple_float_macro_words (hostflags.cppm) states both with the SDK's own GNU-mode
spellings for clang on an Apple target; its readers quote the words their own
way (ninja text, the std module command, graph std flags, build program argv).
gnu++23, -U__STRICT_ANSI__ and -D__need_infinity_nan were rejected for their
effect beyond the defect. The raw clang steps of ci-macos state the same words.

Compatibility: an element beginning with -D or /D that contains a space is one
word, verbatim, as every release since #234 passed it (SPEC-004 §8 rule 8).

Windows: flag_element no longer quotes a backslash the syntax does not read as
an escape, normalize_include_flags keeps the spelling of an unchanged element,
and the split_flags quoting tests follow the host's reader.

* CI macOS 27: wrap a bootstrap mcpp that predates the float macro fix

The raw clang steps now build import std on macOS 27 (run 35142520288). The
self-host step failed because the bootstrap, 2026.9.16.1, predates the fix.
setup-macos-llvm wraps a bootstrap older than 2026.9.17.1 on macOS 27 or later
and passes the same two words through CCC_OVERRIDE_OPTIONS; the freshly built
binary runs unwrapped, and the wrapper retires with the bootstrap pin.

* Review: the diagnostic block sits above the defines comment; correct the 252 claim; index reading with the -D exception

- report_flag_words_changes was inserted between fold_build_defines_into_flags
  and its comment; it now precedes the comment.
- The record claimed e2e 252 keeps its real old-client leg on macOS through the
  wrapper. It does not, on any macOS leg including main: MCPP_BOOT is the xlings
  shim. Corrected and listed as a residual, with dialect promotion reading words.
- The index reading script applies the -D exception: 285 literals, 0 differ.

---------

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
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