Skip to content

refactor: Swift 6 言語モードへ移行(#16 前段)#35

Merged
sasagar merged 1 commit into
devfrom
feature/swift6-language-mode
Jul 2, 2026
Merged

refactor: Swift 6 言語モードへ移行(#16 前段)#35
sasagar merged 1 commit into
devfrom
feature/swift6-language-mode

Conversation

@sasagar

@sasagar sasagar commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

背景

#16「TCA 導入 / Swift 6 言語モードへ移行」のうち、まず Swift 6 移行を実施。CLAUDE.md の方針「現状は spike として Swift 5 言語モード…落ち着いたら .v6 へ」に沿う。移行は 2 パートに分かれるので、低リスクで検証可能な言語モード移行を先行させ、TCA 化(UI 層リライト)は #16 の後段として継続する。

変更点

  • Package.swift: 全ターゲット(engine / store / 各 test)を .swiftLanguageMode(.v6) に。
  • app/project.yml: SWIFT_VERSION6.0 に。
  • プロセス実行の並行 drain で captured var を変異していた 3 箇所(ProcessRunner / GitRunner / GitHubEngine.run)を、ロック付き SendableDataBox 経由に統一し #SendableClosureCaptures 警告を解消(happens-before はロックで保証)。
  • CLAUDE.md の方針メモを Swift 6 済みに更新。

検証

  • エンジン/ストア: swift build 警告 0 / swift test 29 passed
  • アプリ: xcodebuild … clean build 成功。concurrency 警告 0
    • 既存の NSSplitViewDelegate シグネチャ警告 3 件(PaneTiling.swift)のみ残存。これは言語モードに依存しない既存の警告で本移行とは無関係(別途対応)。

補足

  • 言語モードはモジュール単位なので、アプリ(v6)↔ パッケージ(v6)↔ GRDB(外部)は問題なく連携。
  • アプリ側の model は元々 @MainActor @Observable で書かれており、strict concurrency でも追加修正ゼロで通った。
  • .xcodeproj は生成物(git 管理外)。コミットに含むのは project.yml の 1 行のみ。

#16 の前段。CLAUDE.md の「落ち着いたら .v6 へ」に沿って strict concurrency へ。

- Package の全ターゲットを .swiftLanguageMode(.v6) に。
- アプリの SWIFT_VERSION を 6.0 に。
- プロセス実行の並行 drain で captured var を変異していた 3 箇所(ProcessRunner /
  GitRunner / GitHubEngine.run)を、ロック付き Sendable な DataBox 経由に統一して
  #SendableClosureCaptures 警告を解消。
- エンジン/ストア: 警告0・swift test 29 passed。アプリ: concurrency 警告0
  (既存の NSSplitViewDelegate シグネチャ警告のみ・本移行とは無関係)。

TCA 化(UI 層のリライト)は #16 の後段として継続。
@sasagar sasagar marked this pull request as ready for review July 2, 2026 10:24
@sasagar sasagar merged commit cbcf4de into dev Jul 2, 2026
1 check passed
@sasagar sasagar deleted the feature/swift6-language-mode branch July 2, 2026 10:25
sasagar added a commit that referenced this pull request Jul 2, 2026
#16 の前段。CLAUDE.md の「落ち着いたら .v6 へ」に沿って strict concurrency へ。

- Package の全ターゲットを .swiftLanguageMode(.v6) に。
- アプリの SWIFT_VERSION を 6.0 に。
- プロセス実行の並行 drain で captured var を変異していた 3 箇所(ProcessRunner /
  GitRunner / GitHubEngine.run)を、ロック付き Sendable な DataBox 経由に統一して
  #SendableClosureCaptures 警告を解消。
- エンジン/ストア: 警告0・swift test 29 passed。アプリ: concurrency 警告0
  (既存の NSSplitViewDelegate シグネチャ警告のみ・本移行とは無関係)。

TCA 化(UI 層のリライト)は #16 の後段として継続。
sasagar added a commit that referenced this pull request Jul 2, 2026
#16 の前段。CLAUDE.md の「落ち着いたら .v6 へ」に沿って strict concurrency へ。

- Package の全ターゲットを .swiftLanguageMode(.v6) に。
- アプリの SWIFT_VERSION を 6.0 に。
- プロセス実行の並行 drain で captured var を変異していた 3 箇所(ProcessRunner /
  GitRunner / GitHubEngine.run)を、ロック付き Sendable な DataBox 経由に統一して
  #SendableClosureCaptures 警告を解消。
- エンジン/ストア: 警告0・swift test 29 passed。アプリ: concurrency 警告0
  (既存の NSSplitViewDelegate シグネチャ警告のみ・本移行とは無関係)。

TCA 化(UI 層のリライト)は #16 の後段として継続。
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