CMUCL (Carnegie Mellon University Common Lisp) is a high quality free Common Lisp implementation. Original development took place at Carnegie Mellon University in the 1980s under the lead of professor Scott Fahlman (inventor of the online smiley face). Once funding from DARPA was cut in the early 1990s, the project was discontinued for a time. Soon after, dedicated volunteers connected through the Internet to continue development of the programming environment. Many new versions have been released since then.
CMUCL is available for several Unix based platforms. Linux, FreeBSD, OpenBSD, and NetBSD (all on x86) are mostly supported, and experimental versions are available for a number of other systems. Portability is a difficult issue for CMUCL due to a complicated build procedure and other factors. A related project, SBCL, is a Common Lisp system based on CMUCL and designed to build with more ease. Both implementations are highly functional for LISP programming.
By default, CMUCL runs within a terminal. On start the programmer is automatically launched into the read-eval-print loop (the interactive interpreter), through which sections of code can be executed. The loop functions similar a command line, displaying a character (*) at the beginning of the line on which a command is to be entered. The start of a typical run looks something like:
------------------------------------
CMU Common Lisp 18e, running on
localhost
With core: /usr/local/lib/cmucl/lib/lisp.core
Dumped on: Thu, 2003-04-03 08:47:12-05:00 on orion
See <http://www.cons.org/cmucl/> for support information.
Loaded
subsystems:
Python 1.1, target
Intel x86
CLOS 18e (based on PCL September 16 92 PCL (f))
*
-------------------------------------
When a valid line of code is entered after the asterisk on the last line, the code is evaluated according to the rules of the CMUCL Common Lisp implementation. The results of execution are printed on the following line. If the code entered is invalid, an interactive debugger is initiated.
The default terminal interface can work quite well in certain situations. Often with larger projects, however, it is simpler to use a graphical front end for the sake of readability. Most front ends available for CMUCL offer some sort of syntax highlighting and hopefully parenthesis matching (where parenthesis are highlighted in a certain manner to indicate completion.) In Common Lisp, parenthesis are used quite a lot, and it is important to have a way to check that all parenthesized sections are properly opened and closed. Graphical front ends typically have some sort of special access to the help functions also (such as apropos and documentation). Key bindings may be specified to call up such functions.
Front ends are usually constructed by linking CMUCL to a text editor in such a way that the CMUCL environment is executed from within the program. CMUCL comes with a simple graphical front end called Hemlock. Hemlock is a small streamlined text editor developed initially for the CMUCL project. Another common front end works through a system called SLIME (Superior Lisp Interaction Mode for Emacs) running on top of Emacs. Such a setup provides the full force of the Emacs text editor for use while coding. To those familiar with Emacs this can be especially convenient.
CMUCL and its sister project SBCL both generally run faster than CLISP, another frequently used Common LISP environment. CLISP uses an interpreted (and very portable) code for compilation, while CMUCL and SBCL have the capability to compile to native code. Native code compilation speeds up execution considerably at runtime.
CMUCL is open sourced and download-able for free on the Internet. Though still lacking some advanced tools found in the commercial alternatives, CMUCL has distinct advantages. As expected from an open source project, the system is quite flexible and easy to customize. A considerable fraction of Common Lisp programmers use CMUCL or a variant. Support and programming tips can frequently be found through the online community.
Resources:
<http://www.cons.org/cmucl/index.html>
(has download links)
<http://www.lisp.org/HyperSpec/FrontMatter/Chapter-Index.html>
<http://www.lisp.org/alu/res-lisp>
<http://sbcl.sourceforge.net/>
<http://www.fact-index.com/c/co/common_lisp_1.html>
<http://clisp.cons.org/>
<http://dept-info.labri.u-bordeaux.fr/~strandh/Teaching/MTP/Common/David-Lamkins/cover.html>
"
Screenshot" taken from CMUCL release 18e for Linux/x86.