Skip to content

Build and test on macOS 27 with Xcode 27; 0.16.7 - #22

Merged
belugaming merged 5 commits into
mainfrom
claude/sweet-dijkstra-lbh7a4
Oct 9, 2026
Merged

belugaming merged 5 commits into
mainfrom
claude/sweet-dijkstra-lbh7a4

Conversation

@belugaming

Copy link
Copy Markdown
Owner

Until now, CI and releases built only with Xcode 26.2 on macOS 15. Nothing ran on macOS 27, and the Apple silicon app was linked against the macOS 26 SDK, so macOS 27 ran it in compatibility mode.

CI: also on macOS 27

The Swift job is now a matrix:

  • macOS 15, Xcode 26.2: the previous job, unchanged.
  • macOS 27, Xcode 27: GitHub's xcode-27 runner image, which runs macOS 27.0. It builds with the 27 SDK and runs all the unit and integration tests on macOS 27. Result: 199 tests pass, 0 warnings, and the LaTeX check passes.

Releases run CI first, so a release now needs both jobs green.

Release: Apple silicon built with Xcode 27

  • arm64 DMG: built on xcode-27 with Xcode 27.0. It is linked against the macOS 27 SDK (LC_BUILD_VERSION ... sdk 27.0), so it gets macOS 27's behavior instead of a compatibility mode. The deployment target stays at macOS 14.
  • x86_64 DMG: stays on Xcode 26.2 / macOS 15. macOS 27 doesn't run on Intel Macs, so that build targets the systems they do run.

Both DMGs were built on this branch with the release job's own steps, using a temporary workflow that has since been removed. The repository token can't start release.yml by hand. SwiftMath is bundled in both.

Picking a released Xcode, not a beta

On the xcode-27 image, Xcode_27.2.app is a link to Xcode_27.2_beta.app. Filtering on names alone picked 27.2 beta (27B5019j). Each path is now resolved before betas and RCs are filtered out, and the step fails if no release is left. Today that selects Xcode 27.0 (27A266a).

Concurrency warnings

Xcode 27 warned that SentenceBlockView.== and LiveSentenceView.== read the main-actor block from a nonisolated context; this is an error in Swift 6 mode. SentenceBlock is now Sendable when its lines are, and LiveSegment / LiveTranslationState are explicitly Sendable. The warning reproduces with Swift 6.2 in Swift 5 mode with complete strict concurrency, and goes away after the change.

Version

0.16.7 (build 25). 0.16.6 is already tagged.

🤖 Generated with Claude Code

https://claude.ai/code/session_015ihz5z81AZ27T33PMCKkaL


Generated by Claude Code

claude added 5 commits October 9, 2026 06:20
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015ihz5z81AZ27T33PMCKkaL
…16.7

On the xcode-27 runner Xcode_27.2.app is a link to the 27.2 beta, so
filtering names for "beta" still picked it. Each path is now resolved
before the filter, and the step fails if no release is left.

SentenceBlock is Sendable when its lines are, so the transcript and live
rows' nonisolated `==` can read it; Xcode 27 warned on both (an error in
Swift 6 mode).

Version 0.16.7 (build 25).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015ihz5z81AZ27T33PMCKkaL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015ihz5z81AZ27T33PMCKkaL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015ihz5z81AZ27T33PMCKkaL
@belugaming
belugaming merged commit a04e24a into main Oct 9, 2026
6 checks passed
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