必要なライブラリ¶
これは、Crystalコンパイラと標準ライブラリで使用されているサードパーティライブラリのリストです。
コアランタイム依存関係¶
このセクションのライブラリは、常にCrystalのstdlibランタイムによって必要とされます。標準ライブラリを使用するCrystalプログラムのビルドまたは実行には、これらのライブラリが存在している必要があります。これらの依存関係を回避できるのは、標準ライブラリを使用しない場合(--prelude=noneコンパイラオプション)のみです。
システムライブラリ¶
主要なコンポーネントはシステムライブラリです。選択はターゲットプラットフォームに依存し、複数サポートされています。これには通常、C標準ライブラリと、libdl、libm、libpthread、libcmt、またはlibiconvなどの追加のシステムライブラリが含まれます。これらのライブラリは、Cライブラリの一部である場合もあれば、スタンドアロンライブラリである場合もあります。ほとんどのプラットフォームでは、これらのライブラリはすべてオペレーティングシステムによって提供されます。
| ライブラリ | 説明 | ライセンス |
|---|---|---|
| glibc | Linuxの標準Cライブラリ | LGPL |
| musl libc | Linuxの標準Cライブラリ | MIT |
| FreeBSD libc | FreeBSDの標準Cライブラリ | BSD |
| NetBSD libc | NetBSDの標準Cライブラリ | BSD |
| OpenBSD libc | OpenBSDの標準Cライブラリ | BSD |
| Dragonfly libc | DragonflyBSDの標準Cライブラリ | BSD |
| macOS libsystem | macOSの標準Cライブラリ | Apple |
| MSVCRT | MSVCコンパイラ(Windows)の標準Cライブラリ | |
| WASI | WebAssembly System Interface | Apache v2およびその他 |
| bionic libc | AndroidのCライブラリ | BSDライク |
その他のランタイムライブラリ¶
| ライブラリ | 説明 | ライセンス |
|---|---|---|
| Boehm GC | Boehm-Demers-Weiser保守的ガベージコレクタ。自動メモリ管理を実行します。 | MITスタイル |
| Libevent | イベント通知ライブラリ。 Fiber やPOSIXプラットフォームでのイベントループなどの並行処理機能を実装します。Windowsでは使用されません。 |
修正BSD |
| compiler-rtビルトイン | コード生成に必要な低レベルルーチン(整数乗算など)の最適化された実装を提供します。これらのルーチンのいくつかは、Crystalに直接移植されています。 | MIT / UIUC |
オプションの標準ライブラリ依存関係¶
これらのライブラリは、標準ライブラリのさまざまな部分で、明示的に使用された場合のみ必要となります。
正規表現エンジン¶
Regex クラスのエンジン実装。PCRE2のサポートはCrystal 1.7で追加され、1.8以降はデフォルトになっています(正規表現のドキュメントを参照)。
| ライブラリ | 説明 | ライセンス |
|---|---|---|
| PCRE2 | Perl互換正規表現、バージョン2。 | BSD |
| PCRE | Perl互換正規表現。 | BSD |
大きな数¶
BigIntなどのBig型のインプリメンテーション。
| ライブラリ | 説明 | ライセンス |
|---|---|---|
| GMP | GNU多倍長精度演算ライブラリ。 | LGPL v3+ / GPL v2+ |
| MPIR | GMPからフォークされた多倍長整数と有理数。Windowsで使用されます。 | GPL-3.0およびLGPL-3.0 |
国際化変換¶
これは、スタンドアロンライブラリである場合もあれば、一部のプラットフォームではシステムライブラリの一部として提供される場合もあります。-Dwithout_iconvコンパイル時フラグで無効にすることができます。システムライブラリの実装よりもスタンドアロンライブラリを使用することは、-Duse_libiconvコンパイル時フラグで強制することができます。
| ライブラリ | 説明 | ライセンス |
|---|---|---|
| libiconv (GNU) | 国際化変換ライブラリ。 | LGPL-3.0 |
TLS¶
OpenSSL APIのためのTLSプロトコル実装と汎用暗号化ルーチン。-Dwithout_openssl コンパイル時フラグで無効にすることができます。
OpenSSLとLibreSSLの両方がサポートされており、バインディングはホストシステムで使用可能なライブラリとAPIバージョンを自動的に検出します。
| ライブラリ | 説明 | ライセンス |
|---|---|---|
| OpenSSL | SSLおよびTLSプロトコルの実装 | Apache v2 (3.0+), OpenSSL / SSLeay (1.x) |
| LibreSSL | SSLおよびTLSプロトコルの実装。2014年にOpenSSLからフォークされました。 | ISC / OpenSSL / SSLeay |
その他のstdlibライブラリ¶
| ライブラリ | 説明 | ライセンス |
|---|---|---|
| LibXML2 | Gnomeプロジェクトのために開発されたXMLパーサー。XMLモジュールを実装します。 |
MIT |
| LibYAML | YAMLパーサーおよびエミッターライブラリ。YAMLモジュールを実装します。 |
MIT |
| zlib | 非可逆データ圧縮ライブラリ。 Compress モジュールを実装しています。 コンパイル時のフラグ-Dwithout_zlibで無効化できます。 |
zlib |
| LLVM | ターゲット非依存のコードジェネレータとオプティマイザ。 LLVM APIを実装しています。 |
Apache v2 ライセンス (LLVM例外付き) |
コンパイラ依存関係¶
コアランタイム依存関係に加えて、これらのライブラリはCrystalコンパイラのビルドに必要なものです。
| ライブラリ | 説明 | ライセンス |
|---|---|---|
| PCRE2 | 上記を参照。 | |
| LLVM | 上記を参照。 | Apache v2 ライセンス (LLVM例外付き) |
| libffi | 外部関数インターフェース。インタープリタでのバイナリインターフェースの実装に使用されます。コンパイル時のフラグ-Dwithout_interpreterで無効化できます。 |
MIT |