7 ポイント 投稿者 GN⁺ 2024-09-18 | 2件のコメント | WhatsAppで共有
  • このリリースでは、Swift をより多くのプラットフォームとドメインへ拡張
  • Swift はアプリ開発言語としてよく知られているが、ライブラリ、インターネット規模のサービス、性能が重要なコードなど、さまざまな用途にも優れている
  • Swift 6 は、新しい低レベルプログラミング機能、Embedded Swift 言語サブセット、拡張された Linux および Windows サポート、新しいクロスプラットフォーム API などによってさらに拡張された

言語と標準ライブラリ

並行性

  • Swift 6 は、新しい言語モードを通じて、並行コードにおけるデータ競合を防止する安全性を提供
  • -strict-concurrency=complete コンパイラフラグにより、データ競合安全性の警告を提供
  • 新しい同期ライブラリに低レベル並行 API を含む

Typed throws

  • 関数が投げるエラー型をシグネチャに明示できるようになった
  • ジェネリックコードでエラー型を伝播したり、メモリ割り当てが制限された環境で有用

所有権

  • Swift 5.9 で導入された非コピー型をジェネリックシステムと統合し、性能を向上
  • ~Copyable 構文を使ってリソースをモデル化し、性能を最適化

C++ 相互運用性

  • Swift 6 は C++ の move-only 型、仮想メソッド、デフォルト引数などをサポート
  • SWIFT_NONCOPYABLE アノテーションにより、C++ 型を非コピー型として公開可能

Embedded Swift

  • 組み込みソフトウェア開発向けの言語サブセットとコンパイルモードを含む
  • ARM および RISC-V のベアメタルターゲットをサポート

128ビット整数

  • 符号付きおよび符号なし 128 ビット整数型を追加

生産性向上

  • count(where:) など、生産性向上のための複数の機能を導入

デバッグ

@DebugDescription によるカスタム LLDB サマリー

  • @DebugDescription マクロを使用して、LLDB でオブジェクトを表示する方法をカスタマイズ可能

明示的モジュールによる起動性能向上

  • 明示的モジュールビルドを使用して、デバッガの起動性能を大幅に向上

ライブラリ

Foundation

  • すべてのプラットフォームで Foundation の実装を統合
  • macOS と iOS で使われていた Swift 実装を Linux と Windows に拡張

Swift Testing

  • Swift Testing という新しいテストライブラリを導入
  • マクロを使ってテストの記述と整理を支援

プラットフォームサポート

Linux 向け完全静的 SDK

  • Linux 向けに完全静的リンク実行ファイルをビルド可能

新しい Linux ディストリビューション

  • Debian、Fedora、Ubuntu 24.04 の公式サポートを追加

Windows ビルド性能

  • arm64 アーキテクチャ向けの事前ビルド済みツールチェーンを提供
  • Swift パッケージマネージャは Windows でデフォルトでビルドを並列化

次のステップ

Swift 6 をダウンロード

  • Swift.org/install で公式 Swift 6 ツールチェーンをインストール可能

Swift を始める

  • Swift プログラミング言語の書籍が、最新の Swift 6 構文と機能を反映するよう更新された

パッケージエコシステムを探る

  • Swift.org/packages でさまざまなパッケージを探索できる

参加する

  • Swift 6 に関するフィードバックと経験を共有することで、言語、ツール、パッケージエコシステム、コミュニティの今後の発展に貢献できる

GN⁺ のまとめ

  • Swift 6 は、さまざまなプラットフォームとドメインへ拡張された主要リリース
  • 並行性、C++ 相互運用性、Embedded Swift など、多くの新機能を含む
  • Swift Testing のような新しいライブラリと生産性向上機能を導入
  • Linux と Windows のサポートを拡張し、性能を向上
  • Swift 6 は開発者により多くの可能性と効率性を提供する

2件のコメント

 
GN⁺ 2024-09-18
Hacker Newsの意見
  • Swiftはガバナンスに内在する対立のせいで、ゆっくりと死に向かっている

    • Swift Working Group™オープンソースコミュニティとAppleという企業の間に対立がある
    • 給与の大半をAppleが支払っているため、Appleの影響力の方が大きい
    • ハードコードされたコンパイラ例外のような技術的負債が、コンパイラのコードベースに恒久的に残っている
    • AppleはSwiftUIの文法をきれいに見せるために、半完成の概念を議論なしで押し通している
    • 依然として驚くほど優れた言語だが、Appleが手放さない限り、今後10年をうまく生き残るのは難しそうだ
  • Swiftを新しく学んでいて、今のところは悪くないと思っている

    • SwiftUIを使うと、"コンパイル失敗: コンパイラはこの式を妥当な時間内に型チェックできません; 式を個別のサブ式に分割してみてください" というエラーが頻繁に出る
    • コンパイラが助けを求めてくるのは衝撃的だ
  • 安全な並行性と型付きthrowsのおかげで、Swiftはより親しみやすいRustのように見え始めている

    • パッケージのエコシステムが小さいため、日常的には使わないだろうと思う
    • クロスプラットフォームなFoundationがこれを改善する方向に進むことを期待している
  • Swift 6は、バッテリー同梱型のクロスプラットフォーム開発における大きな飛躍だ

    • Foundationが多くのものを標準で提供しているため、大きな利点になっている
    • Swift 6は低レベルの改善とクロスプラットフォーム機能が十分にあり、長期的にはC、C++、Rust、Zigなどを置き換えようとする試みに見える
  • 最近SwiftとSwiftUIを学び始めたが、この言語が複雑なことに驚いている

    • 特にリアクティブなインスタンス変数に関して複雑だ
    • @observableObject のような概念が理解できない
    • やり方がいくつもあるので、結局は動くまで試している
  • SwiftはmacOS専用にとどまると思っていたが、とても興味深い

    • UbuntuパッケージのSwiftコンパイラをDebian向けに変換する際に問題があった
    • ほとんどの機能は動くが、sigtermシグナルのような単純なものは動かない
    • Swiftは素晴らしい言語で、今日最も進歩していてスマートな言語だと思う
    • SwiftUIの実装方法を見ると驚異的だ
    • この言語は使いやすく、開発者の実際の利用を考えた高度な機能やアイデアに満ちている
    • しかし、コンパイラのエラーメッセージとドキュメントはとても不親切だ
    • ほとんどのライブラリはまだLinuxではうまく動かないが、安全性、速度、開発の楽しさのバランスを取れれば未来は明るい
  • Swiftは何をしたいのかを決めて、それを貫くべきだ

    • 文法シュガーや半完成の概念が多すぎる
  • SwiftGodotを試したが、ゲーム開発にSwiftを使うのはC#のGC遅延より興味深い

    • まだWindows開発ライブラリの共有をサポートしていない
    • コンパイル時間が長い
    • 変更ログにはWindowsでのマルチスレッドSwiftパッケージマネージャ改善が言及されている
  • 段階的に移行できるのはとても良い

    • Swift-6モードへの移行は、データ競合の安全性チェックも含めて負担が大きい可能性がある
    • 新しいツールを使える一方で、5.10バージョンの言語を使い続けることもできる
    • 同じパッケージを2つの言語モードでビルドできるため、ライブラリはバージョンアップしながら、まだ準備できていないクライアントもサポートできる
  • Swift言語は怪物になってしまった

 
bus710 2024-09-19

Swift という素晴らしい言語を始めるには、やや高価な Apple のエコシステムを導入せざるを得ないことが、開発者にとって決して小さくない壁になっているように思います。