Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought









              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




Typewritten Software • bear@typewritten.org • Edmonds, WA 98026