CMU Common Lisp
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/03/05 05:42 UTC 版)
![]() | この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2020年12月) |
作者 | カーネギーメロン大学 |
---|---|
開発元 | 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で実行できるようになった。レジスタの不足は、保守的ガベージコレクタを新しく実装することで解決された。このガベージコレクタでは、レジスタにどんな型のどんな値が載っていてもよく、またガベージコレクションや値の移動を想定していないポインタであっても扱うことができる。
コンパイラと実行環境
- CMUCLは対話的実行 (en:REPL) を主に想定したインタプリタだが、コンパイルの不要なLispプログラムのファイルを一括して読み込むこともできる。
- サイズの小さなバイトコードによるプログラム(コンパイラで生成できる)を実行するプログラムも用意されている。これは現在はほとんど使われないが、プログラムのサイズが非常に小さくでき、インターネットの整備が進んでいなかった当時はネットワーク上の転送に有利だったので、CMUCLの初期のリリースではよく使われていた。
- Pythonという名前のネイティブ・コードコンパイラが実装されている。これはプログラミング言語のPythonとは無関係である。適切なデータ型の宣言が行われていて、実行速度を考慮してプログラミングされたCommon Lispのソースコードであれば、Pythonの出力するコードはC++などの言語から生成されたコードと大して変わらない速度で実行できる。関数の呼び出し方法や、ユーザー定義のデータ型に対するポインタを使わない配列がないことなどによる実行効率の悪さは、標準Common Lispに由来するものであり、改良が必要である(たとえばインライン化を強化したり、実際にはあらかじめ確保されている配列にアクセスしているだけだがユーザー定義のデータ型のように扱えるようにする文を生成するマクロなど)。Pythonコンパイラには強力な型推論機能もあり、実行速度の低下のないプログラムを書いたり、最適化箇所の提示などに有効である。
特徴
- x86アーキテクチャでの近代的なガベージコレクタとマルチプロセッサ対応
- C言語で書かれた別の関数やシステムコールの呼び出し (共有ライブラリ対応)
- プロセス間通信と遠隔手続き呼出し (RPC) のサポート
- Common Lisp Object System (CLOS) の実装によるマルチメソッドとmetaobject protocol (en) のサポート
- MotifによるGUIを備えたソースレベル・デバッガとプロファイラ
- X11上で使うためのGUI、CLXおよびウィジェット・ライブラリGarnet
- 拡張可能な入出力ストリーム
- Common Lispで実装されているEmacs風のエディタHemlock
脚注
関連項目
外部リンク
CMU Common Lisp (CMUCL)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/15 19:06 UTC 版)
「Common Lisp」の記事における「CMU Common Lisp (CMUCL)」の解説
カーネギーメロン大学 で開発された実装を起源とする。現在はボランティアグループによりメンテナンスされる。Pythonと呼ばれる(プログラミング言語の Python とは関連なし)高速なネイティブコードコンパイラの起源となった実装である。Intel x86 上の Linux や BSD、Alpha 上の Linux、Solaris、IRIX、HP-UX、PowerPCを含むMac OS Xなどで動作する。
※この「CMU Common Lisp (CMUCL)」の解説は、「Common Lisp」の解説の一部です。
「CMU Common Lisp (CMUCL)」を含む「Common Lisp」の記事については、「Common Lisp」の概要を参照ください。
「CMU Common Lisp」の例文・使い方・用例・文例
- 博物館の後援者として、Commonwealth Industries社員の皆様は入場料が半額となります。
- 《主に米国で用いられる》 = 《主に英国で用いられる》 the Speaker of the House of Commons 下院議長.
固有名詞の分類
オープンソース |
Dragon Player FVWM CMU Common Lisp PulseAudio H2 Database |
プログラミング言語 |
ドメイン固有モデリング XSL Transformations CMU Common Lisp Mind Pic言語 |
関数型言語 |
Mathematica XSL Transformations CMU Common Lisp R言語 F Sharp |
- CMU_Common_Lispのページへのリンク