[フレーム]
BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

InfoQのすべての体験をアンロックして、そのメリットを最大限に活用しましょう

ログインして、InfoQのすべての体験をアンロックしましょう!お気に入りの著者やトピックの最新情報を入手し、コンテンツと交流し、限定リソースをダウンロードできます。

ログイン
または

アカウントをお持ちでない方

登録
  • あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。
  • 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。
  • 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

Topics

地域を選ぶ

AIオールスターズ2025

"AI活用"をキーワードに「AIを使い倒し/使いこなす」企業の最前線をお届けします。

QCon San Francisco - image
QCon San Francisco 2025

Get production-proven patterns from the leaders who scaled a GenAI search platform to millions, migrated a core ML system without downtime, and architected a global streaming service from the ground up.

Early Bird ends Nov 11.

QCon AI New York - image
QCon AI New York 2025

Move beyond AI demos to real engineering impact. Discover how teams embed LLMs, govern models, and scale inference pipelines to accelerate development securely.

Early Bird ends Nov 11.

QCon London - image
QCon London 2026

Benchmark your systems against leading engineering teams. See what really works in FinOps, modern Java, and distributed data architectures to balance cost, scale, and reliability.

Early Bird ends Nov 11.

InfoQ ホームページ ニュース Swift 6が低レベルプログラミング向けのEmbedded Swiftを導入

Swift 6が低レベルプログラミング向けのEmbedded Swiftを導入

2024年9月6日 読了時間 3 分

翻訳者

原文リンク(2024年07月20日)

Swift 6で、新しいコンパイルモードが可能になるが、これは、カーネルやその他の低レベルコードと同様に、組み込み機器特有の制約に対応することを目的としている。Embedded Swiftは、ほとんどの言語を網羅するSwiftのフル機能のサブセットであり、値型や参照型、クロージャ型、オプショナル型、エラー処理、ジェネリクスなども対応している。

Embedded Swiftは、従来のCコンパイラに類似したコンパイルモデルで、コンパイラが既存のコードと簡単にリンクできるオブジェクトファイル(.o)を生成します。ライブラリやランタイムを移植する必要はありません。

Embedded Swiftは、Reflectionやany型といったランタイムサポートを必要とする言語機能を無効化する。これにより、macOSやiOSアプリに必要なランタイムを配布することなく、Swiftプログラムを実行することが可能になる。Embedded Swiftは、完全なジェネリクスの特殊化や静的リンクなどのコンパイラ技術を使用して、組み込み機器での実行に適したバイナリを生成する。

具体的には、MirrorAPI、プロトコル型の値、AnyAnyObject、メタタイプ(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社は述べている。

作者について

Sergio De Simone

もっと見るより少なく

この記事に星をつける

おすすめ度
スタイル

このコンテンツのトピックは モバイル です。

関連記事:
  • 関連記事

    • 関連スポンサーコンテンツ

特集コンテンツ一覧

InfoQ ニュースレター

毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。 サンプルを見る

We protect your privacy.

BT

AltStyle によって変換されたページ (->オリジナル) /