Steel Bank Common Lisp 2.6.7 リリースノート

Steel Bank Common Lisp 2.6.7 リリースノート

SBCL 2.6.7 リリースの概要

SBCL 2.6.7 は SB-MANUAL コントリビューションを導入し、SIMD サポートを拡張し、いくつかのバグを修正し、コンパイラを追加します。

新しいコントリビューション: SB-MANUAL

SB-MANUAL は、セクション定義の docstring に SBCL マニュアルを提供し、Slime の M-. を使ったインタラクティブな探索や、MGL-PAX ライブラリでの閲覧を可能にします;代替のレンダリングは https://fixnum.com/ で利用できます。

プラットフォームサポートの拡張

SB-SIMD は現在 ARM64 をサポートし、X86-64 では AVX512 命令がサポートされ、両アーキテクチャに対して追加の SIMD サポートが加えられました;ARM64 上の SAP-REF-N の誤コンパイルが修正され、MIPS と LoongArch ではプリミティブ型の INTEGER-LENGTH がループなしで実装されました。

バグ修正

READ-SUPPRESS が T に設定されている状態での READ は、内部機能が欠けていることに関する警告を出さなくなりました;CONDITIONAL known non-sequence 引数を持つ CONCATENATE のコンパイル時の型エラーは修正されました;(EQL ) 型は型システムによって数値として扱われるようになりました;LOG への quiet (non-signalling) NaN 入力の扱いが改善されました;MULTIPLE-VALUE-CALL の誤コンパイルが解決されました。

最適化

定数の複素数をローカル関数に渡す際は、コンスせずに行えます;利用可能な場合、強化された SIMD ルーチンが UTF-8 変換に使用されます;COUNT のコンパイラ変換は、より幅広いキーワード引数に適用されます;SB-ALIEN:DEREF から少なくとも 1 つの冗長命令が削除されました;コンパイラにおけるスパースセットの実装は、実際のワークロードに対するパフォーマンスを向上させるように調整されました。

ドキュメントの更新

マニュアルは今では正しく、SB-MANUAL:@FOREIGN-FUNCTION-INTERFACE において配列が行優先(列優先ではない)と述べています;内部の docstring は Markdown のサブセットに準拠しますが、DOCUMENTATION は一部のマークアップを削除します;宣言用の別索引が追加されました;多くのタイポと組版の問題が修正されました。

コミュニティディスカッション

コメント者は SIMD の追加に言及し、次のように尋ねました:「誰か SBCL で SIMD がどのように機能するか知っていますか?これはコードジェネレーションレイヤーのことですか?つまり、自動ベクトル化やそれに類することができるのでしょうか?それとも、これらは明示的に要求しなければならないイントリンシックですか?」リリースノートでは、SB-SIMD コントリビューションが ARM64 と AVX512 をサポートしていることを説明しており、この機能は自動ベクトル化ではなくコントリビューションを通じて提供されていることを示しています。

Sources