- 言語、標準ライブラリ、ビルドシステム、プラットフォームサポート全般を拡張し、開発者体験を改善
- C相互運用性の強化、Android公式SDKの追加、組み込み環境の改善、DocCドキュメントツールの拡張が主な変更点
- Swift Package Managerは統合ビルドエンジンと事前ビルド済みSwift Syntaxサポートを通じて、クロスプラットフォームビルドの一貫性を高める
- Swift Testingは、警告レベルの問題記録、テストのキャンセル、画像添付などの新機能を追加し、テストの柔軟性を強化
- Android SDKの公式リリースにより、Swiftのクロスプラットフォーム開発領域が拡大し、Kotlin/Javaアプリとの統合が可能に
Swift 6.3 の主なアップデート
- Swift 6.3 は、言語、標準ライブラリ、ビルドシステム、プラットフォームサポート全般にわたって拡張された機能を提供
- C相互運用性の強化、Android公式SDKの追加、組み込み環境の改善、ドキュメントツール DocC の拡張が中核的な変化
- 開発者体験の向上とクロスプラットフォーム開発の統合を目標とする
言語と標準ライブラリ
-
C相互運用性
- 新しい
@c 属性により、Swift関数やenumをCコードに公開可能
@c(MyLibrary_callFromC) 形式でユーザー定義のC宣言名を指定できる
@c と @implementation を併用すると、SwiftでCヘッダーに宣言された関数を実装可能
- この組み合わせでは、Swiftが既存のC宣言との一致を検証する
-
モジュール名セレクタ(Module Name Selectors)
- 同じ名前のAPIを複数のモジュールから取り込む場合、
ModuleA::getValue() 形式でモジュールを明示した呼び出しが可能
Swift::Task 構文により、並行性(concurrency)および文字列処理APIにアクセス可能
-
ライブラリAPIの性能制御
- @specialize: ジェネリックAPIの特定の型に対する事前特殊化実装を提供
- @inline(always): インライン化を強制し、呼び出し箇所で関数本体を展開
- @export(implementation): ABI安定ライブラリで関数実装を公開し、追加の最適化を許可
- 関連提案は Swift Evolution ダッシュボードで確認可能
パッケージとビルドの改善
- Swift Package Manager にSwift Build 統合プレビューが含まれ、すべてのプラットフォームで一貫したビルド体験を提供
- 統合ビルドエンジンを通じてクロスプラットフォーム開発の一貫性を強化
- ユーザーは自分のパッケージで直接テストし、問題を報告できる
- SwiftPM 6.3 の主な改善点
- Prebuilt Swift Syntax サポート: マクロ専用ライブラリで事前ビルド済みの swift-syntax バイナリを使用可能
- 柔軟なドキュメント継承制御: シンボルグラフを生成する命令型プラグインで継承ドキュメントを含めるかどうかを制御
- パッケージ特性の探索機能:
swift package show-traits コマンドでパッケージの対応特性を確認可能
- 詳細は SwiftPM 6.3 リリースノートに含まれる
コアライブラリの更新
-
Swift Testing
- 警告レベルの問題記録:
Issue.record(..., severity: .warning) により、テスト失敗にせず警告のみを表示
- テストキャンセル機能:
try Test.cancel() で実行中のテストとその下位タスクを中断可能
- 画像添付のサポート: Apple および Windows プラットフォームでテスト中に画像を添付可能
- 関連提案: ST-0012, ST-0013, ST-0014, ST-0015, ST-0016, ST-0017, ST-0020
-
DocC
- Markdown出力サポート:
--enable-experimental-markdown-output オプションで Markdown 文書を生成
- ページ単位の静的HTMLコンテンツ: `` 内に要約HTMLを挿入し、検索エンジン対応とアクセシビリティを向上
- コードブロック注釈の拡張:
nocopy, highlight, showLineNumbers, wrap などの新しいフォーマットオプションを追加
--enable-experimental-code-block-annotations オプションで有効化可能
プラットフォームと環境
-
Embedded Swift
- C相互運用性の強化、デバッグ改善、リンケージモデル完成段階の前進など、多数の改善を含む
- 詳細は “Embedded Swift Improvements coming in Swift 6.3” ブログで確認可能
-
Android
- 公式 Swift SDK for Android を初めてリリース
- Swift によるネイティブAndroidアプリ開発、SwiftパッケージのAndroidビルドをサポート
- Swift Java および Swift Java JNI Core を通じて Kotlin/Java アプリと統合可能
- Swift のクロスプラットフォーム開発拡張に向けた重要なマイルストーンと評価される
- スタートガイドは “Getting Started with the Swift SDK for Android” 文書で提供
次のステップ
- Swift 6.3 ツールチェーンは Install Swift ページからインストール可能
- 開発者はすぐに新機能を試し、フィードバックを提供できる
1件のコメント
Hacker Newsの意見
Swiftでこういう素晴らしいリリースが出るのを見るのはうれしい
v3以降は使っていないが、2015〜17年ごろにはSwiftがPythonを置き換える可能性もあった
シンプルで高速で、C/C++エコシステムとも相性が良かったからだ。IBMがサーバー側を後押ししていた時期には、本当に可能性があった
しかしAppleはコミュニティを十分に引き込めず、結局SwiftはApple専用言語のままになってしまった。今では複雑さもC++並みに上がっている
Swiftは好きだが、Appleエコシステムの外ではまだ臨界点を超えられていない感じがする。結局去年TypeScriptに移行した
何よりAppleというゲートキーパーをスタックに自発的に組み込みたいと思う人はほとんどいないだろう
TensorFlow Swiftプロジェクト
CircuitPythonも組み込みプロトタイピングに有用だった。Swiftはこうした領域をうまく取れなかった
しかもSwiftがLinuxに来たのは2016年、Windowsは2020年、FreeBSDはようやく2025年になってからだ
2010年代半ばにはGo、Julia、Rust、TypeScript、Solidityなど新しい言語が次々に登場し、みんな一つか二つを学ぶ余裕しかなかった
Swiftがスタック全体をカバーする言語になってほしかったが、現実はそうではない
Appleが機会を無駄にしたように感じる
たとえばClearSurgeryは、Linux上のリアルタイムコンポーネントまで含めてすべてSwiftで書かれている
先週、xv6-riscvオペレーティングシステムをZig、Nim、LISP、Swiftに移植した
Embedded Swiftの進歩のおかげで、生産性の高い言語だと感じた。メモリアクセスを包む抽象化もきれいだった
ただしコンパイル速度があまりにも遅く、結局Nimに集中することになった
Swiftのコンパイル速度改善に触れられていないのが残念だ
Rustより遅いコンパイルは開発体験を大きく損なう
Goの高速ビルドに慣れているなら、Swiftは本当に反復開発が苦痛だ。言語自体は素晴らしいが、フィードバックループがあまりにも遅い
Swift 6.3ではAndroid向け公式SDKが初めて含まれた
Windowsには5年前のブログ記事、
LinuxにはGNOME向けガイドがある
昔のOpenSTEPのように、一度の開発で複数プラットフォームに配布できたらよいのだが
noncopyable型の改善が今回のリリースで最も過小評価されている部分だ
これでSwiftで固有の所有権をモデリングすることが、ずっと現実的になった
Swift 6.3の
@c属性で、Swift関数をCコードに公開できるようになったそれなのに、なぜこれがこんなに遅く追加されたのか疑問だ。C++相互運用を先に入れたのは奇妙な優先順位に思える
一方でSwiftをCに公開するとFFIのスパゲッティが生まれ、enum・所有権・null処理などでABIバグが起きやすい
特にクロージャが混ざると呼び出し規約がずれて、デバッグに一日つぶれることもある
以前SwiftでCプログラム向けのdylibを作るときには
@cdeclを使う必要があったが、これが正式サポートになってうれしいマーケティング以外の実際の変更点はCHANGELOGと
Swift Evolution提案一覧で確認できる
6.3は主に統合作業中心のリリースだった — stdlib、C/C++、swift-java相互運用、ビルドシステムなど
SPMはXcodeの機能を徐々に取り込みつつあり、新しいswift-buildエンジンとprebuiltモジュールも実験中だ
しかしSPMとXcodeの相互作用は依然として不安定で、内部の複雑さは増している
言語自体の進歩は静かだが、ライフタイム制御や並行性の色付けなど深い構造作業が進んでいる
複数のOS・デバイス・CI環境が絡み合っているため、Swift開発者は常に変化の中でバランスを取らなければならない状況にある
swift-buildがデフォルトになる予定だ公式フォーラム投稿によると、
すでにXcodeが内部的に使用しているが、性能問題が深刻だという
関連議論もある。
SPMとXcodeが同じエンジンを使えば改善するかもしれないが、大きな期待はしていない
最新のSwiftバージョンでツールチェーンがどうなっているのか気になる。Swift LintとSwift Formatがサポートされているのか知りたい
現代的な言語なら組み込みフォーマッタと推奨Lintルールがあるべきだ。言語だけでなくエコシステム全体が重要だ
swift formatとswift format lintですぐ使える