InfoQ ホームページ ニュース Swift 6が低レベルプログラミング向けのEmbedded Swiftを導入
Swift 6が低レベルプログラミング向けのEmbedded Swiftを導入
2024年9月6日 読了時間 3 分
作者:
翻訳者
Swift 6で、新しいコンパイルモードが可能になるが、これは、カーネルやその他の低レベルコードと同様に、組み込み機器特有の制約に対応することを目的としている。Embedded Swiftは、ほとんどの言語を網羅するSwiftのフル機能のサブセットであり、値型や参照型、クロージャ型、オプショナル型、エラー処理、ジェネリクスなども対応している。
Embedded Swiftは、従来のCコンパイラに類似したコンパイルモデルで、コンパイラが既存のコードと簡単にリンクできるオブジェクトファイル(.o)を生成します。ライブラリやランタイムを移植する必要はありません。
Embedded Swiftは、Reflectionやany型といったランタイムサポートを必要とする言語機能を無効化する。これにより、macOSやiOSアプリに必要なランタイムを配布することなく、Swiftプログラムを実行することが可能になる。Embedded Swiftは、完全なジェネリクスの特殊化や静的リンクなどのコンパイラ技術を使用して、組み込み機器での実行に適したバイナリを生成する。
具体的には、MirrorAPI、プロトコル型の値、Anyや AnyObject、メタタイプ(let t = SomeClass.Typeまたはtype(of: value))、およびany型の文字列化(Reflectionを使用して実現するもの)はサポートされていない。Swift Concurrencyもサポートされていないが、現在開発中だ。
Apple社によると、言語に対するこうした制限で、表現力とパワーは低下しないとのことだ。
いくつかの言語機能をオフにしているにもかかわらず、Embedded Swiftのサブセットは「フル」Swiftに非常に近く感じられ、慣用的で読みやすいSwiftコードを簡単に書き続けられるようになります。
Apple社によると、Embedded Swiftを使うことで、Playdateのような小さなコンソールで実行できる、バイナリサイズがわずか数KBのゲームを作ることが可能になる。同様に、Embedded Swiftは、産業用アプリケーションの構築において人気が高い多種多様なARMやRISC-Vマイコンをターゲットにできる。
余談だが、Apple社自身でもハードウェアの重要なコンポーネントにEmbedded Swiftを使っている。
Apple Secure Enclave Processorは、Embedded Swiftを使用しています。Secure Enclaveは、メインプロセッサーとは分離された独立したサブシステムで、機密データを安全に保つことに特化しています。
Embedded SwiftモードでSwiftコードをビルドするには、コンパイラにtarget triple、-enable-experimental-feature Embeddedフラグ、ソースファイルのセットを以下のように入力する。
$ swiftc -target armv6m-none-none-eabi -enable-experimental-feature Embedded -wmo input1.swift input2.swift ... -c -o output.o 上記の例では、対象の特定ハードウェア用に、デバイスベンダーによって提供される C または C++ SDK ライブラリをリンクすることが通例だという事実を無視している。
macOS CLI プログラムの構築にも Embedded Swift が使用できる。
xcrun swiftc hello.swift -enable-experimental-feature Embedded -wmo 現時点では、Embedded Swiftは実験段階で変更の可能性があるため、プレビューツールチェーンを使用するのが最善だ。現在、ARMチップとRISC-Vチップで32ビットと64ビットの両方がサポートされているが、将来的には新たな命令セットが追加される予定だとApple社は述べている。
-
関連記事
-
関連スポンサーコンテンツ
特集コンテンツ一覧
InfoQ ニュースレター
毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。 サンプルを見る