Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

















          VAX LISP/VMS Release Notes




          October 1989

          This file contains the release notes for VAX LISP/VMS V3.0-A. It
          describes additions and changes to VAX LISP/VMS and summarizes
          any known restrictions and limitations in VAX LISP/VMS V3.0-A.




          Operating System and Version: VMS 5.1

          Software Version:             VAX LISP/VMS V3.0-A





          Digital Equipment Corporation























          ________________________
          August 1989

          The information in this document is subject to change without
          notice and should not be construed as a commitment by Digital
          Equipment Corporation. Digital Equipment Corporation assumes no
          responsibility for any errors that may appear in this document.

          The software described in this document is furnished under a
          license and may be used or copied only in accordance with the
          terms of such license.

          No resposibility is assumed for the use or reliability of soft-
          ware on equipment that is not supplied by Digital Equipment
          Corporation or its affiliated companies.

          __________
          Copyright ©1989  Digital Equipment Corporation

          All Rights Reserved
          Printed in USA

          The following are trademarks of Digital Equipment Corporation:

          AI VAXstation    PDP              VAX LISP/VMS
          DEC              ULTRIX           VAX LISP/ULTRIX
          DECnet           ULTRIX-11        VAXstation
          DECUS            ULTRIX-32        VAXstation II
          MicroVAX         UNIBUS           VMS
          MicroVAX II      VAX
          MicroVMS         VAX LISP         DIGITAL




          This document was prepared using VAX DOCUMENT, Version 1.2






















                                      CONTENTS



          Chapter 1  NEW FEATURES...................................     1

             1.1 DECwindows Interface to VAX LISP...................     1

             1.2 Data Representation................................     1

             1.3 Memory Management..................................     3

             1.4 Callback Facility..................................     3

             1.5 CLX and DECwindows Toolkit Support.................     4

             1.6 System-Building Utility............................     5

             1.7 Example Programs...................................     5

             1.8 Enhancements.......................................     6

             1.9 ANSI Standard Committee X3J13 Changes to Common
                 LISP...............................................     9

          Chapter 2  RESTRICTIONS AND LIMITATIONS...................    15

             2.1 Notice to 9-Track Tape Customers...................    15

             2.2 DECwindows Interface to VAX LISP...................    16

              2.2.1 The Listener....................................    16

              2.2.2 The Inspector...................................    17

              2.2.3 The Editor......................................    17

             2.3 The Terminal-Based Editor..........................    18

             2.4 Memory Management..................................    19

             2.5 Threads............................................    19

             2.6 Callout Facility...................................    20

                                                                       iii









             2.7 Error Handling.....................................    20

             2.8 Window Streams.....................................    20

             2.9 VMS Workstation Graphics...........................    20

          Chapter 3  DOCUMENTATION ERRATA...........................    21

             3.1 VAX LISP/VMS Implementation and Extensions to
                 Common LISP........................................    21

             3.2 VAX LISP/VMS System-Building Guide.................    21

             3.3 VAX LISP/VMS Object Reference Manual...............    21

             3.4 VAX LISP/VMS Graphics Programming Guide............    22

             3.5 VAX LISP/VMS DECwindows Programming Guide..........    23





















          iv




















                                      CHAPTER 1


                                    NEW FEATURES


          1.1  DECwindows Interface to VAX LISP

          VAX LISP now supports a DECwindows interface on VAX worksta-
          tions. This interface provides the following utilities:

          o  The Listener

          o  The Editor

          o  The Debugger

          o  The Tracer

          o  The Inspector

          For information about this new interface, see the VAX LISP/VMS
          Program Development Guide.

          1.2  Data Representation

          There are several new data types, as well as changes to existing
          data types:

          o  Complex Numbers

             V3.0-A of VAX LISP supports complex numbers. The print repre-
             sentation and use are defined in Common LISP: The Language.


                                                           New Features  1
















          o  Fixnums

             Integers with an immediate representation have 29 bits, one
             less than in previous versions of VAX LISP. The range of
             fixnums is now between -2**28 and 2**28-1. The MOST-NEGATIVE-
             FIXNUM is -268435456; the MOST-POSITIVE-FIXNUM is 268435455.

          o  Characters

             Bits and fonts are no longer supported. However, the bits
             attributes are still included in characters for compatibility
             with previous versions. Arrays of characters are now strings.
             To make an array of characters with bits retained, you must
             build a generalized array. The CHARACTER and STRING-CHAR
             types are equivalent.

          o  Arrays

             There are new restrictions on the size of an array, as re-
             flected in the following COMMON LISP constants:

             ARRAY-TOTAL-SIZE-LIMIT            2**24

             ARRAY-DIMENSION-LIMIT             2**24

             ARRAY-RANK-LIMIT                  8

             The default array element for (MAKE-ARRAY array :ELEMENT-TYPE
             T) is now 0 instead of NIL. Specify :INITIAL-ELEMENT NIL to
             restore the Version 2.2 behavior.

          o  Structures are never SIMPLE-VECTOR-P, VECTORP or ARRAYP. In
             Version 2.2, they sometimes were.






          2  New Features
















          1.3  Memory Management

          The /CSTACK qualifier lets you set the size of the default con-
          trol stack to a specified number of pages. See the VAX LISP/VMS
          Program Development Guide for more information.

          VAX LISP now provides an ephemeral garbage collector in addition
          to the full garbage collector. The following new memory manage-
          ment and garbage collection functions support this feature:

          o  AREA-SEGMENT-LIMIT

          o  AREA-SEGMENTS

          o  DYNAMIC-SPACE-RATIO

          o  ENLARGE-LISP-MEMORY

          o  GC-COUNT

          o  GC-MODE

          o  MEMORY-ALLOCATION-EXTENT

          The following functions have changed for VAX LISP V3.0-A:

          o  ROOM

          o  ROOM-ALLOCATION

          These new and changed memory management and garbage collec-
          tion functions are documented in VAX LISP Implementation and
          Extensions to Common LISP.

          1.4  Callback Facility

          VAX LISP allows external routines to invoke VAX LISP routines.
          See the VAX LISP/VMS System Access Guide for more information.

                                                           New Features  3
















          1.5  CLX and DECwindows Toolkit Support

          VAX LISP now supports the Common LISP X (CLX) and DECwindows
          Toolkit routines. See the VAX LISP/VMS DECwindows Programming
          Guide.

          VAX LISP CLX differs from the public domain version of CLX in
          the following ways:

          o  The package is named CLX, not XLIB. Use the RENAME-PACKAGE
             function if this causes a problem.

          o  CLX:PROCESS-EVENT accepts only a single function for the HAN-
             DLER argument, not a sequence of handlers. Also CLX:PROCESS-
             EVENT can accept an extra keyword, :EVENT, which lets you
             specify an object of type DWT:EVENT. CLX:PROCESS-EVENT pro-
             cesses the event as if it came from the event queue. If
             you use the :EVENT keyword, then the :TIMEOUT, :PEEK-P and
             :DISCARD-P parameters are ignored.

          o  CLX:READ-BITMAP-FILE and CLX:WRITE-BITMAP-FILE take extra
             arguments that let you read and write to pixmaps as well as
             images.

          o  CLX:DRAW-ARC and CLX:DRAW-ARCS take an optional parameter,
             DEGREES-P, which specifies that ANGLE1 and ANGLE2 are in
             degrees instead of the default, radians.

          o  There is only one image structure, CLX:IMAGE. Data can be
             extracted from it by CLX:IMAGE-XY-BITMAP-LIST or CLX:IMAGE-
             Z-PIXARRAY, depending on the format of data stored in the
             image. Use CLX:FREE-IMAGE to free up the memory of an image
             returned by CLX:GET-IMAGE.

          The VAX LISP interface to the DECwindows Toolkit differs from
          the VAX and C Toolkit interfaces in the following way:

          o  The functions DWT:INITIALIZE, DWT:MAIN-LOOP, DWT:NEXT-EVENT
             and DWT:APP-MAIN-LOOP are actually LISP functions composed
             of calls to other routines in the DWT: package. They do not

          4  New Features














             simply call the C Toolkit routines of the same name, although
             they should provide the same behavior and interface.

          CLX and DECwindows Toolkit functions can be used together. Sev-
          eral Toolkit accessor functions return CLX objects such as win-
          dows, displays, and screens. To do this, initialize the Toolkit
          and use the DWT:WINDOW function to return the CLX:WINDOW asso-
          ciated with a widget. Then you can use CLX functions to access
          that window. Remember that the DECwindows Toolkit automatically
          queries the event queue and dispatches events, so be careful
          using CLX event-processing routines on a display that has been
          set up by a DECwindows Toolkit function.

          1.6  System-Building Utility

          The new features that have been added to the system for V3.0-A
          are excludable, using the following options:

             :CLX
             :DECWINDOWS
             :DECW-DEVELOPMENT-ENVIRONMENT
             :DWT
             :WSSTREAM

          See VAX LISP/VMS System-Building Guide for information on these
          and other system-building options.

          1.7  Example Programs

          The installation kit contains an assortment of unsupported
          example LISP files, including several useful VAX LISP utilities
          and examples of LISP programming style. It is not necessary for
          you to install these examples to use VAX LISP.

          Included in the examples are the 05/23/89 (Victoria Day) version
          of Portable Common Loops (PCL), the publicly-available implemen-
          tation of the Common LISP Object System (CLOS). Also included is
          a version of RdbLISP and Foxglove.

                                                           New Features  5
















          The RdbLISP software provides an interface layer between Digi-
          tal's relational database (Rdb/VMS) and VAX LISP/VMS.

          Foxglove is a rapid-prototyping language, written in VAX LISP,
          for developing rule-based expert system applications. Foxglove
          has the following features:

          o  Automatic question asking

          o  The ability to handle arbitrary LISP code in rules

          o  A built-in user interface for normal character-cell terminals
             as well as windowing for DECwindows

          o  Explanations and retraction

          o  Automatic conclusion reporting

          o  The ability to partition the rule base and control rule
             firings using rule blocks

          1.8  Enhancements

          o  Math

             (EXPT 2.0 50) returns a float, not an integer.

             (SCALE-FLOAT 0.0 n) returns 0.0 for all n.

             (FLOOR 0 -1) returns 0 0 rather than -1 -1.

          o  Pathnames

             You can use PARSE-NAMESTRING with a default argument of any
             of the types: PATHNAME, STRING, SYMBOL, or STREAM.

          o  SUBTYPEP

             For a structure of type ANYTYPE, (SUBTYPEP 'NIL 'ANYTYPE)
             returns T; T. Also, (TYPEP (MAKE-ANYTYPE) 'VECTOR) and (TYPEP
             (MAKE-ANYTYPE) 'ARRAY) return NIL.

          6  New Features













             For element types of arrays which VAX LISP implements as
             generalized arrays, VAX LISP considers the type a subtype of
             the general array. For example:

                  (subtypep '(simple-array (float) (*))
                            '(simple-array T (*)))

             This form returns T; T.

          o  REDUCE with :INITIAL-VALUE of NIL

             (REDUCE #'LIST '(1 2 3 4) :FROM-END T :INITIAL-VALUE NIL) now
             returns the correct result: (1 (2 (3 (4 NIL)))).

          o  SETF

             In V2.2, if A was a vector of five NILs, (PUSHNEW 'X (APPLY
             #'AREF A '(1))) failed even though (PUSHNEW 'X (AREF A 1))
             succeeded. This was fixed in V3.0.

             In V2.2, a call to DEFINE-MODIFY-MACRO in a loaded
             interpreted file resulted in a function definition that the
             interpreter could not understand. This problem was fixed in
             V3.0.

          o  APPLY

             The error message for (APPLY 'UNDEFINED ...) has been changed
             to say that UNDEFINED has no function definition.

          o  Compiler Changes

             If an in-line function calls a macro, the macro definition
             is expanded at compile time into the in-line function
             definition.

          o  Interpreter Type Checking

             The interpreter now checks type declarations in the following
             circumstances:

             -  Lexical variables

                                                           New Features  7












                If a variable is declared to be of a certain type, a
                warning is issued if the variable is bound to a value
                not of that type or the variable is assigned with SETQ to
                a value not of that type. For example:

                     Lisp> (defun example (x)
                             (declare (fixnum x))
                             (setq x "foo"))
                     EXAMPLE
                     Lisp> (example "bar")
                     Warning in EXAMPLE:
                     The variable X is declared to be of type FIXNUM, but is
                     being bound to "bar"

                     Warning in EXAMPLE:
                     The variable X is declared to be of type FIXNUM, but is
                     being assigned the value "foo"
                     "foo"

             -  Special variables

                Similarly, if a special variable is proclaimed to be of
                a certain type, a warning is issued if the variable is
                assigned with SETQ to a value of the wrong type.

                A warning is also issued when a special variable
                is referenced or assigned by interpreted code, the
                variable is not proclaimed or declared special, and
                the code is read by LOAD (as opposed to being typed
                at a read-eval-print loop or evaluated). The warning
                happens the first time a particular assignment or variable
                reference happens, and not after. For example, in:

                     (dotimes (i 10) (setq x i))

                if x is not proclaimed special, there will be one warning
                the first time the loop is executed.

             -  Forms

          8  New Features















                For consistency with the above, in (THE value-type form),
                a warning is now issued if the result of evaluating the
                form does not conform to the data type specified by
                value-type. In previous versions of VAX LISP, an error
                was signalled.

          o  Pretty-Printer Change

             *PRINT-RIGHT-MARGIN* is effective even when *PRETTY-PRINT* is
             NIL. This helps avoid extremely long RMS records when writing
             to a file, without having to pay the overhead of full pretty
             printing.

          1.9  ANSI Standard Committee X3J13 Changes to Common LISP

          o  A macro cannot legitimately expand into a declaration; the
             only valid declaration is a list whose CAR is the symbol
             DECLARE. However, it is still possible for a macro call to
             expand into a PROCLAIM form.

          o  If the one-argument form of DEFVAR is used, the initial value
             of NIL is no longer given to the variable.

          o  Each function created by FLET and LABELS and each macro
             created by DEFMACRO and MACROLET has an implicit block around
             its body. The name of this block is the same as the name
             of the function or macro. Similarly, the body of a DEFSETF,
             DEFINE-SETF-METHOD, and DEFTYPE is surrounded by a block with
             the same name as the accessor or type.

          o  The syntax of FLET, LABELS, and MACROLET allows declarations
             between the list of local function or macro definitions and
             the body.

             In FLET and LABELS, the scope of such declarations includes
             the bodies of the locally defined functions when the
             declarations are pervasive. Non-pervasive declarations have
             no effect on those bodies except when LABELS includes the
             body in the scope of a function non-pervasively declared. The

                                                           New Features  9















             scope of such declarations does not include the bodies of the
             macro expander functions defined by MACROLET.

          o  A new function called ROW-MAJOR-AREF allows one-dimensional
             access to the storage backing up a given array, assuming the
             normal row-major storage layout. ROW-MAJOR-AREF is valid for
             use with SETF.

             Syntax:

             ROW-MAJOR-AREF array index

          o  VAX LISP V3.0-A adheres to new rules for the interaction
             between ADJUST-ARRAY and displaced arrays, described here
             in terms of three arrays, called A, B, and C. Array A may
             be displaced to B before a call to ADJUST-ARRAY or it may be
             displaced to C after the call. That is, the following four
             situations are possible:

             1. A is not displaced before or after the call to
                ADJUST-ARRAY. In this case, the dimensions of A are
                altered and the contents rearranged as appropriate.
                Additional elements of A are taken from the
                :INITIAL-ELEMENT. The use of :INITIAL-CONTENTS causes
                all old contents to be discarded.

             2. A is not displaced before but is displaced to C after. In
                this case, none of the original contents of A appears in A
                afterwards; A now contains the contents of C, without any
                rearrangement of C.

             3. A is displaced to B before the call and to C after.
                In this case, the contents of B do not appear in
                A unless such contents also happen to be in C. If
                :DISPLACED-INDEX-OFFSET is not specified in the
                ADJUST-ARRAY call, it defaults to zero; the old offset
                into B is not retained.


          10  New Features
















             4. A is displaced to B before the call but not after. In this
                case, A gets a new data region and the contents of B are
                copied into it as appropriate to maintain the existing
                old contents; additional elements of A are taken from the
                :INITIAL-ELEMENT. However, the use of :INITIAL-CONTENTS
                causes all old contents to be discarded.

             If array A is displaced to array B, and array B is displaced
             to array C, and array B is altered by ADJUST-ARRAY, array A
             must now refer to the adjusted contents of B. VAX LISP does
             not collapse the chain to make A refer to C directly.

             If A is displaced to B, it is an error to adjust B such that
             it no longer has enough elements to satisfy A.

                                           NOTE

                Omitting the :DISPLACED-TO argument to ADJUST-ARRAY is
                equivalent to specifying :DISPLACED-TO NIL; in either
                case, the array is not displaced after the call.

          o  The :FILL-POINTER keyword argument to ADJUST-ARRAY is treated
             as follows:

             If the :FILL-POINTER argument is not given, then the fill
             pointer of the array to be adjusted is left alone. It is
             an error to adjust an array to a size smaller than its fill
             pointer without specifying the :FILL-POINTER option so that
             its fill pointer is properly adjusted in the process.

             If supplied, the :FILL-POINTER argument must be either an
             integer (between 0 and the new size of the array), the symbol
             T (indicating that the new size of the array should be used),
             or the symbol NIL (indicating that the fill pointer should
             left as it is, that is, as if the :FILL-POINTER option had
             not been specified).

             An error is signalled if a non-NIL value for :FILL-POINTER is
             supplied and the array to be adjusted does not already have a
             fill pointer.

                                                          New Features  11














          o  Array element types are automatically upgraded. See the
             description of MAKE-ARRAY in the VAX LISP Implementation and
             Extensions to Common LISP manual. Note that VAX LISP supports
             array element type upgrading as it did in Version 2.2, but
             with different results for some cases because V3.0-A supports
             additional primitive array types. Furthermore, SUBTYPEP and
             TYPEP are not consistent with Version 2.2. Refer to VAX LISP
             Implementation and Extensions to Common LISP for information
             on how these functions behave in V3.0-A.

          o  VAX LISP V3.0-A allows a :KEY keyword for ASSOC-IF,
             ASSOC-IF-NOT, RASSOC-IF, and RASSOC-IF-NOT. If not supplied,
             the value of :KEY defaults to #'IDENTITY. As with the :KEY
             argument for ASSOC and RASSOC, the :KEY argument is applied
             to the CAR of the pair in the association list for ASSOC-IF
             and ASSOC-IF-NOT and the CDR of the pair for RASSOC-IF and
             RASSOC-IF-NOT.

          o  The REDUCE function now takes a :KEY keyword. If a :KEY
             argument is supplied, its value must be a function of one
             argument which will be used to extract the values to reduce.
             The :KEY function will be applied exactly once to each
             element of the sequence in the order implied by the reduction
             order, but not to the value of the :INITIAL-VALUE argument.

          o  Type declarations may be made for free variables. The value
             of the variable must be a member of the declared type, within
             the scope of the declaration. This kind of declaration
             means the same thing as wrapping a THE form around every
             reference to the variable, including modifying references by
             SETQ or SETF. If nested type declarations refer to the same
             variable, then the value of the variable must be a member of
             the intersection of the declared types.

          o  DEFSTRUCT types which :INCLUDE another type but do not
             specify an explicit :PRINT-FUNCTION inherit the structure
             print function from the included type. A print function
             that uses the default #S syntax, which overrides any
             print function for the parent type, can be specified by
             :PRINT-FUNCTION NIL.

          12  New Features














          o  In V3.0-A, (LCM) returns the integer 1.






































                                                          New Features  13




















                                      CHAPTER 2


                            RESTRICTIONS AND LIMITATIONS


          2.1  Notice to 9-Track Tape Customers

          For 9-track tape customers only, an additional saveset, Saveset
          F, is distributed on the second tape labeled LSP030 in the
          installation kit. (For TK50 customers, the files in Saveset
          F are contained in Saveset D.) Saveset F contains some LISP
          source files and compiled files that are not installed by the
          VMSINSTAL procedure. This saveset is not necessary for running
          VAX LISP; it contains example programs only. However, if you
          find you need any of the files in this saveset, you can copy
          them from the tape using the BACKUP utility, as shown in the
          following example.

               $ mount/for ddcu:
               $ backup/log ddcu:lisp030.f/save []

          ddcu: represents the device name of the 9-track tape drive.

          After you enter these commands, BACKUP copies the files to
          your working directory and displays the name of each file
          as it is copied. The saveset contains 151 files and takes up
          approximately 34,000 blocks. Notice that the file extensions
          have a 2 to 3-letter suffix. The suffix indicates the directory
          to which it belongs. Each directory has a logical name, as shown
          in the following table:




                                          Restrictions and Limitations  15















          ________________________________________________________________
          Suffix             Logical Name

          ________________________________________________________________

          EG                 LISP$EXAMPLES

          PCL                LISP$PCL

          RL                 RDBLISP$EXAMPLES

          FG                 FOXGLOVE$SYSTEM

          ________________________________________________________________

          When all the files have been copied, you can dismount the tape
          using the command:

               $ dismount ddcu:

          You may then want to copy the files to the appropriate
          directories, removing the suffixes at the same time.

          2.2  DECwindows Interface to VAX LISP

          o  Resumying a system suspended under DECwindows reinstates only
             the Listener.

          2.2.1  The Listener

          o  There are restrictions on using SPAWN with the DECwindows
             interface to VAX LISP. See the VAX LISP/VMS Object Reference
             Manual for details.

          o  Object selection is affected by the value of the special
             variable *PRINT-CIRCLE*. When *PRINT-CIRCLE* is non-NIL, only
             the top-level object is selectable. For example, given the
             Listener dialog below:


          16  Restrictions and Limitations
















                  Lisp> (quote (a b c))
                  (A B C)
                  Lisp>

             If *PRINT-CIRCLE* is NIL four objects printed by LISP are
             selectable: (A B C), A, B, and C. If *PRINT-CIRCLE* is
             non-NIL only the top-level object, (A B C), is selectable.

          o  The following sequence may kill your window manager process:

             1. Invoke the DECwindows Debugger from the Listener.

             2. From the Debugger, invoke the Stepper.

             3. From the Stepper, invoke the Debugger.

             4. Quit back to the Listener.

          2.2.2  The Inspector

          o  When inspecting an object, the middle button brings up the
             pop-up menu even if the pointer cursor is in one of the
             scroll bars. This is due to a problem with DECwindows.

          2.2.3  The Editor

          o  There is no automatic attachment of the input focus to the
             Editor when the ED function is called. You must click in the
             Editor window to attach input focus.

          o  If you scroll an anchored window that is partially occluded
             by a floating window, some of the text that was occluded
             may not be properly exposed when moving out from under the
             floating window. You can use the "Redisplay Screen" command
             to bring up the missing text.

          o  In V3.0-A under DECwindows, the behavior of the
             EDITOR:RETURN-FROM-EDITOR macro in a top-level (as opposed to
             recursive) call to ED is unpredictable, since the Editor is
             running separately from the Listener's READ-EVAL-PRINT loop.

                                          Restrictions and Limitations  17














          o  If you resize the Editor window with the DECwindows window
             manager controls, you either clip the information inside
             the window or expose blank space. Use the functions
             EDITOR:SCREEN-HEIGHT and EDITOR:SCREEN-WIDTH with SETF to
             resize the Editor display. Note that you can call these
             functions before you invoke the Editor (for example, they can
             go into an initialization file). Only in this case are your
             values remembered across Editor invocations in a single LISP
             session. If you simply start the Editor, it comes up 46 rows
             by 80 columns (the default size). If you go into the Listener
             and change the screen height with EDITOR:SCREEN-HEIGHT, the
             Editor is resized. If you then exit the Editor and call
             ED, the Editor comes up the default size. However, if you
             call EDITOR:SCREEN-HEIGHT or -WIDTH while the Editor is not
             running, you reset the default values used when the Editor
             window is brought up.


          2.3  The Terminal-Based Editor

          o  If you respond to the last prompt in the "Bind Command"
             command with binding context :GLOBAL, you may be left in
             the prompting window when you should have been returned to
             your previous window. Use the "Next Window" command (bound to
             CTRL/X CTRL/N globally) to set your cursor back. Any other
             action when your cursor remains in the prompting window is
             unpredictable.

          o  The "General Prompting" buffer does not work in overstrike
             mode. The variable EDITOR:TEXT-OVERSTRIKE-MODE is bound
             to NIL in the "General Prompting" buffer so that you can
             change the global binding of EDITOR:TEXT-OVERSTRIKE-MODE
             without affecting the "General Prompting" buffer. You should
             not change the binding in the "General Prompting" buffer;
             otherwise, commands that prompt will not work.




          18  Restrictions and Limitations
















          o  The function WINDOW-LINES-WRAP-P and the Editor Variable
             "Default Window Lines Wrap" do not always display wrapped
             lines correctly. The bottom wrapped line may not appear when
             you scroll continuation lines. Instead, you may see a second
             copy of the first line.


          2.4  Memory Management

          o  ENLARGE-CONTROL-STACK is no longer supported.

          o  The problem with endless control stack overflows has been
             eliminated.

          2.5  Threads

          o  The upper limit on the number of threads has increased. You
             can now create and execute about 100 threads.

          o  Threads are not being deleted properly when they execute at
             different priorities. For now, you should create all threads
             at the default priority (2). This will be fixed in the next
             release of VAX LISP.

          o  Threads created at a priority lower than the default (2)
             cannot be scheduled, executed, or deleted. This will be fixed
             in the next release of VAX LISP.

          o  Competition from multiple threads for FORMAT occassionally
             causes an error that results in locking up LISP. This is
             rare and can be easily avoided by limiting I/O in competing
             threads.







                                          Restrictions and Limitations  19
















          2.6  Callout Facility

          o  If VMS issues a warning message during shareable image
             activation, a callout function will abort even though the
             image is correctly mapped. This will be fixed in a future
             release of VMS.


          2.7  Error Handling

          o  CANCEL-CHARACTER-TAG is now obsolete. Use CATCH-ABORT and
             ABORT instead of (CATCH 'CANCEL-CHARACTER-TAG ...) and
             (THROW 'CANCEL-CHARACTER-TAG ...). CATCH-ABORT and ABORT
             are described in VAX LISP/VMS Object Reference Manual.

          o  THROW-TO-COMMAND-LEVEL is no longer supported.

          2.8  Window Streams

          o  CLX window streams work the same as UIS window streams;
             they are now editable. The default is black lettering on
             a white background. The window's contents are not redrawn
             when exposure events occur.


          2.9  VMS Workstation Graphics

          o  A window created by UIS:WINDOW-CREATE will have a border even
             if :NOBORDER is specified and it may not appear as wide as
             requested.

          o  When running on VWS V4.0, the Editor does not run in a
             separate window. This is due to an error in VWS V4.0.






          20  Restrictions and Limitations




















                                      CHAPTER 3


                                DOCUMENTATION ERRATA


          3.1  VAX LISP/VMS Implementation and Extensions to Common LISP

          o  In Section 1.3.7.1, the last sentence of the fourth paragraph
             is incorrect. There is no maximum byte size. VAX LISP reads
             and writes binary files as 510-byte variable-length records,
             up to the byte size that you specify.


          3.2  VAX LISP/VMS System-Building Guide

          o  In Table 2-1, the descriptions of the :CLX and
             :DECW-DEVELOPMENT-ENVIRONMENT keywords are incorrect.
             Excluding CLX precludes the built system from using
             the DECwindows interface, but not the DECtoolkit.
             :DECW-DEVELOPMENT-ENVIRONMENT is automatically excluded by
             both :DECWINDOWS and :CLX.

          3.3  VAX LISP/VMS Object Reference Manual

          o  The following information should be added to the second
             paragraph of the description of the BIND-KEYBOARD-FUNCTION
             function:

             In the DECwindows environment, if the interrupt
             function writes output to the Listener (that is, to the
             *STANDARD-INPUT* or *STANDARD-OUTPUT* streams), the output
             is written above the current Lisp> prompt. If this output
             is intended to be a prompt for user input, the desired

                                                  Documentation Errata  21
















             appearance can be achieved by using the PROMPT function
             rather than the PRINT function.

          o  The PROMPT function should be added to the VAX
             LISP/VMS Object Reference Manual following the
             *PRINT-SLOT-NAMES-AS-KEYWORDS* variable and preceding the
             REQUIRE function.

          PROMPT Function

          Prints a prompt to a stream.

          Format

          PROMPT &OPTIONAL  prompt stream

          Arguments

          prompt
          A string or a function that takes no arguments and returns a
          string. The default is the value of *TOP-LEVEL-PROMPT*.

          stream
          A stream.

          Return Value

          The value of prompt.

          3.4  VAX LISP/VMS Graphics Programming Guide

          o  The name of the VAX LISP manual that describes VAX LISP's
             interface to the VMS Workstation Software graphics (also
             called the UIS graphics interface) has changed. The manual
             was called the VAX LISP/VMS Graphics Programming Guide. It
             is now called the VAX LISP/VMS Interface to VWS Graphics.
             The original manual and VAX LISP/VMS V3.0 update to that
             manual are not autmatically included in the VAX LISP/VMS
             documentation set. You must order the manual and its update
             separately. (Order numbers AA-GH76B-TE and AD-GH76B-T1)

          22  Documentation Errata














          o  All references to MicroVMS routines in the VAX LISP/VMS
             Interface to VWS Graphics manual refer to the VMS Workstation
             Software routines described in the VMS Workstation Software
             Graphics Programming Guide.


          3.5  VAX LISP/VMS DECwindows Programming Guide

          o  The following functions were omitted from Part IV. They
             access the data of CLX:IMAGE objects in particular formats.

             None of these functions is a valid SETF place.

          CLX:IMAGE-XY-BITMAP-LIST Function

          Returns the CLX:BITMAP values that contain an image in
          :XY-PIXMAP format.

          Format

          CLX:IMAGE-XY-BITMAP-LIST  image

          Argument

          image
          A CLX:IMAGE object.

          Return Value

          A list of CLX:BITMAP values.

          CLX:IMAGE-Z-BITS-PER-PIXEL Function

          Returns the number of bits used to store each pixel in a
          :Z-PIXMAP format image.

          Format

          CLX:IMAGE-Z-BITS-PER-PIXEL  image

                                                  Documentation Errata  23















          Argument

          image
          A CLX:IMAGE object.

          Return Value

          A member of (1 4 8 16 24 32).

          CLX:IMAGE-Z-PIXARRAY Function

          Returns the data of an image in :Z-PIXMAP format.

          Format

          CLX:IMAGE-Z-PIXARRAY  image

          Argument

          image
          A CLX:IMAGE object.

          Return Value

          A CLX:PIXARRAY value.














          24  Documentation Errata

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