The index for the Allegro CL Documentation is in index.htm. The documentation is described in introduction.htm.
This document contains the following sections:
1.0 Documentation introductionThe main page for the index for the Allegro CL documentation is index.htm. That file points to index pages for each letter (some letters are combined). There are pages with Common Graphics functionality and pages without Common Graphics functionality. The latter are more useful for UNIX users, because Common Graphics is not available on UNIX.
The contents of the overview documents is in contents.htm.
The documentation for Allegro CL 6.0 is online. PDF versions of the HTML files in the doc/ directory and in the cg/ subdirectory (but not for files in the pages/ subdirectory) are available in the doc/ subdirectory of the distribution CD. It is arranged into an overview section and a reference section.
Installation information can be found in installation.htm.
The release notes for 6.0 can be found in release-notes.htm.
The User Guide for the Emacs-Lisp interface is in eli.htm.
The documentation for Common Graphics and the Integrated Development Environment is integrated with the general Allegro CL documentation. Start with cgide.htm. The section About Common Graphics and IDE documentation in that document provides a map of CG and IDE documentation.
The ANSI specification is reproduced in ANSI Common Lisp (the link is to the initial page). See also Allegro CL and the ANSI CL standard and Compliance with the ANSI specification in implementation.htm.
Allegro directory | Used two ways: (1) the directory in which Allegro CL is installed, and (2) the translation of the sys: logical host, which is the directory where files needed while Allegro CL is running are located. We use the same term for both because these are normally the same directory. (sys: in fact translates to the directory containing the Allegro CL executable, usually mlisp or mlisp.exe, usually located in the directory into which Allegro CL was installed.) |
Allegro executable or executable | The file which is invoked to run Allegro CL. This is a small file and is not usually created by users (but see main.htm). The executable can be copied and/or renamed as desired, however. In Allegro CL 6.0, there are a number of execuatbles provided, each with an associated image file: mlisp (modern, case-sensitive lower, supports international character sets), mlisp8 (modern, case-sensitive lower, does not support international character sets), alisp (ansi, case-insensitive upper, supports international character sets), alisp8 (ansi, case-insensitive upper, does not support international character sets). On Windows, the executables have type .exe. |
Allegro image file or image | This file contains the bulk of Lisp data. It is typically large and has the extension dxl. The executable can only be run with an image file. Image files can be created by users (with, e.g., build-lisp-image and dumplisp). |
Html files in the doc subdirectory of the Allegro directory (the directory where Allegro CL and related products were installed from the CD) describe the various features of Allegro CL. There are links where necessary between these files and to relevant files in the reference section.
PDF versions of these files are available in the doc/ subdirectory of the CD.
The document contents.htm is an outline of the Allegro CL documentation in table of contents format. The outline is too large to reasonably be included in this document.
Here is a list of the HTML (and several PDF) files that make up the base Allegro CL documentation.
To view the PDF files (such as clim-ug.pdf and allegrostore.pdf), you must have an Adobe Acrobat (r) Reader. This is available free from Adobe. Go to this lcoation for further information: www.adobe.com/products/acrobat/readstep.html.
aodbc.htm | This file describes version 2 of Allegro ODBC. |
allegrostore.pdf | This document is the AllegroStore User Guide,
which was provided as a printed
(hardcopy) document in earlier releases and, starting with release 6.0,
is a PDF file. Assuming you have an Adobe Acrobat Reader, clicking on the
link will display the AllegroStore User Guide in your browser.
Note that the
table of contents and the Index contain active links.
Note that AllegroStore is an add-on product and you may not be licensed
to use it. Also, it is not available on all Allegro CL platforms.
To view the PDF files (such as this one), you must have an Adobe Acrobat (r) Reader. This is available free from Adobe. Go to this lcoation for further information: www.adobe.com/products/acrobat/readstep.html. |
aserve/aserve.html | AllegroServe is a Web Server facility. See also aserve/tutorial.html and aserve/htmlgen.html. These documents are not listed in contents.htm. |
basic-lisp-techniques.pdf | This document (in pdf format) is an
introduction to Lisp and Lisp programming written by
David Cooper.
To view the PDF files (such as this one), you must have an Adobe Acrobat (r) Reader. This is available free from Adobe. Go to this lcoation for further information: www.adobe.com/products/acrobat/readstep.html. |
building-images.htm | The function build-lisp-image creates a new image from existing components, inheriting a few features but no functionality from the running image (the one in which build-lisp-image is called). This document describes the build-lisp-image functionality and describes how to make custom images configured for your purposes. Note that creating an image which contains the functionality of the running Lisp image is done with dumplisp (see dumplisp) while creating images for delivery is done with generate-application, described in delivery.htm. |
case.htm | As an extension to standard Common Lisp, Allegro CL permits case sensitivity. This document discusses the issues with case sensitivity. |
cgide.htm | [Windows only] Starting in release 6.0, the Common Graphics, Integrated Development Environment documentation is integrated into the general Allegro CL documentation. This is the introductory document. |
clim-ug.pdf | This document is the CLIM User Guide,
which was provided as a printed
(hardcopy) document in earlier releases and, starting with release 6.0,
is a PDF file. Assuming you have an Adobe Acrobat Reader, clicking on the
link will display the CLIM User Guide in your browser. Note that the
table of contents and the Index contain active links.
Note that CLIM is an add-on product and you may not be licensed
to use it.
To view the PDF files (such as this one), you must have an Adobe Acrobat (r) Reader. This is available free from Adobe. Go to this lcoation for further information: www.adobe.com/products/acrobat/readstep.html. |
compiling.htm | This document describes the compiler. It provides information on how code generated by the compiler is controlled by the safety, space, speed, and debug optimization qualities. Information is also provided on declarations that will speed up code and tools for determining the effectiveness of declarations. |
composer.htm | This document describes the Allegro Composer utilty (available on UNIX platforms only). Allegro Composer provides windowized tools for development. |
cross-reference.htm | This document describes the cross reference facility in Allegro CL. This facility can analyze Lisp code and determine what functions call what other functions and what functions are called by other functions. |
debugging.htm | This document provides information about internals of the Allegro CL debugger to assist application writers who wish to provide customized debugging facilities in their applications. Note that this document does not contain information needed for ordinary use of Allegro CL. This document is not listed in contents.htm. |
debugging.htm | This document describes the debugger in Allegro CL. The commands that provide debugging information and features of the debugger are discussed. |
defsystem.htm | Defsystem is a facility for managing files associated with an application. (It allows specifying the order in which files should be processed and the dependence of one file on another etc.) This document describes the defsystem facility in Allegro CL. |
delivery.htm | This document describes how to deliver an application written in Allegro CL. There is also a description of how to establish a patch system for your application which complements the patch system for Allegro CL, and other delivery-related issues. |
dns.htm | This document describes Allegro CL support for for Domain Naming Systems. |
dumplisp.htm | dumplisp creates a new Lisp image file. However, the file created by dumplisp contains most of the functionality present in the currently running images, so all defined functionality will still be defined, and the current values of variables will be retained -- for the most part, see the document for details. (Contrast this with build-lisp-image which produces a fresh image which inherits very little from the running Lisp image.) This document describes dumplisp functionality and discusses issues of importance when using dumplisp. |
eli.htm | This document describes the Emacs-Lisp interface provided with Allegro CL. See also Running Lisp as a subprocess of Emacs for information on connecting Emacs to Allegro CL. |
errata.htm | This file is intended to list errors found in the Allegro CL documentation. Initially, the file is present but no errors are listed. When the file is updated, reported errors will be listed. |
errors.htm | Some common errors which may be encountered while using Allegro CL are discussed, along with, where possible, suggestions for fixing them. The condition system type hierarchy in Allegro CL is also discussed. |
flavors.htm | Flavors is an object-oriented system for use in Lisp. It predates and has been effectively replaced by CLOS. We maintain flavors for backward-compatibility only. The Allegro CL flavors implementation is described in this document. Note that the reference portion (definitions of functions, macros, variables, etc.) is included with the text of this document. (Most functionality is described in the reference section of the documentation rather than being integrated into these html documents.) This document is unchanged for the 6.0 release. |
foreign-functions.htm | The foreign function interface allows compiled foreign code to be loaded into a Lisp image and run from Lisp. (Foreign means C, C++, and Fortran, along with other C compatible object files.) Because of differing internal representations of data, it is not entirely straightforward to pass data from Lisp to C, to call foreign functions from Lisp, and to call back to Lisp from a foreign function. This document describes the tools provided for defining and calling foreign code. |
ftype.htm | This document describes how foreign types (e.g. C longs and shorts, C strings, C structures, etc.) can be defined in Lisp and how Lisp can access and operate on instances of foreign types. |
fwrappers-and-advice.htm | The new fwrapper facility and the old, deprecated advice facility, both allow adding code that is run around functions (in some ways similar to around methods).) This document describes how to use these facilities and has links to the relevant reference documentation. |
gray-streams.htm | This file provides details of the implementation of Gray streams in Allegro CL. Gray streams are the older stream implementation. Release 6.0 implements simple-streams, which have advantages over Gray streams, but Gray streams are still supported. Simple-streams are described in streams.htm. |
gc.htm | Lisp maintains a garbage collector which regularly frees up space in the Lisp heap which is no longer used. This process is called garbage collection. While garbage collection is fully automatic and so a user need not necessarily think about it, configuring the garbage collector to a specific application or to a pattern of Lisp use often results in significantly better performance. |
iacl.htm | This document describes International character set support in Allegro CL. In earlier releases, such support was only available with a separate version but in 6.0, all Allegro CL versions can support international character sets (though non-international executables are also provided -- mlisp8 for example). |
implementation.htm | This document provides specific information about the implementation of Allegro CL. Many details of the Common Lisp standard are implementation-dependent (such as the number of distinct floating-point types and their mapping to machine floats, the largest fixnum, the implementation of random, etc.) and this document says what Allegro CL does. Also discussed are extensions to Common Lisp functions (such as open, make-array, and others where an Allegro-specific enhancement is provided). |
index.htm | This document provides links to other documents, including links to all Allegro CL functions, variables, etc. |
inspector.htm | This document describes the non-windowized inspector. (Users on Windows with the Integrated Development Environment get all the functionality described in this document in inspector windows.) |
installation.htm | This document describes how to install Allegro CL and related products. |
introduction.htm | The document you are now reading. |
jlinker.htm | This document describes a Java/Lisp interface available with Allegro CL. |
loading.htm | This document describes details of the implementation of cl:load (such as where is a file with no path information looked for). cl:require is also discussed. |
main.htm | Allegro CL allows you to define your own C main(), as described in this document. |
miscellaneous.htm | This document describes functionality too limited to need a separate document. |
mop/contents.html | The files in the mop/
subdirectory are an HTML version of the description of the
MetaObject Protocol in chapters 5 and 6 of The Art of MetaObject
Protocol by G. Koczales, J. des Rivieres, and D. Brobrow.
The HTML version was prepared by Howard Stearns and
copyrighted by the Elwood Corporation, as described in
mop/admin.html.
We thank Mr. Stearns and the Elwood Corporation for their kind permission in allowing Franz Inc. to use these files in our product. Much useful information about Lisp, including these files, can be found on the Association of Lisp Users (ALU) home page, maintained by the Elwood Corporation, at http://www.elwoodcorp.com/alu/. |
multiprocessing.htm | Allegro CL supports multiprocessing using lightweight processes (within the running Lisp process) on UNIX and multiprocessing using OS threads on Windows. The functionality is described in this document. |
ole.htm | A document describing interfacing to OLE. Allegro CL 6.0 for Windows only. |
orblink | Allegro CL includes an Orblink implementation. Its is documented in its own directory. Start with readme.htm in the orblink directory. |
os-interface.htm | This document describes how to run OS functionality from within Lisp and also how to find out the current directory, how to change the current directory, and other aspects of interfacing with the operating system. |
packages.htm | This document provides details of the implementation of packages in Allegro CL and includes a description of package locking (which prevents accidental redefinition of Common Lisp and Allegro CL functionality). |
pathnames.htm | This document provides information on the implementation of pathnames (including logical pathnames) in Allegro CL. |
plugin.htm | This document links to an example which creates an Internat Browser plugin from an Allegro CL application. Only works on Windows. |
profiling.htm | Allegro CL provides a profiling utility as an add-on product. Both time and space usage can be profiled, though not at the same time. This document describes how the profiler works, how to use it, and how to interpret the results. Note that not all versions of Allegro CL include the profiler. |
phtml.htm and pxml.htm | These files (which are quite preliminary) describe the Lisp-based HTML and XML parsers. Updates to these files will be provided over time. These documents are not listed in contents.htm. |
regexp.htm | This document describes the regular expression API available in Allegro CL. |
release-notes.htm | This document is the release notes for Allegro CL on all platforms. Please refer to this document if you see unexpected behavior. |
runtime.htm | Runtime is the technical solution to the restriction of runtime licenses. It has both legal and programming meanings. The legal meaning (determining, e.g., to whom a runtime image can be distributed and at what royalty) is defined in the Allegro CL Runtime License Agreement. In this document, the programming meaning is discussed. Information is provided on how to create runtime images (but also see delivery.htm and building-images.htm), what are the limitations of a runtime image, and so on. |
socket.htm | Sockets are a way for different running programs to communicate with each other. This document describes the support for sockets within Allegro CL. |
shared-library-and-dll.htm | This document points to examples of create Lisp-based shared libraries (for UNIX) and DLL's (for Windows). A Lisp-based shared library or DLL can be used by developers writing C, C++, and Java applications. |
source-file-recording.htm | Allegro CL provides a facility for remembering the file in which a Lisp function (or variable, parameter, macro, etc.) is defined. That facility is described in this document. |
startup.htm | This document describes starting Allegro CL. Various methods of starting (from a shell, as a subprocess of emacs, on Windows with or without the Integrated Development Environment, etc.) are discussed. Command-line arguments and initializations files (both how to use them and how to suppress them) are described along with other things you should know about startup. Startup problems and suggested solutions are also discussed. |
streams.htm | This file provides details of the implementation of simple-streams in Allegro CL. Simple-streams are the new standard stream type. Earlier releases of Allegro CL used Gray streams, which are still supported. See gray-streams.htm. |
test-harness.htm | This document describes the test harness facility new in Allegro CL 6.0. |
top-level.htm | The top level is the interface to a running development Lisp image. (We say `development' to distinguish from a Lisp application. Most applications provide their own top level.) This document provides information about the Allegro CL top level. |
uri.htm | This document describes the URI facility new in Allegro CL 6.0. |
In the old-compatibility directory, there are three documents describing the conversion from Allegro CL 4.3.1 (on UNIX) and Allegro CL 3.0.1 (on Windows) to release 5.0. The documents are
Except for updating links and adding an introductory paragraph, the files are unchanged from the 5.0.1 release.
For Allegro CL-specific functionality, virtually every operator (function, generic function, or macro), every constant and variable, and many classes defined in Allegro CL, other than standard Common Lisp functionality, are described in individual HTML files called description pages. These files are arranged as follows:
[Allegro directory]/doc/pages/[kind]/[package]/[symbol].htm
Where:
[Allegro directory] is the directory into which Allegro CL was installed. The document you are reading is [Allegro directory]/doc/introduction.htm.
[kind] is one of
- operators (for functions, generic functions, and macros)
- variables (for variables and constants)
- classes
- other (currently, top-level commands, ide-menus-and-dialogs)
[package] is the home package of the symbol being documented, and is one of
compiler, common-graphics, dbi, defsys, excl, ff, javatools.jlinker, mp, net.uri, prof, socket, system, top-level, util.test, xref
and [symbol] is the symbol naming the object (or the name of the top-level command). A * character in a symbol name is handled specially. * appears as s_ or _s depending on whether the * is leading or trailing.
Thus, the documentation for the variable excl:*enable-package-locked-errors* is in the file:
[Allegro directory]/doc/pages/variables/excl/s_enable-package-locked-errors_s.htm
And the documentation for the function system:command-line-arguments is in the file
[Allegro directory]/doc/pages/operators/system/command-line-arguments.htm
Note: Common-graphics operators are further organized by the first letter of the symbol naming them. This prevents a directory with over 1600 files.
Each page names the symbol, its home package, and the type of the object being described (function, macro, variable, class, etc.)
Descriptions of operators include the argument list. Generally the argument list is the same as returned by functions like arglist but not always. It will not be when (1) the stored argument list is abbreviated (e.g. &rest args or &key &allow-other-keys, where argument processing is done within the operator body) and thus unhelpful; or (2) the stored argument names are unhelpful (struct -- because the object is a struct -- rather than, say, process or pathname).
Some arguments are listed but described as not for programmer use (these arguments may be intended for later enhancements or may support internal actions only). A few pages describe internal functionality not intended for programmer use. Symbols naming such functionality are exported for unavoidable system reasons and because they are exported, they have description pages.
Franz Inc. maintains a publicly-accessible (login is "anonymous", password is your email address) FTP site (ftp://ftp.franz.com/pub/faq) and has a World Wide Web home page (http://www.franz.com/). You may use either location to access the Allegro CL FAQ and patches to Allegro CL and related products.
FAQ stands for Frequently Asked Questions. The Allegro CL FAQ is a document written in question and answer format containing answers to questions often asked by users of Allegro CL and related products. Franz Inc. updates the FAQ regularly.
The FAQ is available via FTP:
It is also available on the Franz Inc. WWW home page (in the Support section):
A patch is a file (typically a fasl -- compiled Lisp -- file) which either corrects some error in the product or provides some enhancement or new feature. Patches are available from the Franz Inc. Web or FTP site. Patches are stored in both locations with a directory structure that mirrors the distribution directory structure, so that patch files can be downloaded into the correct directories off the distribution. The function update-allegro downloads patch files and places them in the correct locations.
There are various kinds of patch files.
Start with the README file in the ftp://ftp.franz.com/pub/patches directory if you are accessing patches via FTP. On the Web site, choose Support, then click on the link to patches and follow the instructions.
Note the following points.
Whether or not you should get all available patches depends on your current tolerance for instability. Because patches are less well tested than releases, patches may occasionally introduce errors as well as fix problems.
However, even a correct patch may introduce instability: if a patch enables a feature which was previously ignored or signals an error (correctly) where none was previously signaled, your code may fail because the patch uncovered a problem which was previously unnoticed. Suppose, for example, a patch causes certain declarations to be used during compilation (without the patch they are ignored). Such a patch would not fix a bug (since ignoring declarations is permitted) but if your code happened to contain incorrect declarations, then the patch would be destabilizing. (Without the patch, the wrong declarations were ignored and so did not harm. With the patch, they are used.)
The potential impact of a patch is given in the LOG file in the patch directory. Here are two entries from the 5.0 patch LOG (the 6.0 patch LOG file will be organized similarly):
Mon Sep 14 11:27:52 PDT 1998 Patch: update/p0a001.001 Fixes a bug where find-restarts, when given the optional condition argument, would not consider restarts that are not associated with any condition. Impact: Should be minor Tue Sep 1 14:33:29 PDT 1998 Patch: update/p0b002.001 Fixes self tail recursive call with intermixed args. Problem resulted in errors in compiled code, not in interpreted. Impact: Recommended.
Notice the Impact line (made bold for empasis). It provides an assessment of how destabilizing a patch may be. Note that in these cases, one is minor and the other patch (which fixes a problem where compiled code ran incorrectly) is recommended.
If you are in a development cycle, our advice is to get all available patches for their platform (machine type) and Allegro CL version. Patches for associated products (such as CLIM) should be included as well.
But if you are preparing a delivery, we advise you to be selective, perhaps getting only the patches that deal with problems you report.
Note that we have previously advised even users who are developing applications rather than preparing for delivery to only include patches when they experienced the problem fixed by the patch. There are pluses and minuses to each recommendation. While including all patches gives you all available fixes, as we said above, patches are not as well tested as releases and sometimes a patch introduces a new problem or bug. However, we have changed our advice for when you are developing because many patches are for performance, and therefore generally useful, and because problems introduced by patches, while they do happen, are uncommon and are usually fixed quite quickly (typically with an updated patch), and because it is relatively easy to back out a patch if it causes problems.
Note that the report created by dribble-bug lists all patches included in the image. It is very important that this information be included with a bug report.
update-allegro downloads patches but does not create new images. To create new images, exit Lisp (if you are running it) and run update.sh on UNIX machines and update.bat on Windows machines. These scripts will update all Allegro-supplied image (dxl) files by starting Lisp with the dxl file and calling build-lisp-image. They also make backups of the the dxl files. You must recreate any image files you created yourself.
Note on backups of dxl files: the first time update.sh/bat is run, the dxl files are copied to files with `orig' added -- mlisp.dxl to mlisporig.dxl, e.g. The second time, they are copied with `old' added -- mlisp.dxl to mlispold.dxl, e.g. On subsequent runs, the backup may not be done correctly. Please move *old.dxl to *oldn.dxl (for some n) before updated to ensure that the backups are done correctly.
Backing out of patches: you may occasionally discover that a patched image does not work properly. (Perhaps the patch was faulty, or perhaps the fix, whatever it is, interacts incorrectly with your application.) The back out of patches, (1) rename the new dxl files, (2) copy the original dxl files (they will have "old" or "orig" appended to their filenames) to their original names, and (3) rename any new fasl files in the code/ subdirectory. If there is a backup of the fasl file, give it its original name. (If there is not, then prior to updating, the version in the bundle file is used). You are now back to where you were before running update.sh or update.bat.
Before reporting a bug, please study this document and the ANSI CL Standard document.
A report that such and such happened is generally of limited value in determining the cause of a problem. It is very important for us to know what happened before the error occurred: what you typed in, what Allegro CL typed out. A verbatim log may be needed. If you are able to localize the bug and reliably duplicate it with a minimal amount of code, it will greatly expedite repairs.
It is much easier to find a bug that is generated when a single isolated function is applied than a bug that is generated somewhere when an enormous application is loaded. Although we are intimately familiar with Allegro CL, you are familiar with your application and the context in which the bug was observed. Context is also important in determining whether the bug is really in Allegro CL or in something that it depends on, such as the operating system.
To this end, we request that your reports to us of bugs or of suspected bugs include the following information. If any of the information is missing, it is likely to delay or complicate our response.
Use dribble-bug as follows. Entering
(excl:dribble-bug filename)
causes implementation and version information to be written to the file specified by filename, and then records the Lisp session in the same file. Exiting Lisp or entering
(dribble)
will close the file after the bug has been exhibited. The following dialogue provides a rudimentary template for the kernel of a bug report.
USER(5) (dribble-bug "bug.dribble") USER(6) ;; Now duplicate your bug . . . USER(7) (dribble)
Send bug reports to either the electronic mail or postal address given in 5.1 Where to report bugs and send questions. We will investigate the report and inform you of its resolution in a timely manner.
Important note about dribble-bug: its log does not capture things printed by the operating system or by operating system utilities. These messages may be important. Please be sure you include them in the message.
Send problem reports and technical questions of any type by email to bugs@franz.com. Our mailing address is Franz Inc., Suite 275, 1995 University Ave., Berkeley CA 94704 USA; and our telephone number (in the USA) is +510-548-3600.
Sales and licensing questions should be directed to your account manager. If you are not already a customer (and thus do not yet have an acocunt manager), send email to info@franz.com, or call Franz Inc. (in Berkeley, California, USA) at +1 510-548-3600, or send regular mail to Franz Inc., Suite 275, 1995 University Ave., Berkeley CA 94704 USA. Please give your email address, phone number, and mailing address. The appropriate Acocunt Manager will contact you.
If you are already a customer, you should have the name and email address of your account manager, but if they are not to hand, use the genral ones given just above.
General product information is available on the Franz Inc. web site, http://www.franz.com/. You can get additional information by contacting us. Again, send email to info@franz.com or call +1 510-548-3600 or write to Franz Inc., Suite 275, 1995 University Ave., Berkeley CA 94704 USA.
Copyright (c) 1998-2000, Franz Inc. Berkeley, CA., USA. All rights reserved. Created 2000.10.5.