Milano, Italy -- Jun 17, 2001 -- 13:33 CEST
Paolo Amoroso (editor), amoroso@mclink.it
In this section you will find information about the purpose of the EncyCMUCLopedia, its availability and structure, its copyright and licensing status, and how to provide feedback to the editor.
This is the EncyCMUCLopedia, an extensive collection of documents concerning CMU Common Lisp (CMU CL). CMU CL is a free, high-quality ANSI Common Lisp system for Unix workstations originally developed at the School of Computer Science at Carnegie Mellon University.
The EncyCMUCLopedia is intended as a resource for both users and implementors. Its purpose is to package and present all useful material directly related to CMU CL. The EncyCMUCLopedia does not contain, however, references to introductory Common Lisp material, for which you may check the Web site of the Association of Lisp Users (ALU). It is not a tutorial or reference guide to CMU CL either.
The documents included here were written at different times by different authors, mostly CMU CL developers. The information they contain may be incomplete, incorrect or out of date. It is your responsibility to check its accuracy. As the editor of the EncyCMUCLopedia I look for interesting material, organize it, add appropriate comments and cross references to an index, and package the collection for distribution. See below for information on how documents are selected and organized.
All material written in the context of the CMU CL project, and the EncyCMUCLopedia as an aggregation of content, comes with the following lack of warranty:
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. The author(s) do not accept responsibility to anyone for the consequences of using it or for whether it serves any particular purpose or works at all. No warranty is made about the software or its performance. This software is made available AS IS, and is distributed without warranty of any kind, either expressed or implied. In no event will the author(s) or their institutions be liable to you for damages, including lost profits, lost monies, or other special, incidental or consequential damages arising out of or in connection with the use or inability to use (including but not limited to loss of data or data being rendered inaccurate or losses sustained by third parties or a failure of the program to operate as documented) the program, even if you have been advised of the possibility of such damages, or for any claim by any other party, whether in an action of contract, negligence, or other tortious action.
For documents prepared in other contexts each entry contains appropriate copyright, lack of warranty and licensing information. Check these conditions before redistributing part or all of this collection, or before preparing derivative works.
[Contents]
The EncyCMUCLopedia packages in a single collection most of the existing documentation on CMU CL. It also comes with a sort of annotated bibliography, the page you are reading now, with comments and links to the actual documents.
The distribution of the EncyCMUCLopedia is available at:
http://cvs2.cons.org:8000/cmucl/doc/EncyCMUCLopedia/and consists of a compressed archive whose name has the following structure:
encycmuclopedia-yyyymmdd[d].tar.gz encycmuclopedia-yyyymmdd[d].tar.bz2where the date
yyyymmdd
provides version information
and the optional d
character flags draft releases. The version
with the bz2
extension was processed with the more space
efficient bzip2
file compressor.
To install the EncyCMUCLopedia you need about 10MB of disk space. Just
extract the compressed archive in a suitable directory such as
/usr/local/lib/cmucl
. Then open file index.html
in doc
, the top-level directory of the distribution, with any
Web browser.
[Contents]
This collection includes material directly related to the CMU CL system, its development environment, language extensions and libraries. Since CMU CL is mostly compliant with ANSI Common Lisp, general and introductory Common Lisp and CLOS documents have been left out from the EncyCMUCLopedia.
Any Common Lisp or CLOS book is a good source of information about standard language features. If you are interested in such material, check the Web site of the Association of Lisp Users (ALU) or download the CMU CL distribution for Debian Linux, which comes with Common Lisp and CLOS tutorials.
The documents in the EncyCMUCLopedia come from different sources and may be incomplete, inaccurate or out of date. They may also not cover all the features of the system and its use. Therefore, their grouping in the following sections reflects the state of available material, not a comprehensive and accurate classification of CMU CL's features. In other words, if a topic is not mentioned in the EncyCMUCLopedia, there's probably no documentation about it.
Documents are listed in entries similar to the following sample one:
Copyright and licensing information.
[Contents]
Feedback on the EncyCMUCLopedia is welcome and encouraged. If you have
comments or suggestions, or you are willing to contribute new documents or
corrections, write to Paolo Amoroso amoroso@mclink.it
. Feel
free to critique every aspect of this work, from the selection of documents
to the layout of this index, from its content to my unoptimized English
compiler.
[Contents]
I would like to thank all those who provided me with help and
encouragement for this project. Marco Antoniotti sent me the Motif
interface documents he converted to LaTeX2e. Daniel Barlow contributed
several documents. Gary Byers contributed the notes on the PowerPC
port. Martin Cracauer hosted the EncyCMUCLopedia at cons.org
and provided some
material. Vinodh Das pointed out some "stealth" typos. Jerry
Gregg contributed his article on installing CMU CL. Robert MacLachlan and
Pierre R. Mai granted permission to include their newsgroup and mailing
list messages. Eric Marsden provided the updated CMU CL user's
manual. William Harold Newman shared his notes on SBCL. I thank Antonio
Piccolboni for his feedback -- and you should thank him too, because he
spared you the trouble of reading early drafts of the EncyCMUCLopedia. Russ
Urquhart kindly converted the CLX reference manual to PostScript and PDF
from the Interleaf source, probably making it possible to comfortably
browse it for the first time in the history of Lispkind. Peter Van Eynde
put together an extensive collection of CMU CL documents, from which I took
some material.
Fortunately for them, I take all the responsibility for any errors, inaccuracies or omissions in this work. But unfortunately for them, I take all the fun of the project.
[Contents]
It is not necessary to read all the material referenced in the EncyCMUCLopedia. Users are often interested in quickly accessing the documentation that may help them in solving particular problems with CMU CL, or in using the system and its tools to perform various tasks.
So the following subsections are structured around typical goal-based user profiles. Read their introductions to see whether they match the tasks you are interested in. If so, follow the suggested steps. The paths are ordered so that background material, and other important or relevant information, is given first. If you find what you need before the end of a path you may safely skip the remaining entries.
Regardless of the user's goals, the CMUCL User's Manual should probably be a required reading for everybody.
If you are a Common Lisp programmer who needs to become familiar with CMU CL, or you are new to the language and need to install and use the system, this reading path is for you. You may stop at step 4 if you would just like to learn more about CMU CL in order to decide whether it's the right system for you. Here is what you may do:
cmucl
online manual page
lisp
online manual page
for general usage information
[Contents]
This reading path is for you if you need to build CMU CL from source because you have slightly modified the system, added minor features, or you would just like to customize it. Follow these steps:
[Contents]
If you are an experienced Common Lisp programmer and you would like to do major changes to CMU CL, contribute to its maintenance and further development, or simply understand how it works, this reading path is for you. First become familiar with building and modifying the system, then follow these further steps:
[Contents]
The documentation grouped in this section covers topics of interest to CMU CL users. In this context users are programmers who develop Common Lisp applications with CMU CL.
This subsection references documents that provide general information about CMU CL and discuss user interface issues, programming tools and language extensions.
This document is in the public domain.
These documents are in the public domain.
man cmucl
shell command. It provides an overview of the features of CMU CL.
This document is in the public domain.
man
cmuclconfig
shell command. The cmuclconfig
utility, available only on the Debian Linux port, dumps custom Lisp
images containing selected packages such as the CLX and Motif Toolkit
interfaces to the X Window system, and the Hemlock editor.
This document is in the public domain.
Although the document deals mainly with Linux, most of the information applies also to other ports of CMU CL.
This document is in the public domain.
man
lisp
shell command. It contains information about running
(command line options) and configuring (environment variables,
location of important files) CMU CL.
This document is in the public domain.
Concerning design choices, the manual describes data representation, garbage collection strategies, interrupt processing and other implementation dependent issues. It also extensively discusses Python (the CMU CL compiler; no relation with the Python programming language), and the programming styles and techniques it encourages.
The tools presented in the manual are the source level debugger and its programming interface, the profiler, and the Python compiler. Note, however, that this document does not deal with the Hemlock editor, which comes with a separate user manual.
The language extensions described in CMU CL's user manual are the facilities for running external programs, a Unix interface, event dispatching facilities, a foreign function call interface, and support for interprocess communication and remote procedure call. The CMU CL multi-processing extension is currently available only on the x86 port. For more information, refer to the documents about multi-processing.
Included with permission.
config
, the utility for dumping custom
Lisp images. If you use the Debian Linux port check the manual of cmuclconfig
, a
front-end to config
.
This document is in the public domain.
This is the Common Lisp Controller specification. The first version of CMU CL with support for this proposal is 2.5.0 for Debian Linux.
Included with permission.
This article was originally posted to the
comp.lang.lisp
newsgroup (Subject: cmucl on linux (redhat 7.0) easy
install.
).
Included with permission.
This document is in the public domain.
This document is in the public domain.
[Contents]
Documents in this subsection explain how to use Hemlock, the editor which comes with CMU CL, or to interact with CMU CL through Emacs.
This manual explains how to edit Lisp source code, evaluate it and interact with the Lisp system, manage multiple windows, obtain documentation, perform simple customizations, and more. Since Hemlock is written in Lisp, the user can extensively customize it and add new features. For learning how to do it see the command implementor's manual.
Included with permission.
This document is in the public domain.
This document is in the public domain.
[Contents]
Information and tips for using PCL, the CLOS implementation which comes with CMU CL.
comp.lang.lisp
newsgroup
(Subject: Re: Are there "constructors" in CLOS?
), the
author provides some details on the performance of a large simulation
toolkit written with CMU CL, whose PCL implementation outperformed
all the alternative implementations he tried. Some
data on benchmarks of PCL with the CLISP implementation of CLOS
are also included.
Included with permission.
cmucl-imp
mailing
list (Subject: Re: Spurious range warnings
), briefly
tells the author's experience with benchmarking the CLOS
implementation of CMU CL, PCL, with other CLOS implementations. He
used for this both micro-bencharks and large applications for
production use.
Included with permission.
comp.lang.lisp
newsgroup
(Subject: Re: Can I use Lisp?
), the author speculates on
the possible origin of the impressions on the poor performance of
PCL, the CMU CL implementation of CLOS.
Included with permission.
Subject: Re: Core Lisp
).
Included with permission.
comp.lang.lisp
newsgroup
(Subject: Re: MOP/pcl anomaly in CMUCL?
), provides some
tips for using PCL symbols and the MOP (Metaobject
Protocol).
Included with permission.
[Contents]
The documents grouped in this subsection summarize the CMU CL multi-processing facilities, currently available only on the x86 port and still under development, based on threads.
This document, available at the Web site of Xanalys, is the
section of the CLIM manual that illustrates the functions for
creating and holding locks (mutexes). CMU CL, however, does
not support the functions for managing recursive locks
(make-recursive-lock
and
with-recursive-lock-held
) mentioned in the manual.
Copyright © 1995-1999 Harlequin Group plc. All rights reserved.
Note that the EncyCMUCLopedia includes just a link to this document, not the document itself.
This document, available at the Web site of Xanalys, is the section of the CLIM manual that illustrates the functions for creating, destroying, accessing and waiting for processes. Notice that CMU CL provides other functions not discussed in the document, and that its code base is not too interrupt safe yet. The interrupt safety on the x86 port, however, is improving.
Copyright © 1995-1999 Harlequin Group plc. All rights reserved.
Note that the EncyCMUCLopedia includes just a link to this document, not the document itself.
[Contents]
This subsection includes documents that deal with using CMU CL for network programming and developing distributed applications.
This document is in the public domain.
This document is in the public domain.
[Contents]
This subsection collects documents about programming with CLX and the Motif Toolkit, the low and high level CMU CL interfaces to the X Window system.
This is both a user guide and a reference manual for CLM. It explains how to access CLM, write and debug applications, instantiate widgets and handle input events. Be sure to check the differences of the CMU CL Motif Toolkit Interface from CLM summarized in the design notes on the Motif interface. You may also need to refer to the CLX manual for low-level graphics functions needed for drawing into widgets.
Copyright 1992 GMD (German National Research Center for Computer Science)
Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of GMD not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. GMD makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
GMD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL GMD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
The manual describes all the functions for performing primitive graphics operations and managing input events. It is assumed that the reader is familiar with Xlib.
© 1988, 1989 Texas Instruments Incorporated
Permission is granted to any individual or institution to use, copy, modify and distribute this document, provided that this complete copyright and permission notice is maintained, intact, in all copies and supporting documentation. Texas Instruments Incorporated makes no representations about the suitability of this document or the software described herein for any purpose. It is provided "as is" without express or implied warranty.
This document explains how to start the server, connect to it and invoke Motif functions. Be sure to check the differences with CLM summarized in the design notes on the Motif interface. For more information on CLM programming, see the CLM manual.
This document is in the public domain.
[Contents]
The documentation grouped in this section, which covers advanced topics, is meant for CMU CL implementors. In this context implementors are experienced Common Lisp programmers who are interested in contributing to the development of CMU CL, building the system from source or understanding how it works.
Documents in this subsection discuss the design and implementation of the CMU CL system, its compiler and runtime libraries.
This document is in the public domain.
Included with permission.
This document is in the public domain.
The manual illustrates the functions, macros and data structures needed for modifying existing commands or adding new ones. For learning how to use Hemlock for editing Lisp source code, see the user's manual.
Included with permission.
cmucl-imp
mailing
list (Subject: Re: Non Vector SIMPLE Arrays.
), provides
information on global optimization motivated by a discussion on array
implementation. It deals with reaching definitions, loop invariants
and common subexpression elimination.
Included with permission.
cmucl-imp
mailing
list (Subject: Re: Non Vector SIMPLE Arrays.
), collects
miscellaneous notes on the implementation of the compiler. Among the
discussed topics are compilation phases, various kinds of analysis,
intermediate code representation, optimizations, types and virtual
operations.
Included with permission.
This document is in the public domain.
This document is in the public domain.
This document is in the public domain.
This document is in the public domain.
[Contents]
The documents grouped in the entries below discuss the CMU CL compiler support for the MIPS processor architecture.
This document is in the public domain.
This document is in the public domain.
This document is in the public domain.
[Contents]
Here you will learn how to build a running CMU CL system from source or port it to new architectures.
This document is in the public domain.
The CMU CL Compilation howto, which is currently
out of date, explains the compilation process and
some of the custom scripts it's based on. The README
file mentioned in the note at the beginning of the document is CMU CL compilation steps.
If you use the Debian Linux port, check its simpler compilation procedure.
This document is in the public domain.
This document is in the public domain.
glibc
libc
snapshot that had been ported to the PowerPC). These
notes from that project deal with memory addresses, Lisp kernel and
signal handling, Unix interface, backend issues and more. They are
useful to developers interested in reviving the port.
Gary's compiler code has been integrated into the main CMU CL source tree and updated for changes since it was written. The C code and some of the supporting Lisp code has not been integrated yet, and it may need some work before it can run.
Included with permission.
This document is in the public domain.
glibc
2.x
supported under Linux.
This document is in the public domain.
Included with permission.
This document is in the public domain.
This message was originally posted to the cmucl-help
mailing list (Subject: Re: Bootstrapping
).
Included with permission.
This document is in the public domain.
[Contents]
The documents in this subsection deal with the design and implementation of CLOS under CMU CL.
The following copyright and license applies to each of the PCL release notes:
Copyright (c) 1985, 1986, 1987, 1988, 1989 Xerox Corporation. All rights reserved.
Use and copying of this document is permitted. Any distribution of this document must comply with all applicable United States export control laws.
This document discusses the advantages of the LAP code interface and illustrates important meta-types, vector indexing, optimization issues and port specific functions. It finally describes the LAP code itself and includes a few examples.
Copyright (c) 1985, 1986, 1987, 1988, 1989 Xerox Corporation. All rights reserved.
Use and copying of this document is permitted. Any distribution of this document must comply with all applicable United States export control laws.
The document included here is the part of the book -- chapters 5 and 6 -- dealing with the PCL Metaobject Protocol (MOP). The MOP is an object-oriented programming interface to the implementation and behavior of the PCL object system. Those chapters present the system's metaobject classes and their generic functions and methods.
© Copyright 1991 MIT Press.
The authors of the book write:
To this end, for Part II only (chapters 5 and 6), we grant permission to prepare revisions or other derivative works including any amount of the original text. We ask only that you properly acknowledge the source of the original text and explicitly allow subsequent revisions and derivative works under the same terms. To further facilitate improvements in this work, we have made the electronic source for these chapters publicly available; it can be accessed by anonymous FTP from the /pcl/mopdirectory on
arisia.xerox.com
.
The address of the FTP site mentioned by the authors is no longer
valid. The current one is ftp://parcftp.xerox.com/pub/pcl/mop/
.
[Contents]
Documents in this subsection discuss the design and implementation of the CMU CL interfaces to the X Window system.
This document discusses low level issues of the toolkit interface such as packet formats, object representation and server structure. The document also summarizes the differences with CLM. For more information about toolkit programming, see the instructions for accessing the toolkit and the CLM manual.
This document is in the public domain.
[Contents]