必需库¶
这是 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 |