必需库¶
这是 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-like |
其他运行时库¶
库 | 描述 | 许可证 |
---|---|---|
Boehm GC | Boehm-Demers-Weiser 保守式垃圾收集器。执行自动内存管理。 | MIT 风格 |
Libevent | 一个事件通知库。在 POSIX 平台上实现并发功能,例如 Fiber 和事件循环。在 Windows 上未使用。 |
修改后的 BSD |
compiler-rt 内置函数 | 为代码生成所需的低级例程提供优化实现,例如整数乘法。其中一些例程直接移植到 Crystal。 | MIT / UIUC |
可选标准库依赖项¶
这些库由标准库的不同部分需要,只有在明确使用时才需要。
正则表达式引擎¶
为 Regex
类实现引擎。PCRE2 支持在 Crystal 1.7 中添加,并且从 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 |