Domain/CommonLISP Version 4.0 Software Release Document
March 5, 1990
This Release Document summarizes the new
features of Version 4.0 of Domain/CommonLISP.
For complete details, see the revised
Domain/CommonLISP documentation set.
Copyright Hewlett-Packard Company 1990. All Rights Reserved.
Reproduction, adaptation, or translation without prior written
permission is prohibited, except as allowed under the copyright laws.
Printed in USA.
Latest Printing: March, 1990
UNIX is a registered trademark of AT&T in the USA and other countries.
WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE,
HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD TO THIS
MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Hewlett-Packard
shall not be liable for errors contained herein or for incidental or
consequential damages in connection with the furnishing, performance or
use of this material. Information in this publication is subject to
change without notice.
RESTRICTED RIGHTS LEGEND. Use, duplication or disclosure by the
Government is subject to restrictions as set forth in subdivision (b)
(3) (ii) of the Rights in Technical Data and Computer Software clause at
DFARS 52.227-7013. Hewlett-Packard Company, 3000 Hanover Street, Palo
Alto, CA 94304
Reader_Notice
This document resides online in the /install/doc/apollo directory. You may
print the online copy of this document by using one of the following
commands:
If your installation uses the System V lp print daemon, use an lp command
similar to the following:
lp -dprinter_name pathname
where pathname is the pathname of the release notes, usually
/install/doc/apollo/lisp.v.4.0__notes (for MC680x0-based workstations)
/install/doc/apollo/lisp.v.4.0.p__notes (for Series 10000 workstations)
If your installation uses the Domain print system, use the following Aegis
/com/prf command:
prf pathname -pr printer_name -npag
If your installation uses the BSD lpd print daemon, use an lpr command
similar to the following:
lpr -Pprinter_name pathname
iii
Contents
CHAPTER 1 OVERVIEW OF DOMAIN/COMMONLISP VERSION 4.0
1.1 Summary of New Features in Version 4.0................... 1-1
1.2 DSEE SML Changes......................................... 1-3
1.3 Delivery Tool Kit........................................ 1-3
1.4 System Interface Enhancements: Pascal to Lisp Translator. 1-3
1.5 GNU Emacs Interface Changes.............................. 1-4
1.5.1 Data Examiner.........................................1-4
1.5.2 Communication Between GNU Emacs and Domain/CommonLISP.1-5
1.6 Lisp Images ............................................. 1-6
1.7 Changes to the Foreign Function Interface................ 1-6
1.7.1 Additional Predefined Foreign Types.................. 1-6
1.7.2 :in, :out, :inout Argument Descriptors............... 1-8
1.7.3 UNALIGNED Type Extension (Version 4.0.p Only)........ 1-9
1.8 Unsupported Software..................................... 1-9
1.9 Pathname Parsing Rules................................... 1-10
CHAPTER 2 INSTALLATION INFORMATION
2.1 Domain/CommonLISP Version 4.0........................... 2-1
2.2 Domain/CommonLISP Version 4.0.p........................... 2-1
2.3 How to Install This Product............................... 2-2
CHAPTER 3 DOCUMENTATION
3.1 New Documentation Set ................................... 3-1
3.2 Online Documentation .................................... 3-2
CHAPTER 4 BUGS AND BUG FIXES
4.1 Restrictions ............................................. 4-1
4.2 Known Bugs ............................................... 4-2
4.3 Bug Fixes ............................................... 4-3
Contents iv
CHAPTER 1
Overview of Domain/CommonLISP Version 4.0
Domain/CommonLISP Version 4.0 runs on Apollo nodes equipped with Motorola
68020 or Motorola 68030 CPUs. Domain/CommonLISP Version 4.0.p runs on
Apollo Series 10000 nodes. Throughout this release document, we use the
term Version 4.0 to refer to features of both Version 4.0 and Version
4.0.p products. The features which are specific to each version are clearly
identified in this document.
1.1 Summary of New Features in Version 4.0
Here is a summary of the new features in Version 4.0:
o Domain/CommonLISP Version 4.0 runs on Domain/OS Software Release
10.1, Domain/OS Software Release 10.2, and on Domain/OS SR9.7.
Domain/CommonLISP Version 4.0.p runs only on Domain/OS Software
Release 10.2.
Domain/CommonLISP Version 4.0 is the only version of Domain/CommonLISP
that supports Domain/OS SR10.2.
o Domain/CommonLISP Version 4.0 supports Series 10000 and Motorola
68020 and 68030 nodes. Older nodes with Motorola 68010 CPUs and
DN460/660 and DSP160 nodes are no longer supported. Compiled files
have the suffix ".lbin" on 68020 and 68030 nodes, and ".abin" on
Series 10000 nodes. If you are using a Series 10000 node, substitute
".abin" wherever this document refers to ".lbin".
o DSEE System Model Changes -- Version 4.0 introduces changes to the
argument list of dsee:generate-sml.
o Delivery Tool Kit -- The Delivery Tool Kit helps you produce small,
fast, and efficient application images. This kit includes
performance monitoring tools to help make programs run more
efficiently, the Treeshaker to prune unused pieces of an application
and reduce application sizes, and the Reorganizer to reduce the size
of a program's working set.
Version 4.0 1-1 Domain/CommonLISP
The Delivery Tool Kit is not included in the basic images but must be
loaded from /sys/common_lisp/delivery-toolkit.lbin. Consult the
documentation for further information.
o The Common Lisp Object System (CLOS) -- In 1988, the X3J13 Committee
adopted this object-oriented programming system as part of the Common
Lisp standard.
CLOS is not included in the basic images but must be loaded from
sys/common_lisp/clos.lbin. Consult the documentation for further
information.
o System Interface Enhancements -- Version 4.0 contains enhancements
to the system interface to operating system functions. Version 4.0
also contains enhancements to the run-time support system for using
the system interface. The system interface now uses Lucid's Version
3.0 Foreign Function Interface.
o Expanded Window System Interface Support for the Window Tool Kit --
The Window Tool Kit can run on either of two interfaces: the Apollo
Display Manager and the Common Lisp interface to the X11 window
system, CLX.
o Images -- Version 4.0 now supports six images, three of which are
applications images. In addition to the "lisp" (basic system only)
and "wedlisp" (basic system plus DM-based Window Tool Kit and Editor)
images, the new image "clxwedlisp" contains the Window Tool Kit and
Editor that run under the X11 window system. The corresponding
application environments are "applisp," "wapplisp," and
"clxwapplisp".
o GNU Emacs Interface Changes -- GNU Emacs now uses the server/client
capabilities of Domain/CommonLISP as the communication interface
between GNU Emacs and Domain/CommonLISP. Also, the
DESCRIBE-VARIABLE-AT-POINT function has been enhanced.
o Upgraded Error Handling Facility -- The Error Handling Facility is
now a complete implementation of the Common Lisp Condition System,
approved in 1988 by the X3J13 Committee as part of the Common Lisp
standard.
o Priority control in the Multitasking Facility -- The MAKE-PROCESS
function now accepts a :PRIORITY keyword argument that lets you set
the priority of a process.
o Debugging -- You can now examine and modify local variables by name
while in the Debugger, as long as you compiled in the development
mode of the Compiler. Previously, you could only specify compiled
variables by stack position, not by name.
In the following sections, we provide more details on some of these
features.
Domain/CommonLISP 1-2 Version 4.0
1.2 DSEE SML Changes
Version 4.0 supports the following two new keyword arguments to the
dsee:generate-sml function:
o dsee-version-4-p : Boolean, true if the generated SML is for DSEE
Version 4.0. Defaults to what is installed on the machine you are
running on.
o machine-type : {:M68K | :DN10K}, Target machine for the generated
SML. (Generates files with the suffix .lbin instead of .abin.)
Defaults to the machine you are running on.
1.3 Delivery Tool Kit
If you plan to use the Delivery Tool Kit and your application uses the Window
Tool Kit or CLOS, follow these instructions:
o To use the Treeshaker on an application that uses the DM-based Window
Tool Kit, load the file delivery-toolkit-windows into your image
along with the Delivery Tool Kit module. If your application uses
the CLX-based Window Tool Kit, load the file
delivery-toolkit-clxwindows with the Delivery Tool Kit module.
o If your application uses CLOS, load the file delivery-toolkit-clos
into the image.
For Version 4.0.p only, in the file /sys/common_lisp/dsee_support/examples,
the example lacks the use of floater.lisp as described in the manual.
Everything else is the same.
1.4 System Interface Enhancements: Pascal to Lisp Translator
The facility for automatically translating Pascal object declarations into
Foreign Function Interface LISP source now supports previously unsupported
Pascal declarations. The generated Lisp source uses the new interface
protocol introduced in Version 3.0.
We've converted to Domain/CommonLISP all of the insert files necessary to
invoke Domain/OS system service and layered product calls. These insert
files are in directory /sys/common_lisp/system_interface/ins_sr10.2. For
previous operating system releases, use the TRANSLATE function to generate
the insert files. For more information on the TRANSLATE function, please
refer to the chapter on "Translating Insert Files", in the Using
Domain/CommonLISP chapters of the Domain/CommonLISP_User's_Guide.
Version 4.0 1-3 Domain/CommonLISP
The insert files for X Window and Open Dialogue system calls are included in
this release.
1.5 GNU Emacs Interface Changes
Domain/CommonLISP Version 4.0 includes a package of extensions to GNU Emacs,
allowing the two systems to work together as an integrated environment. The
extensions include functions which provide many features found on Lisp
machines.
One of these extensions is the data examiner. You can use this feature to
display data objects. The Version 4.0 data examiner has many of the
features of a true data inspector. The examiner is mouse sensitive, and
recognizes the standard printed representation of unreadable data types
("display names").
We've also changed the communications interface between GNU Emacs and
Domain/CommonLISP. It now takes advantage of the server/client capabilities
of Domain/CommonLISP versions 3.0 and 4.0.
We provide details of the data examiner and the communications interface in
the next two sections.
1.5.1 Data Examiner
The DESCRIBE-VARIABLE-AT-POINT function uses the Common Lisp DESCRIBE
function to display in a buffer the value, definition, and properties of the
symbol at point. Within that buffer, pointing at a data object and clicking
M3 (the rightmost mouse button) will create another buffer containing a
description of that data object.
When displaying certain objects in Lisp, display names are used for objects
that cannot be conveniently printed. For example, Lisp will print a string
such as " <Array FC32>" to represent an array. The data examiner can
interpret this notation, and will display a description of the data object in
question.
NOTE When this feature is activated, data objects printed with
their display names will never be garbage collected. You need to
run (APOLLO:RESET-NAMED-OBJECTS) periodically to
clear out the table of named objects if you want them to be
garbage collected.
Before using the data examiner, you must follow these steps:
o Before you use
/sys/common_lisp/gnuemacs_support/apollo-lisp-support.lisp, place
(PUSHNEW :HASH-NAMED-OBJECTS *FEATURES*) into your
~/user_data/common_lisp/startup.lisp file.
Domain/CommonLISP 1-4 Version 4.0
o Place (SETQ APOLLO:GRABBING-DISPATCHED-NAMES-P T) into your ~/.emacs
file.
1.5.2 Communication Between GNU Emacs and Domain/CommonLISP
For Version 4.0, the communication protocol between GNU Emacs and
Domain/CommonLISP has changed. In the past, when a user executed a GNU Emacs
function such as APOLLO:LISP-COMPILE-DEFUN or DESCRIBE-VARIABLE-AT-POINT, GNU
Emacs interrupted the function executing in the Lisp buffer, passed the text
to be compiled or described to Lisp through the same stream the user uses to
enter Lisp commands, and continued the first function when the second one
completed. Considerable overhead was required to perform the interrupt and
to make this transparent to the user. With Domain/CommonLISP Version 4.0,
communication between GNU Emacs and Domain/CommonLISP occurs directly through
named pipes and a Lisp server task, at significantly greater speed. For more
detail on the Lisp client/server mechanism see Section 3.2 in the Using
Domain/CommonLISP chapters of the Domain/CommonLISP_User's_Guide.
Aside from the performance improvement, most of this change is invisible to
the user. The only immediately apparent difference is that when a command
(such as APOLLO:LISP-COMPILE-DEFUN) that requires communication with
Domain/CommonLISP executes, a transcript of the correspondence appears in a
buffer called "Lisp Transaction Display." Only compiles and other commands
that produce substantial output create entries in the transaction display
buffer. Another buffer, called the "Lisp Transaction Journal" keeps track of
the entire communication history.
There are two limitations to this communication system. First, dynamically
scoped variables active in the Lisp buffer may not be visible from the Lisp
server. For example, a variable, *RALPH*, whose scope is a function called
KRAMDEN may be visible from the debugger when KRAMDEN has been interrupted
while executing in the Lisp buffer. However, the dynamic binding of *RALPH*
will not be visible to a compile executing through the Lisp server. The
exception is *PACKAGE*. The current package in the stream attached to the
Lisp buffer is always the same as the current package in any stream attached
to the Lisp server.
The second limitation is that only one compile may run at any one time. In
previous versions of Domain/CommonLISP, GNU Emacs could simulate the effect
of several compiles running in parallel, but each compile would actually
interrupt another, execute, and restart the first. Now, even though more
than one Domain/CommonLISP function can run in parallel, compiles execute
serially. If you inadvertently execute more than one compile concurrently,
and don't want to wait for them both to finish, use the GNU Emacs command
RESET-LISP-FILTER to stop the execution.
In order to use the new server/client communications, you must first set the
variable APOLLO:GNUEMACS-CLIENT-P to T in your ~/.emacs file. The default
value of this variable is NIL.
Version 4.0 1-5 Domain/CommonLISP
For more complete information on using GNU Emacs and Domain/CommonLISP
together, see the GNU Emacs chapter in the Using_Domain/CommonLISP chapters
of the Domain/CommonLISP_User's_Guide. Also see the notes in the file
/sys/common_lisp/gnuemacs_support/README.
1.6 Lisp Images
Version 4.0 supports six Lisp images: lisp, wedlisp, clxwedlisp, applisp,
wapplisp, and clxwapplisp.
The lisp image contains the basic Lisp Development Environment including the
Compiler.
The wedlisp image contains the Compiler, the Editor, and the Window Tool Kit
for the Display Manager.
The clxwedlisp image contains the complete Lisp Development Environment
including the compiler, the Editor, and the Window Tool Kit for X Windows.
The Delivery Tool Kit is a new feature which allows you to generate tailored
lisp images for specific applications. The Delivery Tool Kit allows users
to make their own application environments. For more information on the
Delivery Tool Kit, refer to the Domain/CommonLISP_Tool_Reference,_Volume_2.
Apollo also provides the Domain/CommonLISP Application Environment, which
executes compiled LISP programs that were written using the Development
Environment. The Application Environment, however, functions without the
additional overhead of development tools such as the Compiler. The
Application Environment provides a high-performance, cost-effective run-time
environment to users who have no need for program development but will
execute LISP-based applications.
1.7 Changes to the Foreign Function Interface
Version 4.0 introduces the following features to the Foreign Function
Interface:
o additional predefined foreign types.
o :in, :out, :inout argument descriptors
In addition, Version 4.0.p introduces a new UNALIGNED type extension. We now
detail these features.
Domain/CommonLISP 1-6 Version 4.0
1.7.1 Additional Predefined Foreign Types
This release introduces the following predefined foreign types:
o (:bit-field size position)
o (:signed-bit-field size position)
o (:enumeration enumerated-data-list)
o (:set (:subrange minimum-value maximum-value))
o (:set enumeration-type)
o (:set :character)
o (:packed-array element-size-in-bits number-of-elements-in-array)
The :enumeration, :set, and :packed-array data types correspond to Pascal
data types. The (:set (:subrange minimum-value maximum-value)) type can be a
subrange of integers or characters. Here are some examples of the new data
types:
;;;The :bit-field type is similar to the :field type, except that the
;;;foreign type size of a :bit-field type is
;;;(ceiling (+ <size> <position>) <bits-per-byte>).
> (setq fp-bit-field (make-foreign-pointer
:type '(:pointer (:bit-field 13 3))))
#<Foreign-Pointer 79C038 (:POINTER (:BIT-FIELD 13 3))>
>(setq fp-16bit (make-foreign-pointer
:type '(:pointer :unsigned-176bit)
:address (foreign-pointer-address fp-bit-field)))
#<Foreign-Pointer 79C038 (:POINTER :UNSIGNED-16BIT)>
> (setf (foreign-value fp-bit-field) 1234)
1234
> (foreign-value fp-bit-field)
1234
> (foreign-value fp-16bit)
9872
> (ldb (byte 13 3) (foreign-value fp-16bit))
1234
> (foreign-type-size '(:bit-field 13 3))
2
;;; Examples using :enumeration, :set, and :packed-array
;;; foreign types.
> (def-foreign-synonym-type primary-colors
(:enumeration (red yellow blue)))
#<Foreign-Type (:ENUMERATION (RED YELLOW BLUE)) B6083B>
> (setq color1 (make-foreign-pointer :type '(:pointer primary_colors)))
#<Foreign-Pointer 669C38 (:POINTER PRIMARY_COLORS)>
> (foreign-value color1)
Version 4.0 1-7 Domain/CommonLISP
RED
> (symbol-value 'red)
0
> (def-foreign-synonym-type grades-type (:set :character))
#<Foreign-Type (:SET :CHARACTER) B6187B>
> (setq grade1 (make-foreign-pionter :type '(:pointer grades-type)))
#<Foreign-Pointer 669C40 (:POINTER GRADES-TYPE)>
< (setf (foreign-value grade1) '(#\A #\B #\C #\D #\E #\F))
(#\A #\B #\C #\D #\E #\F)
> (foreign-value grade1)
(#\A #\B #\C #\D #\E #\F)
> (def-foreign-synonym-type packed-ARRAY-3 (:packed-array 3 (10)))
#<Foreign-Type (:PACKED-ARRAY (:FIELD 3 0) (10)) BBFFA3>
1.7.2 :in, :out, :inout Argument Descriptors
This release supports calls to Pascal functions whose arguments have been
declared in, out, or in out. If you declare an argument :in, :out, or
:inout, the argument is passed by reference to the Pascal function. If an
argument is declared :out or :inout, that argument is returned as one of the
values returned from the foreign call.
These argument descriptors can only be used for Pascal functions. You cannot
declare arguments with the foreign types :lisp, :null, or :arbitrary.
;;; RECT_POLAR is a Pascal function that returns polar coordinates
;;; when given rectangular coordinates. This function is defined in
;;; a Pascal file as follows:
;;;
;;; MODULE pascal_test;
;;; PROCEDURE rect_polar (IN x_coord : double;
;;; IN y_coord : double;
;;; OUT rad : double;
;;; OUT angle : double);
;;; {given the rectangular coordinates this procedure returns the
;;; polar coordinates. }
;;;
;;; BEGIN
;;; writeln(' The X coordinate is ', x_coord);
;;; writeln(' The Y coordinate is ', y_coord);
;;; if ( (abs (x_coord)) > 1.0e-200) then
;;; BEGIN
;;; rad := sqrt((sqr(x_coord)) + (sqr(y_coord)));
;;; angle := (180.0 / 3.14159) * (arctan ((abs (y_coord / x_coord))));
;;; if (x_coord <= 0.0) then
;;; BEGIN
;;; if (y_coord < 0.0) then agle := 180.0 + angle
;;; else angle := 180 + (-1.0 * angle)
;;; END else
Domain/CommonLISP 1-8 Version 4.0
;;; if ( y_coord < 0.0 ) then agle := -1.0 * angle
;;; END
;;; else
;;; BEGIN
;;; rad := y_coord ;
;;; if (y_coord > 0) then angle := 90.0
;;; else angle := -90.0 ;
;;; END;
;;; END;
> (def-foreign-function (rect-polar (:language :pascal)
(:return-type :null))
(x_coord :double-float :in)
(y_coord :double-float :in)
(rad :double-float :out)
(angle :double-float :out))
RECT_POLAR
> (rect_polar 1.0 1.0 0.0 0.0)
The X coordinate is 1.000000000000000E+00
The Y coordinate is 1.000000000000000E+00
NIL
1.4142135623730951
45.000038009906035
> (multiple-value-list (rect_polar 1.0 10.0 0.0 0.0))
The X coordinate is 1.000000000000000E+00
The Y coordinate is 1.000000000000000E+01
(NIL 10.04987562112089 84.28947805877668)
1.7.3 UNALIGNED Type Extension (Version 4.0.p Only)
To allow types to be aligned on less than their natural boundaries, we've
defined a new set of foreign types. The new types are the same as the former
types except that they are prefaced with ":UNALIGNED-" (for example,
:UNALIGNED-UNSIGNED-32BIT). For pointers, there is an :UNALIGNED-POINTER, but
no typed unaligned pointer. These must therefore be treated as UNIV
pointers. Only types with sizes of 32 bits or greater should be prefixed
with :UNALIGNED-.
1.8 Unsupported Software
Version 4.0 contains three directories of unsupported software.
o The /sys/common_lisp/unsupported/clx directory contains the Common
Lisp to X11 Window System Interface (CLX). Although the Window Tool
Kit in "clxwedlisp" uses CLX for its interface to X11 servers, unused
portions of CLX have been removed from the image to save space. If
you require full CLX functionality, compile and load CLX from the
sources in "sys/common_lisp/unsupported/clx".
Version 4.0 1-9 Domain/CommonLISP
o The /sys/common_lisp/unsupported/defsystem directory contains a
publicly available portable defsystem facility written in pure Common
Lisp.
o The /sys/common_lisp/unsupported/flavors directory contains sources
to the Flavors system.
1.9 Pathname Parsing Rules
Domain/CommonLISP Version 2.2 introduced several changes to pathname parsing
rules. Domain/CommonLISP Versions 3.0 and 4.0 use these same pathname
parsing rules, all of which are in accordance with Domain/OS SR10.1. We
repeat these rules as a service. Here they are:
1. Anything before the last "/" in the pathname is parsed as the
directory specification. Anything after the last "/" is parsed as
the name, type, and version. If there is no "/", the entire pathname
is parsed into the name, type, and version, and the directory is
taken as '(:relative).
2. A suffix of ".bak" is parsed as a version of :PREVIOUS; otherwise,
the version is NIL.
3. Anything after the last "." in the name/type/version portion of the
pathname is parsed as the type; if there is no such ".", the type is
NIL.
4. Anything before the last "." in the name/type/version portion of of
the pathname is parsed as the name; if the pathname ends in "/", the
name is NIL.
5. "*" as name or type parses to :WILD.
6. The following directory names have special meanings as shown:
// ==> :NETWORK-ROOT
/ ==> :ROOT
~/ ==> :NAMING
./ ==> :CURRENT
`node_data/ ==> :NODE-DATA
Otherwise, the directory begins with :RELATIVE.
7. After any directory component has been recognized, any number of
additional "/" characters or "./" sequences are ignored.
Domain/CommonLISP 1-10 Version 4.0
The :HOST field of a parsed pathname is always NIL; however, you can use
MAKE-PATHNAME to produce a non-NIL :HOST field. On SR9.x, Lisp runs with
the DOWNCASE environment variable explicitly set to "false" so that the
naming server does not manipulate the case of pathnames. If this causes a
problem for programs run by Lisp using the SHELL or RUN-PROGRAM functions,
you should explicitly delete the environment variable DOWNCASE in the invoked
shell or program.
Version 4.0 1-11 Domain/CommonLISP
Chapter 2
Installation Information
There are two different versions of Domain/CommonLISP Version 4.0.
o Version 4.0
o Version 4.0.p
We now detail the minimum hardware and software configurations for both.
2.1 Domain/CommonLISP Version 4.0
Domain/CommonLISP Version 4.0 runs on Domain/OS Software Releases 9.7,
SR10.1 and SR10.2. You can run Domain/CommonLISP Version 4.0 on any
Apollo node containing a Motorola 68020 or Motorola 68030 CPU. You cannot
run Domain/CommonLISP Version 4.0 on a Series 10000 workstation.
The following hardware and memory configurations are now recommended for use
with Domain/CommonLISP Version 4.0. The more memory your node has, the
fewer page faults Domain/CommonLISP will encounter and the faster it will
run.
Node Type Recommended Minimum Absolute Minimum
======== =========== ======= ================
DN4500 16 MB (or more) 8 MB 8 MB
DN3500 16 MB (or more) 8 MB 8 MB
DN4000 16 MB (or more) 8 MB 4 MB
DN5xx-T 16 MB (or more) 8 MB 4 MB
DN3000 8 MB (or more) 4 MB 4 MB
DN5xx, DN330 3 MB 3 MB
2.2 Domain/CommonLISP Version 4.0.p
Domain/CommonLISP Version 4.0.p runs on Domain/OS Software Release 10.2.p
only. You can run Domain/CommonLISP Version 4.0.p on any Apollo Series 10000
workstation. You cannot run Version 4.0.p on any machines having a Motorola
CPU.
The following hardware and memory configurations are now recommended for use
with Domain/CommonLISP Version 4.0.p. The more memory your node has, the
fewer page faults Domain/CommonLISP will encounter and the faster it will
run.
Version 4.0 2-1 Domain/CommonLISP
Node Type Recommended Minimum Absolute Minimum
======== =========== ======= ================
DN10000 16 MB (or more) 8 MB 8 MB
2.3 How to Install This Product
If you have the media for a 680x0-based workstation, the Common Lisp media
contains the following product:
Product Version Selection File(s) Override File(s)
------- ------- ----------------- ----------------
lisp 4.0 aa.lisp ov.lisp
If you have the media for a Series 10000 workstation, the Common Lisp media
contains the following product:
Product Version Selection File(s) Override File(s)
------- ------- ----------------- ----------------
lisp 4.0.p aa.lisp ov.lisp
Selection and override files reside in the directory
//<authorized_area>/install/templates/apollo/<product_name>.v.<version>
where <authorized_area> is your authorized area, <product_name> is the
product name (as listed in the first column of the table above), and
<version> is the version number (as listed in the second column of the table
above).
For directions about how to install this product and about the use of
selection and override files, see the manual Installing_Software_with
Apollo's_Release_and_Installation_Tools, Order No. 008860-A02.
NOTE: The user node or DSP must have a minimum of 33650 1024-byte blocks
of available disk space for a successful installation of this
software.
Domain/CommonLISP 2-2 Version 4.0
Chapter 3
Documentation
This chapter summarizes changes to hard-copy and online documentation.
3.1 New Documentation Set
Version 4.0 of Domain/CommonLISP contains new manuals and revisions to
existing manuals. Here is a summary of this five-volume set:
o Domain/CommonLISP User's Guide (008791-A01)
This volume contains the following three manuals:
- Domain/CommonLISP User's Guide
- Using Domain/CommonLISP
- The Master Index
o Domain/CommonLISP Advanced User's Guide (015738-A01)
o Domain/CommonLISP Tool Reference, Volume 1 (015739-A01)
This volume contains the following two manuals:
- The Window Tool Kit
- The Editor
o Domain/CommonLISP Tool Reference, Volume 2 (017146-A00)
This volume contains the following four manuals:
- The Flavor System
- The Loop System
- The Delivery Tool Kit
Version 4.0 3-1 Domain/CommonLISP
- The Common Lisp Object System
o COMMON LISP: The Language, by Guy L. Steele, Jr. (015458-A00)
3.2 Online Documentation
We've made the following changes to online documentation at Version 4.0:
o Package System Changes
Information on changes to the package system between
Domain/CommonLISP Versions 2.10/2.20 and 3.00/4.00 is available in
the file /sys/common_lisp/doc/package-changes.doc.
o Lisp Internal Functions
You can find details on certain Domain/CommonLISP internal functions
in the file /sys/common_lisp/doc/wizards-documentation.
o Benchmarks
Source code and a run_benchmarks script for the Gabriel benchmarks
may be found in the directory /sys/common_lisp/benchmarks.
The online slide show and graphics demo is no longer provided.
o Online Examples
Many of the examples used in the Domain/CommonLISP documentation are
now available online. See the following directories:
/sys/common_lisp/examples/advancedguide
/sys/common_lisp/examples/clos
/sys/common_lisp/examples/delivery
/sys/common_lisp/examples/editor
/sys/common_lisp/examples/flavors
/sys/common_lisp/examples/loop
/sys/common_lisp/examples/userguide
/sys/common_lisp/examples/windows
o C Header File
To learn how to access Lisp data types from within C, see the header
file /sys/common_lisp/examples/foreign_code/lisp.h.
Domain/CommonLISP 3-2 Version 4.0
o Miscellaneous Examples
Several useful files are available in /sys/common_lisp/misc. In
order to save space in the wedlisp and clxwedlisp images, most
windows and editor internal definitions not needed for correct
execution at runtime are not fully included in the image (for
example, defconstants, defmacros, defsubsts, and defstructs). If you
need these internal definitions for some reason, such as to compile a
file, you can load the files windows-defstructs.lbin and
editor-defstructs.lbin to make them available.
The file apollo-helix.lisp contains the code used to define the
bindings of Apollo function keys in the Editor.
Version 4.0 3-3 Domain/CommonLISP
Chapter 4
Bugs and Bug Fixes
4.1 Restrictions
The following note and restriction apply to the DM-based Window Tool Kit:
Because the primary colors usually available in color map entries 1..6 are no
longer reserved in the SR10.x environment, the default value of the
:USE-EXISTING-PRIMARIES argument to SETUP-COLOR-LIBRARY has been changed
from T to NIL when the display has more than 4 planes. If you use
:USE-EXISTING-PRIMARIES T and the primary colors are not currently installed
in color map entries 1..6, an error is signalled:
> (setup-color-library :use-existing-primaries t)
>>Error: Cannot set color map entry 2 to 65280
When you are initializing the Window Tool Kit, the current directory must be
on a Domain file system because the label given to the Lisp Window must be
created, at least temporarily, as a file system object; in addition, an
argument you specify as the :LABELS keyword to the INITIALIZE-WINDOWS
function must be a legal file name. For example, if you use a label with a
slash, you get the following error (unless the current directory has
subdirectories "2" and "12"):
> (initialize-windows :label "2/12/89")
>>Error: Cannot initialize Window Tool Kit - couldn't find directory in
pathname (stream manager/IOS)
INITIALIZE-WINDOWS:
Rest arg 0 (ARGS): (:LABEL "2/12/89")
:A 0: Abort to Lisp Top Level
->
The following notes and restrictions apply to the Delivery Tool Kit:
You cannot use the Treeshaker in an image that has been reorganized.
Output from the function test-application might contain internal Lucid
symbols, as in the following example:
Version 4.0 4-1 Domain/CommonLISP
(DEFAPPLICATION :ERROR-HAND
(:TOP-LEVEL-FUNCTION 'ERROR-TOPLEVEL)
(:INCLUDE-FEATURES :DEBUG :EVAL)
(:INCLUDE-READER-TYPES :ALL)
(:INCLUDE-FORMAT-DIRECTIVES #/A #/% #/&)
(:INCLUDE-FUNCTIONS 'UNARY-OPERATOR-P
'|constructor for
UNKNOWN-BINARY-OPERATOR|
'(:INTERNAL ENTER-TOP-LEVEL 1)
'|constructor for
UNKNOWN-UNARY-OPERATOR|
'BINARY-OPERATOR-P))
You cannot use the Treeshaker on applications that use the CLX-based Window
Tool Kit. You can only use the Treeshaker on applications that use the
DM-based Window Tool Kit.
The function test-application does not produce the correct automatic
defapplication form when your application uses the Window Tool Kit.
4.2 Known Bugs
The following known situations are currently under investigation:
o The Aegis command tz and the Lisp command get-decoded-time interact
poorly. For example, suppose you type the following at a shell:
$ tz utc
$ lisp
.
.
.
> (get-decoded-time)
The values returned by get-decoded-time will not reflect the change
of tz. This is not timezone specific; that is, any change of
timezone, not to utc alone, will cause the bug to appear.
o In clxwedlisp, the CTRL-? key does not work; however, you can obtain
help by using the META-? key.
Domain/CommonLISP 4-2 Version 4.0
4.3 Bug Fixes
The following bugs have been fixed in Version 4.0:
o Saving a file from the Editor (using control-x control-s) causes
Lisp to invoke the debugger.
o pop-up-edit-string enters the debugger when passed a small string
(for example, (pop-up-edit-string "sma")).
o Given the following source code in a file named "test.lisp"
(defmacro df (name formal &body forms &aux (internal (gensym)))
`(defmacro ,name (&rest . ,formal)
`(funcall ,#'(lambda (&rest . ,formal) . ,forms)
. ,(mapcar #'(lambda (,internal) (list 'quote ,internal)) . ,formal))))
(df fmt2tty (z)
(format t " & a %" (car z)))
(defun testit (1st)
(dolist (xx 1st) (fmt2tty xx)))
then the following function causes Lisp to invoke the debugger:
> (compile-file "test.lisp")
o Domain/CommonLISP Version 3.0 and Domain/CommonLISP Version 4.0 seem
to take longer to cons than Domain/CommonLISP Version 2.2. This was
actually a performance bug in copytree.
o For a set of times, the values returned by decode-universal-time are
one hour off from those passed to encode-universal-time in the
following example:
(multiple-value-bind (ns nm nh ndom nmo ny)
(decode-universal-time (encode-universal-time s m h dom mo y))
... )
Version 4.0 4-3 Domain/CommonLISP