Comparison of actively developed Common Lisp implementations
All the implementations below provide an FFI and sockets interface. Callbacks mean in this context that the FFI is capable of passing lisp-functions as callbacks to foreign functions. The startup file is loaded when the Lisp starts. Not all platforms listed may be actively supported.
Note: Some implementation builds fail to include FFI, sockets, and/or threads. Fink CLISP fails to includes threads, and MacPorts anything fails to include FFI. Aptitude lisps are severely out of date: SBCL fails on Xen, and ECL crashes during installation.
Implementation | Supported Platforms | Compiler | Threads? | Features | Startup file | License |
---|---|---|---|---|---|---|
CLISP | Windows, Mac OS X, Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Dragonfly BSD | Bytecode | Yes (experimental) | Small image size, very efficient bignums, Callbacks, modules | ~/.clisprc.lisp | GPL2 |
CMUCL | Linux, Mac OS X, Solaris, FreeBSD, NetBSD, OpenBSD, IRIX, HPUX | Bytecode, Native & Block Compilation | No | High quality native compiler, foreign callbacks | ~/.cmucl-init.lisp | BSD3 |
ECL | Linux, FreeBSD, NetBSD, OpenBSD, Solaris, Windows, Mac OS X, iOS, Android | Native via C, also bytecode | Yes (all platforms) | Executable delivery and portability. Integrates well with C programs (i.e. Embeddable, native powerful FFI). | ~/.eclrc | LGPL2 |
CCL | Mac OS X, Linux, FreeBSD, Solaris, Android, Windows XP and later, Heroku | Native | Yes (all platforms) | Small image size, fast compiler, convenient and powerful FFI, callbacks, executable delivery, precise gc | ~/ccl-init.lisp | Apache 2 |
SBCL | Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Windows (sbcl's platform table) | Native | Yes | High quality native compiler; callbacks; executable delivery; | ~/.sbclrc | BSD2+PD |
ABCL | JVM, Google App Engine | JVM bytecode | Yes | FFI to Java, platform independence | ~/.abclrc | GPL+Classpath exception |
MKCL | Linux, Windows XP and later | Native via C, bytecode-compiled interpreter | Yes | POSIX compliant runtime on Linux, Embeddable, FFI with callbacks. | ~/.mkclrc | LGPL |
Daniel Weinreb has a current (as of February 2010) survey of Common Lisp implementations that is more detailed than the chart above.
All Free Software Common Lisp implementations (some of these may not be actively developed):
- ABCL - Armed Bear Common Lisp (aka ABCL) is a
- ACL - ACL refers to Allegro Common Lisp from Franz, Inc., a non-free Common Lisp implementation
- bocl - bocl is the Bootstraping Common Lisp implementation
- CCL - CCL is the Clozure Common Lisp implementation
- Clasp - Clasp is a Common Lisp implementation that interoperates with C++ and uses LLVM for just-in-time (JIT) compilation to native code
- CLISP - CLISP is a Common Lisp implementation by Bruno Haible, then of Karlsruhe University, and Michael Stoll, then of Munich University, both in Germany
- CMUCL - CMUCL is a high-performance, free (mostly Public Domain) Common Lisp implementation that aims towards ANSI compatibility and runs on a number of Unix platforms - including Linux/ix86, Linux/Alpha,
- Corman Common Lisp - Corman Lisp is a Common Lisp development environment for Microsoft Windows operating systems running on Intel platforms
- ECL - Embeddable Common Lisp, a member of the KCL Family, is a Common Lisp implementation initially developed by Giuseppe Attardi, maintained for many years by Juan Jose Garcia-Ripoll and currently maintained by Daniel KochmaĆski
- emacs-cl - Emacs Common Lisp is a Common Lisp implementation written in Emacs Lisp
- GCL - GNU Common Lisp is a Common Lisp implementation of the KCL Family that uses gcc to compile Lisp into native binaries
- JSCL - jscl is the Common Lisp to JavaScript Compiler, a subset of Common Lisp implementation
- KCL Family - The KCL Family is a family of Common Lisp implementations originated from the influential KCL
- MCL - MCL is Macintosh Common Lisp, a venerable commercial Common Lisp implementation
- Medley - Medley was the last release of the Xerox Lisp environment, before the whole environment was renamed Medley
- MKCL - ManKai Common Lisp
- Movitz - Movitz is a Common Lisp implementation that targets the x86 PC architecture "on-the-metal"
- npt - ANSI Common Lisp implementation built in C
- Poplog - Poplog is a multi-language programming system which includes its own Common Lisp implementation, as well as Standard ML, Prolog, and Pop-11
- SBCL - Steel Bank Common Lisp is an open source / free software Common Lisp implementation
- ThinLisp - ThinLisp is a Common Lisp implementation that translates a subset of Common Lisp to very efficient C code
- UABCL - UABCL, a Common Lisp implementation, is a port of ABCL to dotNet and Mono
- UfasoftCommonLisp - Ufasoft Common Lisp development system
- WCL - WCL is a Common Lisp implementation that provides Common Lisp as a Unix shared library that can be linked with Lisp and C code to produce efficient applications
- XCL - XCL is a Common lisp implementation featuring a kernel written in C++ and an optimizing compiler with backends for x86 and x86-64
For non-free implementations, see the list on wikipedia.
If performance is an important criterion for you, you might be interested in the Performance Benchmarks page.
You may also use this what-implementation CL program to help you determine what implementation to use. You may use it with telnet://hubble.informatimago.com:8101.