必要的函式庫¶
這是 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 系統介面 | Apache v2 和其他 |
bionic libc | Android 的 C 函式庫 | 類 BSD |
其他執行時期函式庫¶
函式庫 | 描述 | 授權條款 |
---|---|---|
Boehm GC | Boehm-Demers-Weiser 保守垃圾收集器。執行自動記憶體管理。 | MIT 風格 |
Libevent | 一個事件通知函式庫。在 POSIX 平台上實作並行功能,例如 Fiber 和事件迴圈。在 Windows 上不使用。 |
修改過的 BSD |
compiler-rt builtins | 為程式碼產生所需的低階常式提供最佳化實作,例如整數乘法。其中一些常式已直接移植到 Crystal。 | MIT / UIUC |
可選的標準函式庫相依性¶
這些函式庫是標準函式庫的不同部分所需要的,僅在明確使用時才需要。
正規表達式引擎¶
Regex
類別的引擎實作。Crystal 1.7 中新增了 PCRE2 支援,並且自 1.8 以來為預設值 (請參閱正規表達式文件)。
函式庫 | 描述 | 授權條款 |
---|---|---|
PCRE2 | Perl 相容正規表達式,版本 2。 | BSD |
PCRE | Perl 相容正規表達式。 | BSD |
大數¶
Big
型別的實作,例如 BigInt
。
函式庫 | 描述 | 授權條款 |
---|---|---|
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¶
TLS 協定實作和 OpenSSL
API 的通用加密常式。可以使用 -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 |