Skip to content
Tech AI Wire

Swift 6.4公開、deferでのasyncとSwift Buildの既定化

Swift 6.4は、deferブロック内の非同期コード、モジュールセレクター、40倍速いWebAssemblyブリッジを導入し、パッケージマネージャーではSwift Buildが既定になりました。

著者 Tech AI Wire Team

3 分で読めます

グレーのスタジオ背景に置かれた、閉じた状態のスペースブラックのMacBook Pro。天板にAppleのロゴがある。

数字で見る

faster WebAssembly bridging through JavaScriptKit
40x
platforms where Swift Build is now the package manager default
3
the Android toolchain Swift Build now supports
NDK 30

Swift 6.4が2026年9月15日に公開されました。AppleがXcode 27をiOS 27とともに出荷した翌日です。Swift.orgの告知は、目玉機能というより、これまで面倒だったことが面倒でなくなったという長い一覧のように読めます。日々開発する人にとっては、そのほうが良いリリースです。

重みのある変更は2つです。非同期コードがdeferブロックの中で動くようになりました。そして、オープンソースのビルドエンジンであるSwift Buildが、Linux、macOS、WindowsのSwift Package Managerで既定になりました。

言語の変更

deferブロックは、関数が返るときも例外を投げるときも、終了時に後片付けを実行します。これまではawaitを含められず、非同期の後片付けには回り道が必要でした。提案SE-0493がこの制限を取り除き、Swift.orgは完了が保証されると述べています。

残りの言語面の作業は、儀式的な記述を読み書きしなくて済むようにするものです。

提案内容
SE-0521オプショナルの位置でsomeanyの型に括弧が不要に
SE-0491モジュールセレクター:::でシンボルがどのモジュール由来かを指定
SE-0522自分のコードからコンパイラ警告を出す@diagnose属性
SE-0493defer内でのawait
SE-0504ある領域をキャンセルから守るwithTaskCancellationShield
SE-0517、SE-0527コピー不可の要素のためのコンテナUniqueBoxUniqueArray
SE-0516コピー不可の型に対してfor-inを使えるようにするIterableプロトコル

コピー不可の型には、欠けていたものも加わります。EquatableComparableHashableに準拠できるようになりました。コピー不可の型とは、コンパイラが複製を許さない型で、値が固有の資源を表す場面で使われます。比較とハッシュができるようになったことで、通常のコードで使いにくかった穴が埋まります。

ツールチェーンの変更

Swift Buildが既定になることは、Appleのプラットフォームの外でも意味を持ちます。同じエンジンがLinuxとWindowsでのパッケージビルドを動かすようになり、このリリースはAndroid向けの現行ネイティブツールキットであるNDK 30を通じたAndroid対応を追加しています。

WebAssemblyの話も進みました。Swift.orgによれば、SwiftからブラウザーのJavaScriptを呼び出すライブラリJavaScriptKitによるブリッジは40倍速くなりました。LinuxとWindowsのデバッグビルドは小さくなり、デバッグ用シンボルを収めるdSYMバンドルも同様です。

Subprocess 1.0は安定版になり、複数プラットフォームで使えます。他のプロセスを起動してやり取りするためのライブラリで、安定したことで、サーバー側やツール用のコードは独自のラッパーを抱え続けなくてよくなります。

もう1つはアプリ開発者ではなくコンプライアンス担当向けです。提案SE-0509により、パッケージマネージャーがSPDXまたはCycloneDX形式でソフトウェア部品表を生成できます。部品表とは、ビルドに含まれるすべての依存関係を機械可読で並べた一覧で、規制のある買い手はこれをますます求めています。

開発者にとっての意味

まずdeferからです。deferブロックから起動したTaskの中で後片付けをしている箇所をコードベースで探してください。すべての終了経路で非同期のcloseを実行するためだけに存在するdo-catchの構造も探してください。それらはSE-0493が不要にする回り道で、1つ取り除くごとに、起こりえなくなる不具合の種類が1つ増えます。

次に、Swift Buildの変更をビルドシステムの移行として扱ってください。実際そういうものだからです。Linuxでの挙動がmacOSと違っていたパッケージがあるなら、今すぐ再ビルドして、見たことのない警告を探してください。足元のエンジンが変わったのであり、既定の切り替えは、静かにプラットフォーム依存だった前提が表に出る瞬間です。

WebAssemblyとAndroidの追加は、あとで参照するために取っておく項目です。ブリッジの40倍の改善は、ブラウザーで出荷するのが妥当な範囲を変えますが、すでに試す寸前だった人に限られます。NDK 30によるAndroid対応も同じです。今週移植を始める理由にはなりませんが、移植が可能になった理由にはなります。

最後に、社内の誰かが部品表を求めてきたことがあるなら、SE-0509が無料で用意してくれます。一度生成し、依存関係の一覧が自分の出荷物と一致するか確かめ、リリースの工程に加えてください。半日で済み、放っておけば表計算の形で届く質問への答えになります。

出典

  1. Swift 6.4 Released - Swift.org
  2. Swift 6.4: What's New in Concurrency - SwiftLee

関連記事

A Linux desktop on Apple hardware, with a terminal showing lscpu reporting an aarch64 architecture and an Apple M3 model name.
Dev Stack

Asahi Linux、M3シリーズのMacを正式サポート

Asahi LinuxがM3、M3 Pro、M3 Maxのサポートをインストーラに取り込みました。Wi-Fi、USB 3、AV1デコードは動作します。スリープ、HDMI、高速な3Dは未対応です。