The EncyCMUCLopedia

A CMU Common Lisp Documentation Collection

Milano, Italy -- Mar 29, 2001 -- 16:17 CEST

Paolo Amoroso (editor), amoroso@mclink.it

Revision history

Contents

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; a more complete and up to date site is maintained by Eric Marsden). 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:

encycmuclopedia-yyyymmdd[d].tar.gz encycmuclopedia-yyyymmdd[d].tar.bz2

yyyymmdd

d

bz2

bzip2

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:

Document title (within each section, titles are sorted in alphabetical order)

Author(s) -- Last modification date

[PostScript] [PDF] [HTML] [ASCII] [Online version] [Additional online material]: links to the available formats for the document (you may need to configure your Web browser to view some of them), and possibly to the latest online version and additional material, such as source code or scripts Description of the document's purpose and content. 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 documents from his Web site. 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. 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 CMU Common Lisp 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:

[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.

[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.

Hemlock User's Manual

Bill Chiles, Robert MacLachlan

[PostScript] Hemlock is the integrated editor which comes with CMU CL. It follows the tradition of early versions of Emacs and of the Lisp Machine editor ZWEI. 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. This document is in the public domain. Notes on using Hemlock

Peter Van Eynde -- May 1999

[ASCII] This note provides basic information for starting and exiting a session with Hemlock, the integrated editor included with CMU CL. For an in-depth discussion of Hemlock's features see its user manual. This document is in the public domain. Notes on using ILISP

Peter Van Eynde -- February 2001

[ASCII] ILISP is an Emacs major mode for interacting with inferior Lisp processes. Besides telling where to find ILISP, this note explains how to configure Emacs to work with ILISP and lists its main commands. This document is in the public domain.

[Contents]

Information and tips for using PCL, the CLOS implementation which comes with CMU CL.

[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.

Locks

CLIM developers -- CLIM 2.0 User's Guide; October 1998 (last update January 12, 1999)

[Online version] CMU CL provides a multi-processing extension via threads, currently available only on the x86 port, based on the model implemented by the CLIM graphical user interface manager for Common Lisp. 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. Multi-Processing

CLIM developers -- CLIM 2.0 User's Guide; October 1998 (last update January 12, 1999)

[Online version] CMU CL provides a multi-processing extension via threads, currently available only on the x86 port, based on the model implemented by the CLIM graphical user interface manager for Common Lisp. 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.

[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.

[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.

[Contents]

The documents grouped in the entries below discuss the CMU CL compiler support for the MIPS processor architecture.

MIPS register usage

CMU CL developers

[ASCII] A table illustrating how CMU CL uses the registers of a MIPS CPU. This document is in the public domain. Notes on MIPS calling conventions

Robert A. MacLachlan -- February 7, 1990

[ASCII] This note describes the calling conventions followed by the various kinds of function calls. This document is in the public domain. Random notes on MIPS specific issues

Chris Hoover -- March 2, 1990

[ASCII] This note describes functions used by the back-end of the CMU CL compiler for the MIPS architecture. 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.

[Contents]

The documents in this subsection deal with the design and implementation of CLOS under CMU CL.

[Contents]

Documents in this subsection discuss the design and implementation of the CMU CL interfaces to the X Window system.

General Design Notes on the Motif Toolkit Interface

CMU CL developers

[PostScript] CLM is a Common Lisp interface to the OSF Motif X Window toolkit. CMU CL supports a similar interface, the Motif Toolkit Interface, which is based on a server that provides Lisp clients with access to Motif functions through remote procedure call facilities. 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]