跳至内容

必需库

这是 Crystal 编译器和标准库使用的第三方库列表。

核心运行时依赖项

本节中的库始终由 Crystal 的 stdlib 运行时需要。它们必须存在才能构建或运行使用标准库的任何 Crystal 程序。避免这些依赖项只有在不使用标准库 (--prelude=none 编译器选项) 时才有可能。

系统库

一个主要组件是系统库。选择取决于目标平台,并支持多种平台。这通常包括 C 标准库以及其他系统库,例如 libdllibmlibpthreadlibcmtlibiconv,它们可能是 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.0LGPL-3.0

国际化转换

这要么是一个独立的库,要么可能作为某些平台上的系统库的一部分提供。可以使用 -Dwithout_iconv 编译时标志禁用它。可以使用 -Duse_libiconv 编译时标志强制使用独立库而不是系统库实现。

描述 许可证
libiconv (GNU) 国际化转换库。 LGPL-3.0

TLS

TLS 协议实现和 OpenSSL API 的通用加密例程。可以使用 -Dwithout_openssl 编译时标志禁用它。

OpenSSLLibreSSL 都受支持,绑定会自动检测主机系统上可用的库和 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