Steel Bank Common Lisp 2.6.7 版本说明
Hacker News 摘要原标题:Steel Bank Common Lisp version 2.6.7
Steel Bank Common Lisp(简称 SBCL)是一款高性能的开源 Common Lisp 编译器。该网页记录了 SBCL 从 2.6.7 版本回溯至 0.6.0 版本的完整更新历史。SBCL 通常在每月月底发布新版本,每个版本都会在功能增强、平台支持、错误修复和性能优化方面进行改进。
2.6.7 版本(2026年7月28日)
这是最新的版本,带来了多项重要更新:
• 新增模块:引入了 SB-MANUAL 扩展模块。该模块将 SBCL 手册以文档字符串(docstrings)的形式集成到各个部分的定义中。用户可以在开发环境(如 Slime)中使用 M-. 快捷键交互式地查阅手册,也可以通过 MGL-PAX 库浏览。此外,手册还提供了链接丰富的 PDF、HTML、Markdown 和纯文本格式。
• 新增功能:DOCUMENTATION 函数现在支持 DOC-TYPE DECLARATION 类型。
• 平台支持:
• SB-SIMD 扩展模块现在支持 ARM64 架构。
• x86-64 架构新增了对 AVX512 指令的支持。
• 针对 ARM64 和 x86-64 架构提供了额外的 SIMD 指令支持。
• 修复了 ARM64 架构上 SAP-REF-N 的编译错误。
• 在 MIPS 和 LoongArch 架构上,为基本类型实现了无需循环的 INTEGER-LENGTH 函数。
• 错误修复:
• 修复了当 *READ-SUPPRESS* 为 T 时,读取过程会发出内部功能缺失警告的问题。
• 修复了编译器在处理带有条件已知非序列参数的 CONCATENATE 调用时的类型错误。
• 修复了类型系统未将 (EQL <complex>) 类型视为数值的问题。
• 改进了 LOG 函数对静默 NaN 输入的处理。
• 性能优化:
• 向局部函数传递常量复数时不再产生内存分配(consing)。
• 在支持的平台上,使用增强型 SIMD 例程加速 UTF-8 转换。
• 优化了 COUNT 函数的编译器转换,使其适用于更多关键字参数。
• 优化了编译器内的稀疏集实现,提升了实际工作负载下的性能。
• 文档改进:
• 修复了大量拼写和排版问题。
• 纠正了 SB-MANUAL 中关于外部函数接口的说明,明确数组是行优先(row-major)排布的。
• 手册现在为声明(declarations)提供了独立的索引。
2.6.6 版本(2026年6月28日)
• 不兼容变更:FDEFINITION 现在像 SYMBOL-FUNCTION 一样,会返回由 TRACE 或 PROFILE 添加的最外层包装。
• 平台支持:修复了在开启 ELFv2 的 64位大端 PowerPC 架构上的构建问题;移动了 macOS ARM64 架构的静态空间地址。
• 优化:编译器在处理已知约束下的 COERCE、AREF 和 ELT 时,类型推导更加精确;加快了 UTF-8 格式 C 字符串的编码和解码速度。
• 文档:手册新增了 SB-INTROSPECT 章节。
2.6.5 版本(2026年5月29日)
• 不兼容变更:访问对象中缺失的槽位或未初始化的结构体槽位时,引发的条件不再是 TYPE-ERROR;处理集合的标准化函数(如 INTERSECTION 和 UNION)在返回结果顺序上拥有更大的自由度。
• 平台支持:为 PPC64/FreeBSD 增加了浮点状态操作的底层支持;恢复了使用 musl C 库构建系统的支持。
• 错误修复:提高了处理大型不相交数值并集类型时的编译速度。
• 优化:在多种情况下,INTERSECTION 和 UNION 会利用哈希表来加速操作。
2.6.4 版本(2026年4月29日)
• 平台支持:增加了对 32位 Linux 系统中 64位 time_t 的支持;在 Windows 平台上,RUN-PROGRAM 会对独立的空参数进行转义。
• 错误修复:修复了编译器中的无限循环问题;解决了 CHECK-TYPE 扩展中包含内部不可外部化对象的问题。
• 优化:在 x86-64 架构上,使用 Lemire 等人的变换算法实现了 TRUNCATE 指令。
2.6.0 至 2.6.3 版本亮点
• 架构支持:正式增加了对 LoongArch(龙芯)架构的支持;为 Windows ARM64 平台提供了支持。
• 指令集增强:在 x86-64 平台上支持 ADCX 和 ADOX 指令;为 ARM64 平台提供了更强大的回溯工具和分析功能。
• 垃圾回收:改进了 mark-region 垃圾回收器的稳定性。
• 不兼容变更:IMAGPART 对负浮点数现在返回 0.0 而非 -0.0,以保持与实数处理的一致性。
• 性能提升:优化了 UPGRADED-ARRAY-ELEMENT-TYPE 的速度;REDUCE 函数在列表和向量上的性能均得到提升。
核心功能与长期特性
• 编译器优化:SBCL 编译器以其强大的类型推导能力著称。它能够识别多种“公认的代码模式”并将其转换为更短的机器码指令序列。
• 多线程与同步:支持高效的线程操作、互斥锁、信号量以及无锁的数据结构。
• 外部函数接口(FFI):允许 Lisp 代码高效调用 C 语言库,支持结构体的传值与返回。
• 代码覆盖率工具:内置 SB-COVER 模块,能够生成符合 LCOV 格式的报告。
• 内省工具:SB-INTROSPECT 提供了深入了解代码结构、定义来源和内存分配信息的能力。
SBCL 持续关注主流计算架构(如 x86、ARM、PowerPC、MIPS、SPARC 和 RISC-V)以及多种操作系统(如 Linux、Windows、macOS、FreeBSD、OpenBSD、NetBSD、Solaris 和 Haiku)的兼容性与性能表现。