Steel Bank Common Lisp 2.6.7 发行说明

Steel Bank Common Lisp 2.6.7 Release Notes

SBCL 2.6.7 Release Overview

SBCL 2.6.7 引入了 SB-MANUAL contrib,扩展了 SIMD 支持,并解决了若干错误并添加了编译器。

New Contrib: SB-MANUAL

SB-MANUAL 在章节定义的 docstring 中提供 SBCL 手册,允许通过 Slime 的 M-. 进行交互式探索,或使用 MGL-PAX 库进行浏览;替代渲染可在 https://fixnum.com/ 获得。

Platform Support Enhancements

SB-SIMD 现在支持 ARM64,AVX512 指令在 X86-64 上受支持,并且为两种架构都添加了额外的 SIMD 支持;修复了 ARM64 上 SAP-REF-N 的误编译,并且在 MIPS 和 LoongArch 上原始类型的 INTEGER-LENGTH 实现为无循环。

Bug Fixes

READ-SUPPRESS 设置为 T 时,READ 操作不再发出关于缺失内部特性的警告;编译 CONCATENATE 时,当有条件的已知非序列参数导致的类型错误已被修复;(EQL ) 类型现在被类型系统视为数值;对 LOG 的安静(非信号)NaN 输入的处理得到了改进;解决了 MULTIPLE-VALUE-CALL 的误编译。

Optimizations

将常量复数传递给局部函数可以在不进行 consing 的情况下完成;增强的 SIMD 例程在可用时用于 UTF-8 转换;COUNT 的编译器转换现在适用于更广泛的关键字参数;从 SB-ALIEN:DEREF 中删除了至少一条冗余指令;编译器中的稀疏集合实现已进行调优,以在实际工作负载中获得更好的性能。

Documentation Updates

手册现在正确地指出数组是行主序(而不是列主序)在 SB-MANUAL:@FOREIGN-FUNCTION-INTERFACE 内部;内部 docstring 符合 Markdown 的一个子集,但 DOCUMENTATION 会去除一些标记;已添加一个用于声明的单独索引;许多拼写错误和排版问题已得到修复。

Community Discussion

一位评论者指出了 SIMD 的添加,并问道:“有人知道 SIMD 在 SBCL 中是如何工作的吗?这是在代码生成层吗?换句话说,它是否可以自动向量化或类似的功能?还是这些是必须显式调用的内在函数?”发行说明描述了 SB-SIMD contrib 对 ARM64 和 AVX512 的支持,表明该功能是通过 contrib 提供的,而不是自动向量化。

Sources