🎉

2024年のCommon Lispの処理系はこれだ!

2020/09/18に公開

もともとQiitaで書いていた記事ですが、Qiitaを退会したところすべて消えてしまいました。
あのまとめどこいったの?と訊ねられるので、Zennで復活

SBCL (これがおすすめだ!)

2024年もSBCLが充実の一年ではないでしょうか(2015年から変化なし)
大体月に一度リリースしていますが、途切れることもなく安定しています。
以前(2010年)Quicklispでアンケートを取りましたが、Quicklisp利用者の8割以上はSBCL利用者のようです。
2024年も大勢に変化はないように思いますが、以前よりSBCL以外の処理系の開発の勢いが弱くなっているようなところもあるので、さらにシェアを伸ばしているかもしれません。

その他の処理系

CLISP (Lisp入門者にはこれがお勧め)

この10年位開発が停滞していて、Quicklispのライブラリが素直に導入できなくなりつつありますが、初心者にも優しい対話機能でCommon Lispのコアな部分の学習や初学者にはお勧めでしょう。
※開発自体は細々と続いていますが、新しいバージョンがリリースされていません。
しかし、Linuxのディストリビューションによっては最新の開発版がパッケージで提供されていることもあります(Debian GNU/Linux等)
もの足りなかったり、Quicklispのライブラリが動かなかったりしたらSBCLかCCLへ乗り換えましょう。

Clozure CL(CCL)

ネイティブコンパイラで速度も高速です。コンパイル速度はSBCLよりずっと速いのが特長。
Apple Silicon macへの移植が難航しており、macOSのアプリはLispWorksへ乗り換えたりしています(Opusmodus等)
開発リソースの問題からApple Silicon macへの移植は現在絶望的な様子ですが、Rosseta2でIntel版は動く模様です。

LispWorks

ネイティブコンパイラで速度も高速。周辺ライブラリや処理系の機能は充実しています。
コンパイル速度は、CCLと同等かそれ以上です(cl-bench比較)
日本国内ではマイナーですが、ヨーロッパなどを中心に、マルチプラットフォームなGUIツールキットのCAPIやマルチスレッド周りの評価が高く愛好者が多い処理系です。
Windows、macOS、Linux(gtk)でマルチプラットフォームなGUIのアプリを提供したい場合、かなり現実的な選択となるでしょう。
2015年5月発売のLispWorks 7.0よりHobbiestプランができ、64ビット版も$750とお求めやすくなりました。32ビット版は$500です。
現在の最新版は8.0.1です。
円高の時にでも買ってみましょう。
Personal Editionとして現時点では主要プラットフォーム上で動く8.0.1が無料で試せます。
連続使用5時間という制限時間と、ヒープ制限があり、動かすものによっては厳しいですが、大体の使い勝手は把握できます。
また、購入前の動作確認用としては、一ヶ月の期間限定のライセンスを発行してもらえます(要サポート相談)

Allegro CL

ネイティブコンパイラで速度も高速。周辺ライブラリや処理系の機能は充実しています。
ウェブサイト等ではお値段がぱっと分からないのが難点。恐らく日曜プログラマが使うのには安くはないでしょう。
高嶺の花な処理系の為、『やっぱACLじゃないとなあ』『ACLじゃないと話にならない』等の嘘か本当か分からない噂話を耳にしますが、日曜プログラマが必要な大抵のことはSBCLでもできます。
もちろん商用サポートが必要な場合、Allegro CLが適切でしょうが、そんな人がここを読んで処理系を決めるとは思えません。
Express Editionとして無料で試せます。ヒープ制限があるので大きいプログラムの場合は動かせない可能性もありますが、大体の使い勝手は体験できるかと思います。
10.0までのExpress版は32bit版のみでしたが、11.0の最近の版では、64bit版、SSLのライブラリ等も利用可能である等、制限が緩和され、ちょっとした用途であれば割合に使えるようになっています。
ちなみに処理系のお値段ですが現在はサポートに問い合わせて確認する模様です。

ECL

KCLから連綿と続くCへ変換して実行する処理系。
開発者が引退したため今後どうなるかと思いましたが、引き継ぐ人が現れ活動が再開しています。

CMUCL

開発は続いていて、SBCLと機能の取り込み合いをしていたりしますが、依然として32ビットプラットフォームです。

GCL (おすすめしない!)

ECLと同じくKCLから続くCへ変換して実行する処理系ですが、KCLからの流れとしては、こちらが本家です。
最近開発が活発になっていますが、如何せん仕様が古くANSI CL準拠ではありません。
ANSI CL準拠機能はありますが、まだまだです。
Quicklisp、ASDF等、近頃重要なツールは大体動きません。
主にmaximaや、acl2等のGCLの上に実現されているアプリの為に開発が活発なようです。
2022年12月に8年ぶりに新バージョンがリリースされました。

ABCL

jvm上のCommon Lisp実装。Clojureの話題になるとCommon LispにもABCLがあるが…と話題にのぼることが多い処理系です。
Javaのコードが呼び出せたりもします。
またここ数年でANSI CLへの準拠度もかなり高くなり、MOPのサポートも向上してきています。

Clasp(まだまだこれからだ!)

C++との連携、LLVMの利用、等で注目される処理系です。
2023年にバージョン2.0はリリースされましたが、 今の所、汎用的に使うにはまだまだ成熟してはいない処理系です。導入はナイトリービルド等もあるので、自前でビルドするよりビルド済みのものを利用するのが手軽でしょう。作者のプロジェクト等では既に成果を挙げているようで、使いどころによっては魅力的な処理系かもしれません。

コメント

  • 2024年版へと改訂: ほぼ変化なし。処理系リリース状況更新。Claspの状況更新。
  • 2023年版へと改訂: ほぼ変化なし。処理系リリース状況更新
  • 2022年版へと改訂: ほぼ変化なし。処理系リリース状況更新
  • 2020年版へと改訂: ほぼ変化なし。QiitaからZennへ
  • 2019年版へと改訂: 若干加筆。ほぼ変化なし。
  • 2018年版へと改訂: ほぼ変化なし
  • 2017年版へと改訂: あまり変化がない
  • 2016年版へと改訂:
  • 2015年の内容とほぼ一緒ですが、Claspを追加してみました。

Discussion