Home > Common Lisp
4 Implementations
Common Lisp is defined by a specification (like Ada and C) rather than by a single implementation (like Perl). There are many implementations, and the standard spells out areas in which they may validly differ.
In addition, implementations tend to come with library packages, which provide functionality not covered in the standard. Free Software libraries have been created to support such features in a portable way, most notably the Common Lisp Open Code Collection project.
Common Lisp has been designed to be implemented by incremental compilers. Standard declarations to optimize compilation (such as function inlining) are proposed in the language specification. Most Common Lisp implementations compile functions to native machine code. Others compile to bytecode, which reduces speed but eases binary-code portability. The misconception that Lisp is a purely-interpreted language is most likely due to the fact that Common Lisp environments provide an interactive prompt and that functions are compiled one-by-one, in an incremental way.
Most Unix-based implementations, such as CLISP, can be used as script interpreters; that is, invoked by the system transparently in the way that a Perl or Unix shell interpreter is.
4.1 List of implementations
Freely redistributable implementations include:
- CMUCL, originally from Carnegie Mellon University, now maintained as Free Software by a group of volunteers. CMUCL uses a fast native-code compiler. It is available on Linux and BSD for Intel x86; Linux for Alpha; and Solaris, IRIX, and HP-UX on their native platforms.
- GNU CLISP, a bytecode-compiling implementation. It is portable and runs on a number of Unix and Unix-like systems (including Mac OS X]), as well as Microsoft Windows and several other systems.
- Steel Bank Common Lisp (SBCL), a branch from CMUCL. "Broadly speaking, SBCL is distinguished from CMU CL by a greater emphasis on maintainability." [3] SBCL runs on the platforms CMUCL does, except HP/UX; in addition, it runs on Linux for PowerPC, SPARC, and MIPS, and on Mac OS X]), as well as Microsoft Windows and several other systems.
- Steel Bank Common Lisp (SBCL), a branch from CMUCL. "Broadly speaking, SBCL is distinguished from CMU CL by a greater emphasis on maintainability." [4] SBCL runs on the platforms CMUCL does, except HP/UX; in addition, it runs on Linux for PowerPC, SPARC, and MIPS, and on Mac OS X. SBCL does not use an interpreter; all expressions are compiled to native code.
- GNU Common Lisp (GCL), the GNU Project's Lisp compiler. Not yet fully ANSI-compliant, GCL is however the implementation of choice for several large projects including the mathematical tools Maxima and ACL2. GCL runs under GNU/Linux on eleven different architectures, and also under Windows, Solaris, and FreeBSD.
- Embeddable Common Lisp (ECLS), designed to be embedded in C applications;
- OpenMCL, an open source branch of Macintosh Common Lisp. As the name implies, OpenMCL is native to the Macintosh; it runs on Mac OS X, Darwin, and Linux for PowerPC.
- Movitz implements a Lisp environment for x86 computers without relying on any underlying OS.
- Armed Bear Common Lisp Armed Bear Lisp is a Common Lisp implementation that runs on a Java programming language Virtual Machine. It includes a compiler to Java programming language bytecodes, and allows access to Java libraries from Common Lisp.
Commercial implementations are available from Franz, Inc., Xanalys Corp., Digitool, Inc., Corman Technologies and Scieneer Pty Ltd..