Skip to content

fix(build): build and test on the Swift 6.4 toolchain - #38

Merged
tenequm merged 1 commit into
mainfrom
fix/swift-6-4-build
Oct 7, 2026
Merged

tenequm merged 1 commit into
mainfrom
fix/swift-6-4-build

Conversation

@tenequm

@tenequm tenequm commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Swift 6.4 (Xcode with the macOS 27 SDK) broke both local entry points.

make bundle failed. The Swift Build backend writes products to .build/out/Products/Release, so the hard-coded .build/arm64-apple-macosx/release/*.bundle glob matched nothing. The loop's trailing [ -d ] && then returned 1 and failed the target. It now copies from the .build/release symlink, which resolves under both backends, guards with if, and skips *Tests.bundle, which the new backend builds even in release.

The test target did not compile. Swift 6.4 refuses an actor conforming to a main-actor-isolated protocol, and FakeTranscriptionService is one. TranscriptionServicing is now declared nonisolated, and its requirements stay @concurrent. AGENTS.md and docs/specification.md are updated to say it carries both annotations.

Verified on Swift 6.4 locally: make test-unit passes (153 tests), and make bundle now bundles DTLNAecCoreML_DTLNAec256.bundle and signs with the Developer ID. The four hardware smoke tests could not run here because the shell's host app has no Screen Recording grant; they fail on CGPreflightScreenCaptureAccess() in the test process. CI runs them.

Release notes

Internal: the app builds and its tests compile on the Swift 6.4 toolchain.

Swift 6.4 broke both local entry points:

- `make bundle` failed: the Swift Build backend writes products to
  .build/out/Products/Release, so the hard-coded .build/<triple>/release
  glob matched nothing and the loop's trailing `[ -d ] &&` returned 1. Copy
  from the .build/release symlink, which resolves under both backends, and
  skip test resource bundles, which the new backend now builds in release.
- The test target no longer compiled: 6.4 refuses an actor conforming to a
  main-actor-isolated protocol, and FakeTranscriptionService is one. Declare
  TranscriptionServicing nonisolated; its requirements stay @Concurrent.
@tenequm
tenequm merged commit 8f95378 into main Oct 7, 2026
4 checks passed
@tenequm
tenequm deleted the fix/swift-6-4-build branch October 7, 2026 17:15
@tenequm tenequm mentioned this pull request Oct 7, 2026
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