CMUCL
   HOME

TheInfoList



OR:

CMUCL is a free
Common Lisp Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
implementation, originally developed at
Carnegie Mellon University Carnegie Mellon University (CMU) is a private research university in Pittsburgh, Pennsylvania, United States. The institution was established in 1900 by Andrew Carnegie as the Carnegie Technical Schools. In 1912, it became the Carnegie Institu ...
. CMUCL runs on most
Unix-like A Unix-like (sometimes referred to as UN*X, *nix or *NIX) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Uni ...
platforms, including
Linux Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
and
BSD The Berkeley Software Distribution (BSD), also known as Berkeley Unix or BSD Unix, is a discontinued Unix operating system developed and distributed by the Computer Systems Research Group (CSRG) at the University of California, Berkeley, beginni ...
; there is an experimental
Windows Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
port as well.
Steel Bank Common Lisp Steel Bank Common Lisp (SBCL) is a free and open-source Common Lisp implementation that features a high-performance native compiler, Unicode support and threading. It is open source software, with a permissive license. In addition to the compile ...
is derived from CMUCL. The Scieneer Common Lisp was a commercial derivative from CMUCL.


History

The earliest implementation predates Common Lisp and was part of Spice Lisp, around 1980. In 1985 Rob MacLachlan started re-writing the compiler to what would become the Python compiler and CMUCL was ported to Unix workstations such as the IBM PC RT, MIPS and SPARC. Early CMUCL releases did not support Intel's x86 architecture due to a lack of registers. CMUCL strictly separated type-tagged and immediate data types and the garbage collector would rely on knowing that one half of the CPU registers could only hold tagged types and the other half only untagged types. This did not leave enough registers for a Python backend. After CMU canceled the project (in favor of a Dylan implementation using some of CMUCL's compiler base) maintenance has been taken over by a group of volunteers. By 1996 this group was making regular releases on its own infrastructure. Around the same time a port to Intel's x86 architecture was completed, first running on
FreeBSD FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
, later
Linux Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
. The problem of lacking registers was solved by a new conservative garbage collector. This new garbage collector accepts any value of any type in the registers, and treats anything that might be a pointer as a pointer for the purpose of not collecting or moving its target.


Compiler and other code execution units

* CMUCL features an interpreter that is mainly used for the REPL, but can be used for faster loading of Lisp files that don't need compilation. * A machine to interpret compact bytecode (which can be emitted from the compiler). This is rarely used now, but was popular in early CMUCL releases because image sizes were drastically reduced at a time where download bandwidth on the Internet was low. * A native code
compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
named "Python" (not to be confused with the Python programming language). If Common Lisp source code has been written with appropriate declarations and is organized with speed in mind the Python compiler generates code that is almost free from overhead compared to code compiled from languages like C++. Some inefficiencies such as function call interfaces and lack of pointer-free arrays of user-defined data types are dictated by the Common Lisp standard and still need to be worked around (e.g. by inlining more and using macros to build constructs that look like user-defined structures but are actually accessing fields in preallocated specialized arrays). The Python compiler also features powerful
type inference Type inference, sometimes called type reconstruction, refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some bran ...
s, helping the programmer in writing overhead-free code by either inferring types automatically or issuing hints about missed optimization opportunities.


Features

* Generational
garbage collection Waste collection is a part of the process of waste management. It is the transfer of solid waste from the point of use and disposal to the point of treatment or landfill. Waste collection also includes the curbside collection of recyclable ...
and multiprocessing capability on the x86 ports. * A
foreign function interface A foreign function interface (FFI) is a mechanism by which a program written in one programming language can call routines or make use of services written or compiled in another one. An FFI is often used in contexts where calls are made into a bin ...
which allows interfacing with C code and system libraries, including
shared libraries In computing, a library is a collection of resources that can be leveraged during software development to implement a computer program. Commonly, a library consists of executable code such as compiled functions and classes, or a library can ...
on most platforms, and direct access to
Unix Unix (, ; trademarked as UNIX) is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
system calls In computing, a system call (syscall) is the programmatic way in which a computer program requests a service from the operating system on which it is executed. This may include hardware-related services (for example, accessing a hard disk drive ...
. * Support for
interprocess communication In computer science, interprocess communication (IPC) is the sharing of data between running processes in a computer system. Mechanisms for IPC may be provided by an operating system. Applications which use IPC are often categorized as clients ...
and
remote procedure call In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared computer network), which is written as if it were a ...
s. * An implementation of CLOS, the Common Lisp Object System, which includes multimethods and a metaobject protocol. * A graphical source-level debugger using a Motif interface, and a code profiler. * An interface to the X11 Window System (CLX), and a sophisticated graphical widget library (Garnet). * Programmer-extensible input and output streams. * Hemlock, an
Emacs Emacs (), originally named EMACS (an acronym for "Editor Macros"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, s ...
-like editor implemented in Common Lisp.


See also

*
Steel Bank Common Lisp Steel Bank Common Lisp (SBCL) is a free and open-source Common Lisp implementation that features a high-performance native compiler, Unicode support and threading. It is open source software, with a permissive license. In addition to the compile ...


References


External links


CMUCL Home Page
{{DEFAULTSORT:Cmu Common Lisp Carnegie Mellon University software Common Lisp implementations Common Lisp (programming language) software Free and open source compilers Free and open source interpreters Public-domain software with source code