Skip to content

Normalize Swift toolchain and use raw identifiers for test names - #4

Merged
RISCfuture merged 1 commit into
mainfrom
swift-6.3-raw-identifiers
Sep 4, 2026
Merged

RISCfuture merged 1 commit into
mainfrom
swift-6.3-raw-identifiers

Conversation

@RISCfuture

Copy link
Copy Markdown
Contributor

Toolchain

Package.swift now hoists all six upcoming features into a single upcomingFeatures array that the generate-games target adopts:

  • NonisolatedNonsendingByDefault, InferIsolatedConformances (already present)
  • ImmutableWeakCaptures, MemberImportVisibility, ExistentialAny, InternalImportsByDefault (new)

Tools-version stays 6.3 and swiftLanguageModes: [.v6], which is right for a build tool that only this site consumes — there are no downstream packages on an older toolchain.

InternalImportsByDefault produced zero fallout here: the executable target has no public API, so no import needed promoting to public import. The whole source diff is a single any Encoder fix-it applied by swift package migrate --to-feature ExistentialAny.

CI

One toolchain everywhere — Swift 6.3 on macos-26:

  • xcode-version: "26.4" → "latest-stable" in ci.yml (build + documentation jobs) and periphery.yml, so the pin does not rot on the next Xcode release.
  • The Linux swift-format job's container moves from swift:latest to swift:6.3, matching the macOS legs instead of floating.

SwiftyLab/setup-swift@latest was already in use throughout.

Test names

No changes — this package has no test target, so there were no Swift Testing display names to convert to SE-0451 raw identifiers.

Verification (local, Swift 6.3.3 / Xcode 26.6)

  • swift package dump-package — OK
  • swift build from a clean .build — zero warnings, zero errors
  • swift format lint --strict -r . (against the shared gist config CI downloads) — clean
  • swiftlint --strict — 0 violations in 6 files
  • actionlint on both touched workflows — clean
  • yamllint — only the pre-existing long-line warning on the wget command in ci.yml

For reviewers

  • .github/workflows/ci.yml line 48: dropping swift:latest for swift:6.3 means the formatting job no longer silently drifts to a newer toolchain than the build jobs. It will need a bump when Swift 6.4 lands.
  • Only the GameGenerator/ package is touched; the rest of the Fourtiles site is untouched.

🤖 Generated with Claude Code

https://claude.ai/code/session_01EtA5RwfPWtcxu2NfAHfjAr

The shared `upcomingFeatures` array turns on ImmutableWeakCaptures,
MemberImportVisibility, ExistentialAny, and InternalImportsByDefault
alongside the two approachable-concurrency flags, and the executable
target adopts it. Tools-version stays at 6.3 with `swiftLanguageModes:
[.v6]`, since this package is a build tool for the site rather than a
published library and has no older-toolchain consumers to support.
InternalImportsByDefault produced no fallout — the target exposes no
public API — leaving one `any Encoder` fix-it from the ExistentialAny
migrator as the only source change. CI pins one toolchain everywhere:
Swift 6.3 on macos-26 with an unpinned `latest-stable` Xcode, and the
Linux swift-format job runs in `swift:6.3`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EtA5RwfPWtcxu2NfAHfjAr
@RISCfuture
RISCfuture merged commit c61b9e9 into main Sep 4, 2026
5 checks passed
@RISCfuture
RISCfuture deleted the swift-6.3-raw-identifiers branch September 4, 2026 17:14
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