作者 | カーネギーメロン大学 |
---|---|
開発元 | Various |
初版 | 1980年代初頭 |
最新版 |
21e
/ 2023年5月14日[1] |
リポジトリ | |
対応OS | POSIX準拠の複数のオペレーティングシステム |
プラットフォーム | クロスプラットフォーム |
対応言語 | Common Lisp |
種別 | コンパイラおよびインタプリタ |
ライセンス | パブリックドメイン |
公式サイト |
cmucl |
CMU Common Lisp (CMUCL) はカーネギーメロン大学で実装が行われたCommon Lisp処理系のフリーソフトウェアである。
CMUCLはLinuxやBSDなどの多くのUnix系のプラットフォームで実行することができる。Windowsへの試験的な移植版もある。CMUCLからはSteel Bank Common Lispというソフトウェアが派生しており、またScieneer Common Lispという商用版もCMUCLから作られている。
CMUCLは最初Spice Lispの一部として1980年ごろ、Common Lispよりも早い時期に実装されたものであった。1985年にRob MacLachlanがPythonコンパイラ(後述)を作る目的でコンパイラを書き直し、CMUCLとしてIBM PC RT、MIPS、SPARCなどのUNIXワークステーションに移植した。インテルのx86アーキテクチャはレジスタが少なかったため、CMUCLの初期のバージョンではサポートしていなかった。CMUCLではタグの付いたデータ型とそうでない型の区別が厳格であり、ガベージコレクションはCPUレジスタの半分はタグ付けされたデータ型、もう半分はタグのないデータ型に割り当てられていることを前提に動作する。この方法はバックエンドのコンパイラ(Python という名前だが、プログラミング言語のPythonとは関係ない)が使うレジスタが不足することがある。
CMUでこのプロジェクトが中止になってからは(CMUCL のコンパイラ・ベースを使ったDylanによる実装が代わりに生き残った)、ボランティア・グループによりメンテナンスが行われている。1996年からこのグループで正規版のリリースが行われている。
同時期にインテルx86アーキテクチャへの移植も行われ、まずFreeBSDとLinuxで実行できるようになった。レジスタの不足は、保守的ガベージコレクタを新しく実装することで解決された。このガベージコレクタでは、レジスタにどんな型のどんな値が載っていてもよく、またガベージコレクションや値の移動を想定していないポインタであっても扱うことができる。