CMU Common Lisp

CMU Common Lisp（CMUCL），是自由的Common Lisp实现，最初在卡内基·梅隆大学开发。

CMUCL运行在大多数类Unix平台上，包括Linux和BSD；也有试验性的Windows移植。Steel Bank Common Lisp派生自CMUCL。Scieneer Common Lisp是CMUCL的商业衍生品。

历史
它的最早实现先于Common Lisp，派生自出现在大约1980年的。在1985年，Rob MacLachlan开始重写编译器，它后来成为“Python”编译器，并且CMUCL被移植到Unix工作站，比如、MIPS和SPARC。早期的CMUCL发行不支持Intel的x86架构，由于它缺乏寄存器。CMUCL严格的分离有类型标记的类型和中间数据类型，而垃圾回收器依赖于，已知一半的CPU寄存器只持有有标记的类型，而另一半只持有无标记的。它没有为“Python”后端留下足够的寄存器。

在CMU取消了这个项目（将某些CMUCL编译器基础用于了Dylan实现）之后，维护由一组志愿者接管。在1996年他们在自己的下部构造上制作了正规发行。

大约同时完成了到Intel的x86架构的移植，最初运行在FreeBSD上，后来运行在Linux上。缺乏寄存器的问题，通过采用新的保守垃圾回收器解决了。这个新垃圾回收器，接受在寄存器中的任何类型的任何值，并把可以是指针的任何东西当作指针处理，用途是不回收或移动它的目标。

编译器和其他代码执行单元
 CMUCL的特征是主要用于REPL的一个解释器，但是它可以用来快速装载不需要编译的Lisp文件。
 解释（从编译器发出的）紧致字节码的一个机器。这在现在很少使用了，但是在早期CMUCL发行中很流行，因为在互联网下载带宽很低的时代，这可以大幅缩减映像的大小。
 叫做“Python”（不要混淆于Python编程语言）的本机代码编译器。如果Common Lisp源代码具有适当的声明，并且在组建时考虑到了速度，“Python”编译器生成的代码，相比于用C++编译的代码没有更多的开销。一些低效的东西比如函数调用接口，和缺乏用户定义数据类型的无指针数组，是Common Lisp标准主导造成的，仍然需要解决（比如通过内联更多和使用宏来建造，看似用户定义结构的构造，而实际上访问在预先分配的特殊数组中的字段）。“Python”编译器的特征是有强力的类型推论，通过要么自动推论出类型，要么对错过的优化机会的提示，帮助编程者书写无开销的代码。

特征
 分代垃圾回收和在x86移植上的多处理能力。
 ，允许同C代码和系统库进行交互，包括在多数平台上的共享库，和对Unix系统调用的直接访问。
 支持进程间通信和远程过程调用。
 CLOS的一个实现，Common Lisp对象系统包括了多方法和元对象协议。
 图形的源代码级别调试器，使用了Motif接口，和一个代码剖析器。
 到X11窗口系统的接口（），和一个复杂的图形组件库（Garnet）。
 编程者可扩展的输入和输出串流。
 ，用Common Lisp实现的一个类Emacs的编辑器。

引用

参閱
Steel Bank Common Lisp

外部链接
CMUCL Home Page 

Common Lisp
自由編譯器與直譯器
公有领域软件