Swift Digest
Blog | Swift.org Blog↗

Swift 6.4 リリース

Swift 6.4 Released

このダイジェストはClaude Opus 4.7 / 4.8によって生成されたものです(License)。原文はこちら↗。

この記事の要点

主な変更点

よりシンプルで明快なコード

日々のプログラミングを簡潔にする言語面の改善が入りました。いずれも対応するProposalダイジェストがあります。

defer ブロック内の非同期呼び出しとキャンセルシールドを組み合わせると、関数がどのように終了してもクリーンアップが確実に走るようにできます。

func processFile(at url: URL) async throws {
    let handle = try FileHandle(forReadingFrom: url)

    defer {
        // flushMetrics is a network call, so it can suspend after cancellation
        // is requested; the shield ensures it runs to completion and isn't
        // included in cancellation.
        await withTaskCancellationShield {
            await flushMetrics(for: url)
            try? handle.close()
        }
    }

    try await processContents(of: handle)
}

コアライブラリの拡充

Foundation と標準ライブラリの改善により、既存の型でモダンな API を使いやすくなりました。

let result = try await Subprocess.run(
  .name("ls"),
  arguments: ["-la"],
  output: .string(limit: 4096)
)
print(result.standardOutput)

Swift Testing まわりでは、既存プロジェクトの移行がしやすくなりました。Swift Testing のテスト内で XCTAssert を、XCTest 内で #expect を安全に使えるようになり(ST-0021)、失敗した期待に表示される値を CustomTestReflectable プロトコルでカスタマイズできます(ST-0022)。swift test ではテストケースを繰り返し実行して原因の切り分けや時間短縮ができ(ST-0024)、Apple プラットフォームでは Transferable プロトコルに適合する添付を記録できます(ST-0023)。

また、Swift にドキュメントサイトができ、標準ライブラリのドキュメント内容がオープンソースになりました。

ビルド・デバッグ・IDE サポート

相互運用とプラットフォームサポートの深化

言語相互運用がさらに深まりました。

プラットフォームサポートも深まりました。

安全性を保ったまま高速なコード

Span・non-copyable 型・InlineArray に関する以前からの取り組みを引き継ぎ、メモリ安全性を保ったまま不要なコピーを避けやすくなりました。いずれも対応するProposalダイジェストがあります。

Swift 利用者への影響

関連 Proposal・リンク