コンテンツへスキップ

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

Crystalコンパイラは、多くのプラットフォームで動作し、コンパイルできますが、すべてのプラットフォームが均等にサポートされているわけではありません。Crystalのサポートレベルは、それぞれ異なる保証を持つ3つのティアに分類されます。

プラットフォームは、「ターゲットトリプル」と呼ばれる文字列で識別されます。この文字列は、コンパイラにどのような種類の出力を作成するべきかを指示します。下の列は、対応するコンポーネントが指定されたプラットフォームで動作するかどうかを示しています。


ティア1

ティア1プラットフォームは、「動作が保証されている」と考えることができます。具体的には、次の要件をすべて満たします。

  • 公式バイナリリリースがプラットフォーム用に提供されます。
  • 自動テストが設定され、プラットフォームのテストが実行されます。
  • プラットフォームの使用およびビルド方法に関するドキュメントが提供されています。

保守されているオペレーティングシステムのバージョンのみが完全にサポートされます。古いバージョンは動作が保証されず、ティア2に分類されます。

ターゲット 説明 サポートされているバージョン コメント
aarch64-darwin Aarch64 macOS
(Apple Silicon)
11+ (テストは14のみ) テスト
ビルド
x86_64-darwin x64 macOS
(Intel)
11+
(テストは13のみ;10.7以降で動作すると予想)
テスト
ビルド
x86_64-linux-gnu x64 Linux カーネル4.14以降、GNU libc 2.26以降
(カーネル2.6.18以降で動作すると予想)
テスト
ビルド
x86_64-linux-musl x64 Linux カーネル4.14以降、MUSL libc 1.2以降
(カーネル2.6.18以降で動作すると予想)
テスト
ビルド

ティア2

ティア2プラットフォームは、「動作すると予想される」と考えることができます。

ティア1の要件は部分的に満たされている場合がありますが、何らかの理由で確実な保証ができない場合があります。「コメント」列に詳細が記載されています。

ターゲット 説明 サポートされているバージョン コメント
aarch64-linux-gnu Aarch64 Linux GNU libc 2.26以降 テスト
ビルド
aarch64-linux-musl Aarch64 Linux MUSL libc 1.2以降 テスト
ビルド
arm-linux-gnueabihf Aarch32 Linux
(ハードフロート)
GNU libc 2.26以降 テスト
ビルド
i386-linux-gnu x86 Linux カーネル4.14以降、GNU libc 2.26以降
(カーネル2.6.18以降で動作すると予想)
テスト
ビルド
i386-linux-musl x86 Linux カーネル4.14以降、MUSL libc 1.2以降
(カーネル2.6.18以降で動作すると予想)
テスト
ビルド
x86_64-openbsd x64 OpenBSD 6+ テスト
ビルド
x86_64-freebsd x64 FreeBSD 12+ テスト
ビルド

ティア3

ティア3プラットフォームは、「部分的に動作する」と考えることができます。

Crystalコードベースはこれらのプラットフォームをサポートしていますが、いくつかの大きな制限があります。最も典型的なのは、標準ライブラリの一部が完全にサポートされていないことです。

ターゲット 説明 サポートされているバージョン コメント
x86_64-windows-msvc x64 Windows (MSVC) 7+ テスト
ビルド
aarch64-windows-msvc ARM64 Windows (MSVC) 11+ テスト
ビルド
aarch64-linux-android aarch64 Android Bionic Cランタイム、APIレベル24以降 テスト
ビルド
x86_64-unknown-dragonfly x64 DragonFlyBSD テスト
ビルド
x86_64-unknown-netbsd x64 NetBSD テスト
ビルド
wasm32-unknown-wasi WebAssembly (WASI libc) Wasmtime 2以降 テスト
x86_64-solaris Solaris/illumos テスト
ビルド

コンパイラサポート

このコンパイラはこれらのプラットフォームをターゲットにできますが、標準ライブラリはサポートされていません(つまり、`--prelude=empty` を使用してコンパイルする必要があります)。

ターゲット 説明 サポートされているバージョン コメント
avr-unknown-unknown AVR(Atmel)CPUアーキテクチャ(Arduino)
このターゲットには、CPUモデルの宣言が必要です(例:`--mcpu=atmega328`)

凡例

  • は、自動テストまたはビルドが利用できないことを意味します。
  • は、自動テストまたはビルドが利用可能であることを意味します。
  • は、自動テストは利用可能ですが、実装が不完全であることを意味します。

注記

Rustのプラットフォームサポートに関する非常に明確なドキュメントを作成してくれたRustチームに多大な感謝を申し上げます。これは、私たちのドキュメント作成のインスピレーションとなりました。