CMUCL(1) | General Commands Manual | CMUCL(1) |
cmucl - CMU Common Lisp
CMU Common Lisp is public domain "industrial strength" Common Lisp programming environment. Many of the X3j13 changes have been incorporated into CMU CL. Wherever possible, this has been done so as to transparently allow use of either CLtL1 or proposed ANSI CL. Probably the new features most interesting to users are SETF functions, LOOP and the WITH-COMPILATION-UNIT macro.
CMU CL is currently available for a variety of Unix workstations. See the README file for current platforms. At least 16 megabytes of memory and 25 megabytes of disk space are recommended. As usual, more is better.
When compared other Common Lisp implementations, CMU CL has two broad advantages:
CMU CL also has significant non-technical advantages:
The `Advanced Compiler' chapter of the User's manual extensively discusses Python's optimization capabilities (See DOCUMENTATION below.) Here are a few high points:
Important note: Even debugged programs may contain type errors that remain undetected by other compilers. When compiled with type checking suppressed using the CMU Common Lisp compiler, these type errors may cause said debugged programs to die strangely. If type checking is not suppressed, these programs will die with an explicit type error.
The most visible way in which Python differs from previous Common Lisp compilers is that it has a greater knowledge about types and a different approach to type checking. In particular, Python implements type checking which is `eager' and `precise':
Here, the type of the initial value of X must be a FIXNUM or an error will be signalled.
(let ((x ...))
(declare (fixnum x))
...)
Since Python does more type checking, programs that work fine when compiled with other compilers may get type errors when compiled with Python. It is important to initially compile programs with the default (safe) policy, and then test this version. If a program with an erroneous declaration is compiled with type checking suppressed (due to the SAFETY optimize quality being reduced), then the type error may cause obscure errors or infinite looping. See the section `Getting Existing Programs to Run' (6.6) in the compiler chapter of the user manual.
CMU CL adheres to the X3J13 function type cleanup, which means that quoted lambda-lists are not of type FUNCTION, and are no longer directly callable. Use COERCE with the FUNCTION result type.
Python does many optimizations that are absent or less general in other Common Lisp compilers: Proper tail recursion, lightweight function call, block compilation, inter-procedural type inference, global flow analysis, dynamic type inference, global register allocation, stack number allocation, control optimization, integer range analysis, enhanced inline expansion, multiple value optimization and source-to-source transforms.
Optimization and type-checking are controlled by the OPTIMIZE declaration. The default compilation policy is type-safe.
Python is particular good at number crunching:
Substantially better bignum performance than commercial implementations (2x-4x). Bignums implemented in lisp using word integers, so you can roll your own.
Python's compiler warnings and efficiency notes are especially valuable in numeric code. 50+ pages in the user manual describe Python's capabilities in more detail.
In addition to a Motif-based windowing interface and a basic command-line interface, the debugger also has several powerful new features:
See the debugger chapter in the user manual for more details. We are working on integrating the debugger with Hemlock and X windows.
CMU Common Lisp has an interface to Motif which is functionally similar to CLM, but works better in CMU CL. See:
This motif interface has been used to write the inspector and graphical debugger. There is also a Lisp control panel with a simple file management facility, apropos and inspector dialogs, and controls for setting global options.
Call INTERFACE:LISP-CONTROL-PANEL to create the control panel. When INTERFACE:*INTERFACE-STYLE* is :GRAPHICS (the default) and the DISPLAY environment variable is defined, the graphical inspector and debugger will be invoked by INSPECT or when an error is signalled. Possible values are :GRAPHICS and :TTY. If the value is :GRAPHICS, but there is no X display, then we quietly use the TTY interface.
As far as Common Lisp semantics are concerned, there is no interpreter; this is effectively a compile-only implementation. Forms typed to the read-eval-print loop or passed to EVAL are in effect compiled before being run. In implementation, there is an interpreter, but it operates on the internal representation produced by the compiler's font-end.
It is not recommended that programs be debugged by running the whole program interpreted, since Python and the debugger eliminate the main reasons for debugging using the interpreter:
Note that the debugger does not currently support single-stepping. Also, the interpreter's pre-processing freezes in the macro definitions in effect at the time an interpreted function is defined. Until we implement automatic reprocessing when macros are redefined, it is necessary to re-evaluate the definition of an interpreted function to cause new macro definitions to be noticed.
The CMU CL documentation is printed as tech reports, and is available (at CMU) in the document room:
Non-CMU users may get documentation from the doc/ directory in the binary distribution:
Bug reports should be sent to cmucl-bugs@cs.cmu.edu. Please consult your local CMU CL maintainer or Common Lisp expert to verify that the problem really is a bug before sending to this list.
The CMU Common Lisp project is no longer funded, so only minimal support is being done at CMU. There is a net community of mucl{} users and maintainers who communicate via comp.lang.lisp and the cmucl-bugs@cs.cmu.edu mailing list.
CMU Common Lisp is a public domain implementation of Common Lisp. Both sources and executables are freely available via anonymous FTP; this software is "as is", and has no warranty of any kind. CMU and the authors assume no responsibility for the consequences of any use of this software. See the README file in the distribution for FTP instructions.
Organizationally, CMU Common Lisp was a small, mostly autonomous part within the Mach operating system project. The CMU CL project was more of a tool development effort than a research project. The project started out as Spice Lisp, which provided a modern Lisp implementation for use in the CMU community. CMU CL has been under continuous development since the early 1980's (concurrent with the Common Lisp standardization effort.) Most of the CMU Common Lisp implementors are now working on the Gwydion environment for Dylan (see http://legend.gwydion.cs.cmu.edu:8001/gwydion/.)
CMU CL was funded by DARPA under CMU's "Research on Parallel Computing" contract. Rather than doing pure research on programming languages and environments, the emphasis was on developing practical programming tools. Sometimes this required new technology, but much of the work was in creating a Common Lisp environment that incorporates state-of-the-art features from existing systems (both Lisp and non-Lisp.)
Because sources are freely available, CMU Common Lisp has been ported to experimental hardware, and used as a basis for research in programming language and environment construction.
lisp(1), README
The ``CMU Common Lisp User's Manual'',
the ``Hemlock User's Manual'', and
the ``Hemlock Command Implementor's Manual''
October 15, 1991 | 7th Edition |