
1 January 1995
==============

CLISP now compiles and runs on
* microcomputers:
  * DOS
  * OS/2 2.0
  * MS Windows 3.1
  * Amiga 500-4000, Amiga OS
  * Atari ST/TT, TOS
  * Acorn ARM Risc PC, RISC OS
* Unix workstations:
  * PC, Linux
  * PC, USL SVR4
  * DEC Alpha AXP, OSF/1
  * Sun4, SunOS 4 or 5
  * HP9000/800, HP-UX
  * NeXT, NeXTstep 3.1
  * PC, NeXTstep 3.2
  * SGI Mips, Irix 4 or 5
  * SNI Mips, USL SVR4
  * DECstation 5000, Ultrix 4.2
  * IBM RS/6000, AIX 3.2
  * M88000
  * Sun386, SunOS 4
  * Sun3, SunOS 4 (?)
  * HP9000/300, HP-UX or NetBSD
  * Apple MacII, A/UX (?)
  * Amiga 3000, Amiga Unix 2.1
  * Sequent PTX
  * PC, 386BSD or NetBSD or BSDI/386
  * PC, UnixWare
  * PC, SCO (?)
  * PC, Coherent 4.0
  * Convex, ConvexOS
  * Atari ST/TT, MiNT

Generational GC works on
  * PC, Linux
  * Sun4, SunOS 4 or 5
  * NeXT, NeXTstep 3.1
  * PC, NeXTstep 3.2
  * DEC Alpha AXP, OSF/1 3.0


1 January 1995
==============

Important note
--------------

* Changed bytecode format. All .fas files generated by previous CLISP versions
  are invalid and must be recompiled.

User visible changes
--------------------

* The destination file of a compilation can be specified by a command line
  option.

* X3J13 vote <152> is implemented: REDUCE has a keyword argument :KEY.

* The printed representation of file streams of element type STRING-CHAR now
  contains a line number.

* Fixed a bug which caused the interpreter to signal an error when evaluating
  nested DEFUNs.

* Fixed a bug which could cause a crash when a GC occurred during single or
  double float subtraction.

Portability
-----------

* More support for Acorn ARM running RISCOS. Thanks to Peter Burwood.

* Fixed a problem in the readline library on non-POSIX BSD systems: Only LF
  was output instead of CR/LF.

* Updated support for EMX.

* The `configure' script now caches its results.

Other modifications
-------------------

* New memory model TRIVIALMAP_MEMORY which supports generational garbage
  collection in combination with the WIDE tagging scheme.

* Generational garbage collection now also works on NeXTstep and OSF/1 3.0.

* When a memory image is loaded, the terminal stream from the previous
  session is closed.

* Renamed `target' to `configure'.

* Added a manual page in HTML format.

* Miscellaneous documentation updates.


26 October 1994
===============

Important note
--------------

* Changed bytecode format. All .fas files generated by previous CLISP versions
  are invalid and must be recompiled.

User visible changes
--------------------

* X3J13 vote <77> is implemented: CL:FLET, CL:LABELS, CL:MACROLET allow
  declarations.

* X3J13 vote <78> is implemented: CL:FLET, CL:LABELS, CL:MACROLET, DEFTYPE,
  DEFSETF, DEFINE-SETF-METHOD establish an implicit BLOCK.

* X3J13 vote <128> is implemented: MAKE-PATHNAME, PATHNAME-HOST,
  PATHNAME-DEVICE, PATHNAME-DIRECTORY, PATHNAME-NAME, PATHNAME-TYPE have
  a keyword argument :CASE. Thanks to Marcus Daniels.

* X3J13 vote <137> is implemented: New functions WILD-PATHNAME-P,
  PATHNAME-MATCH-P and TRANSLATE-PATHNAME. Thanks to Marcus Daniels.

* X3J13 vote <130> is implemented: New built-in type LOGICAL-PATHNAME.
  New place LOGICAL-PATHNAME-TRANSLATIONS. New functions LOGICAL-PATHNAME,
  TRANSLATE-LOGICAL-PATHNAME, LOAD-LOGICAL-PATHNAME-TRANSLATIONS,
  COMPILE-FILE-PATHNAME. Thanks to Marcus Daniels.

* X3J13 vote <132> is implemented: Synonym streams to file streams are
  allowed as pathnames.

* Amiga version: SCREEN package is implemented. Thanks to Jörg Höhle.

* The debugger emits some more messages to *DEBUG-IO*, not *ERROR-OUTPUT*.

* (COERCE symbol 'FUNCTION) now works.

* Fixed a bug in ENOUGH-NAMESTRING: In many cases, a relative directory
  specification was returned instead of an absolute directory specification.

* Fixed a CLOS bug which caused (DEFCLASS FOO (STANDARD-OBJECT) ()) and
  (DEFINE-CONDITION FOO (CONDITION) ()) to signal errors.

* Fixed a bug: In some situations, USE-PACKAGE reported a name conflict when
  there was none.

* Fixed a bug: (READ-CHAR-NO-HANG stream nil eof-object) now signals an error
  if stream is not an input stream. Previously it returned eof-object.

* Fixed a bug: On some Unix systems, (FINISH-OUTPUT *TERMINAL-IO*) signalled
  an error if standard output was redirected to a file.

* (SQRT 0) now returns an integer 0 instead of a floating-point 0.0.

* Readline library: Fixed a small problem with input prompts longer than the
  screen width.

* Fixed three bugs in the built-in editor. One of them made the editor
  entirely unusable.

Portability
-----------

* Added some support for MS Windows.

* On DOS, the readline library now handles the /!INPUTRC and history files
  correctly.

* Some modification for the sake of gcc-2.6.1.

Other modifications
-------------------

* Generational garbage collection now also works on Linux (1.1.52 or newer).

* On Unix, external modules written in C can be linked to CLISP without
  recompiling CLISP from source. For example, the STDWIN library.

* Small fix: On some machines, some internal objects were being printed as
  #<SYSTEM-POINTER ...> instead of #<FRAME-POINTER ...>.

* Miscellaneous documentation updates.


1 September 1994
================

User visible changes
--------------------

* The DEFCONSTANT warning about redefinition of a constant is also inhibited
  if the constant's new and old values are the same string (in the sense of
  EQUAL). Thanks to Marcus Daniels.

* Unix version only: The daylight saving time flag of a time zone (eighth
  value of GET-DECODED-TIME and DECODE-UNIVERSAL-TIME) is now correct.

Portability
-----------

* Added support for Acorn ARM running RISCOS. Thanks to Peter Burwood.

* Added support for NetBSD 1.0. Thanks to Douglas Crosher.

* Updated support for EMX and DJGPP.

* GNU malloc for HP-UX now works.


23 August 1994
==============

User visible changes
--------------------

* X3J13 vote <64> is implemented: New macro DESTRUCTURING-BIND.

* The function ED can now edit functions that have been entered in
  interpreted form even if they have later been compiled.

* New function UNCOMPILE. (UNCOMPILE function-name) undoes the effect of
  (COMPILE function-name) if the function's definition had been entered
  in interpreted form.

* The OPEN option :IF-EXISTS :RENAME-AND-DELETE now deletes the renamed
  file. Previously :RENAME-AND-DELETE was equivalent to :RENAME.

* (LISP-IMPLEMENTATION-VERSION) returns a more precise version string.

* Readline library: Completion of a function call with no arguments
  automatically adds the closing parenthesis.

* Readline library: When a closing parenthesis is typed, the corresponding
  opening parenthesis is displayed.

Portability
-----------

* Added support for Convex. Thanks to Marcus Daniels.

* Added support for SCO. Thanks to Cathy Bareiss and Marcus Daniels.

* More NeXTstep support.

* More Sinix support. Thanks to Manfred Weichel.

* Updated support for AmigaOS. Thanks to Jörg Höhle.

* Some modification for the sake of gcc-2.6.

* Added GNU malloc. For HP-UX.

* Added a bunch of character set conversion utilities. Covers the ASCII,
  ISO Latin-1, IBM PC, HP Roman8, NeXTstep and Atari ST character sets.

* The `configure' script now prints its results.

* Floating point computations on some CPUs (Sparc, HP-PA, M88000, RS/6000):
  Fixed some confusion between overflow and NaN and between underflow and zero.

* Removed support for Atari Turbo-C (now known as PURE-C).

Other modifications
-------------------

* Copyright clarification.

* Generational garbage collection. This works only for Unix implementations
  with powerful virtual memory management, currently only SunOS.

* Improved virtual memory efficiency:
  - Memory model SPVW_PAGES: don't put a piece of management data into
    every page.
  - Memory model SPVW_BLOCKS: compact conses, don't shuffle them, so that
    they are kept sorted according to their age.
  - Memory model SPVW_PURE_BLOCKS: pages containing garbage are
    immediately freed.

* Unix version only: To reduce the startup time, try to use mmap() instead
  of read() for the startup file.

* Added a readline manual page.

* Miscellaneous documentation updates.


4 July 1994
===========

User visible changes
--------------------

* X3J13 votes <115> and <114> are implemented: an elaborate LOOP macro.
  New macro LOOP-FINISH.
  Warning: The scoping rules for the iteration variables are hairy. If a
  FOR/AS initialisation form refers to an iteration variable of a subsequent
  FOR/AS clause, the effects are implementation dependent!

* X3J13 vote <120> is implemented: New function MAP-INTO.

* X3J13 vote <79> is implemented: New constants
  LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT,
  LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT,
  LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT,
  LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT,
  LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT,
  LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT,
  LEAST-POSITIVE-NORMALIZED-LONG-FLOAT,
  LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT.

* The macro WITH-OUTPUT-TO-PRINTER now also works on DOS.

* Fixed a bug in DO-SYMBOLS: A symbol which is exported from a used package
  was considered accessible in the using package even if it was shadowed by
  another present symbol of the same name.

* Fixed a bug in the debugger which caused the BACKTRACE commands to print
  garbage if the current user interface language was not english.

Other modifications
-------------------

* Miscellaneous documentation updates.


22 June 1994
============

User visible changes
--------------------

* French support is now complete. Thanks to Jörg Höhle.

* The user interface language (english, german or french) can now be chosen
  at startup time through a command line option. The constant *LANGUAGE* has
  been removed, and its value has been removed from *FEATURES*. New macros
  ENGLISH, DEUTSCH, FRANCAIS and LANGUAGE-CASE.

* There is a command line option that makes CLISP behave more like what
  ILISP (a popular Emacs LISP interface) expects.

* The function CLOS:CALL-NEXT-METHOD can now be called with arguments, but
  the check that the set of applicable methods must be the same as for the
  original arguments will be bypassed.

* New functions READ-CHAR-SEQUENCE, WRITE-CHAR-SEQUENCE, READ-BYTE-SEQUENCE,
  WRITE-BYTE-SEQUENCE which perform fast block I/O.

* Errors of type FLOATING-POINT-UNDERFLOW are inhibited in floating point
  computations (and zero is returned instead) during execution of the new
  macro WITHOUT-FLOATING-POINT-UNDERFLOW.

* X3J13 vote <95> is implemented: If the readtable argument passed to
  GET-MACRO-CHARACTER and GET-DISPATCH-MACRO-CHARACTER is NIL, the standard
  readtable is used.

* PROBE-FILE doesn't report an error any more if an intermediate directory
  in the path doesn't exist. NIL is returned instead.

* The DEFCONSTANT warning about redefinition of a constant is inhibited if
  the constant's new and old values are the same (in the sense of EQL).
  Thanks to Marcus Daniels.

* The function INTERACTIVE-STREAM-P knows that if the terminal stream is
  referring to a regular file (via input redirection) it is not interactive.

* There is a user programmable kind of streams, called generic streams.
  New functions MAKE-GENERIC-STREAM, GENERIC-STREAM-CONTROLLER,
  GENERIC-STREAM-P, GENERIC-STREAM-READ-CHAR, GENERIC-STREAM-READ-BYTE,
  GENERIC-STREAM-LISTEN, GENERIC-STREAM-WRITE-CHAR, GENERIC-STREAM-WRITE-BYTE,
  GENERIC-STREAM-WRITE-STRING, GENERIC-STREAM-CLEAR-INPUT,
  GENERIC-STREAM-CLEAR-OUTPUT, GENERIC-STREAM-FINISH-OUTPUT,
  GENERIC-STREAM-FORCE-OUTPUT, GENERIC-STREAM-CLOSE.
  See impnotes.txt for details. Thanks to Marcus Daniels and Don Cohen.

* The macro WITH-OUTPUT-TO-PRINTER may now also work on OS/2.

* Fixed a CLOS bug: Generic functions with both optional and keyword
  arguments didn't work.

* Fixed a serious bug in the compiler which caused incorrect code to be
  generated for functions like (LAMBDA (X) (SETQ X 1)).

* Fixed a serious bug in the compiler which caused the compiler to crash
  when compiling functions which contain two or more calls to ASSERT.

* Fixed a bug: The macroexpander of MULTIPLE-VALUE-SETQ built up a
  syntactically illegal form.

* Fixed a bug in the reader: When reading pathnames from the syntax
  #S(PATHNAME ...), #n# references in pathname components were not
  resolved prior to calling MAKE-PATHNAME.

* Fixed a bug in the reader: (read-from-string "1/") signalled an error
  of type DIVISION-BY-ZERO.

* Fixed a bug in the terminal stream: If several consecutive READ-LINE
  operations on the terminal stream were performed without any text
  containing newlines being output between them, the prompt finally got
  duplicated and then became longer and longer.

* Fixed a bug in the readline library (bad handling of prompts longer than
  one line). Thanks to Marcus Daniels.

Installation
------------

* All non-Unix versions: Setting the local time zone should now be much
  easier. 122 time zone names are supported.

Portability
-----------

* Unix version only: Getting the time zone should be more robust.

* Added support for NeXT (68k or i386 CPU) running NeXTstep 3.2. Thanks to
  Marcus Daniels.

* Added support for Sequent PTX. Thanks to Marcus Daniels.

* Added support for m88000 running DG/UX. Thanks to Pat McClanahan.

* Added support for UnixWare. Thanks to Alexander Adam.

* Added support for BSDI/386. Thanks to Atsuo Ohki.

* More support for WATCOM C on DOS. Thanks to Blake McBride.

* More support for IRIX 5. Thanks to Bjorn Remseth.

* More support for Sun4m. Thanks to Neil Faulks.

* Better support (speedup) for HP 9000/800 running HP-UX.

* On HP 9000/700 running HP-UX: Don't depend directly on the assembler.

* Maybe some support for SCO. Thanks to Cathy Bareiss.

Other modifications
-------------------

* Speedup SUBLIS and NSUBLIS.

* Let all known versions of gcc2 emit dbra instructions for loops. Thanks
  to Jörg Höhle.

* Renamed condition.lsp to conditio.lsp.

* Miscellaneous documentation updates.


8 January 1994
==============

Portability
-----------

* Remove (incomplete) support for VMS.


7 January 1994
==============

CLISP now compiles and runs on
* microcomputers:
  * Atari ST/TT
  * Amiga 500-4000
  * DOS
  * MS Windows 3.1
  * OS/2 2.0
* Unix workstations:
  * PC, Linux
  * PC, USL SVR4
  * Sun4, SunOS 4 or 5
  * HP9000/800, HP-UX
  * SGI Mips, Irix 4 or 5
  * DEC Alpha AXP, OSF 1.3
  * DECstation 5000, Ultrix 4.2
  * IBM RS/6000, AIX 3.2
  * M88000
  * Sun386, SunOS 4
  * Sun3, SunOS 4 (?)
  * HP9000/300, HP-UX or NetBSD
  * Apple MacII, A/UX (?)
  * Amiga 3000, Amiga Unix 2.1
  * NeXT, NeXTstep 3.1
  * PC, 386BSD or NetBSD
  * PC, Coherent 4.0
  * Atari ST/TT, MiNT


7 January 1994
==============

Important note
--------------

* Changed bytecode format. All .fas files generated by previous CLISP versions
  are invalid and must be recompiled.

User visible changes
--------------------

* X3J13 votes <186> and <31> are implemented: the Common Lisp Condition System.
  New macros
    DEFINE-CONDITION, IGNORE-ERRORS, HANDLER-CASE, HANDLER-BIND,
    RESTART-CASE, WITH-RESTARTS, WITH-SIMPLE-RESTART, RESTART-BIND,
    WITH-CONDITION-RESTARTS,
  new types
    RESTART, CONDITION, SERIOUS-CONDITION, ERROR, PROGRAM-ERROR, CONTROL-ERROR,
    ARITHMETIC-ERROR, DIVISION-BY-ZERO, FLOATING-POINT-OVERFLOW,
    FLOATING-POINT-UNDERFLOW, CELL-ERROR, UNBOUND-VARIABLE, UNDEFINED-FUNCTION,
    TYPE-ERROR, PACKAGE-ERROR, STREAM-ERROR, END-OF-FILE, FILE-ERROR,
    STORAGE-CONDITION, WARNING,
    SIMPLE-CONDITION, SIMPLE-ERROR, SIMPLE-TYPE-ERROR, SIMPLE-WARNING,
  new functions
    MAKE-CONDITION, SIGNAL, COMPUTE-RESTARTS, FIND-RESTART, INVOKE-RESTART,
    INVOKE-RESTART-INTERACTIVELY, ABORT, CONTINUE, MUFFLE-WARNING, STORE-VALUE,
    USE-VALUE, INVOKE-DEBUGGER, RESTART-NAME,
    ARITHMETIC-ERROR-OPERATION, ARITHMETIC-ERROR-OPERANDS, CELL-ERROR-NAME,
    TYPE-ERROR-DATUM, TYPE-ERROR-EXPECTED-TYPE, PACKAGE-ERROR-PACKAGE,
    STREAM-ERROR-STREAM, FILE-ERROR-PATHNAME, SIMPLE-CONDITION-FORMAT-STRING,
    SIMPLE-CONDITION-FORMAT-ARGUMENTS,
  new variables
    *BREAK-ON-SIGNALS*, *DEBUGGER-HOOK*.
  See impnotes.txt for details. Thanks to David Gadbois who wrote most of this.

* X3J13 vote <40> is partially implemented: New variable *PRINT-READABLY*.

* X3J13 vote <34> is implemented: Arrays and packages may now appear as
  constants in compiled code.

* X3J13 vote <90> is implemented: FUNCTIONP on symbols and conses now always
  returns NIL. The type FUNCTION is disjoint from SYMBOL and CONS.
  (COERCE object 'FUNCTION) is implemented.
  Warning: Old style calls like
    (FUNCTIONP object)
  may need to be converted to
    (OR (FUNCTIONP object)
        (SYMBOLP object)
        (AND (CONSP object) (EQ (CAR object) 'LAMBDA))
    )
  This fixes a CLOS bug: (TYPEP object 'FUNCTION) wasn't equivalent to
  (TYPEP object (FIND-CLASS 'FUNCTION)).

* Two new debugger commands Break+ and Break- permit to set resp. remove
  breakpoints at specified EVAL or APPLY frames.

* Warnings and errors produced by COMPILE-FILE are now accompanied by
  source line number information.

* The sub-char passed as second argument to read dispatch macros is now
  exactly the first non-digit read from the stream. Previously it was its
  upper-case equivalent.

* DEFPACKAGE now accepts an option (:DOCUMENTATION doctring).

* DIRECTORY now accepts a keyword argument :CIRCLE. If it is non-NIL,
  the directory search for ".../" and "**/" wildcards on Unix avoids endless
  loops that may result from symbolic links.

* The variable *LOAD-PATHS* in the Unix versions of config.lsp now uses
  "~/" (the home directory at run time) instead of #"~/" (the home directory
  at installation time). Thanks to Gabor Herr.

* Unix and OS/2 versions: New dangerous functions MAKE-PIPE-IO-STREAM,
  RUN-SHELL-COMMAND and RUN-PROGRAM.

* Unix version only:
  The command shell used by MAKE-PIPE-...-STREAM is now always /bin/sh; the
  environment variable SHELL is only used as interactive shell.
  Fixed a race condition in the functions EXECUTE, MAKE-PIPE-INPUT-STREAM,
  MAKE-PIPE-OUTPUT-STREAM that caused the child process to fail mysteriously.

* Attacks such as  (DO-ALL-SYMBOLS (S) (UNLESS (CONSTANTP S) (SET S NIL)))
  no longer crash CLISP.

* Fixed a CLOS bug: DEFCLASS failed to signal an error if several direct slots
  had identical names.

* Fixed a bug in the reader: When reading hash tables which contain #n#
  references, the hash codes must be recomputed after resolving the
  references. Thanks to Marcus Daniels.

* Fixed a bug in the printer: Printed representations with two different
  #1= definitions could result when PRINT-OBJECT methods were called while
  *PRINT-CIRCLE* was true. Thanks to Marcus Daniels.

Portability
-----------

* Fixed five bugs in the number crunching routines that appeared on
  64-bit processors or in combination with the WIDE tagging scheme.

* More support for 64-bit processors like DEC Alpha.

* Added support for NeXT running NeXTstep 3.1. Thanks to Marcus Daniels.

* Added support for Amiga 3000 running AMIX Unix. Thanks to Michel Loi.

* Fixed a problem with Ctrl-C on HP-UX. Thanks to Gabor Herr.

* Added support for HP9000/300 running HP-UX. Thanks to Gabor Herr.

* Added support for WATCOM C 9.5 on DOS.

* Amiga version: Tolerate memory outside the 27-bit addressable range.

* Remove support for the Atari ST assembly language version CLISP1.

Other modifications
-------------------

* Added some documentation of the GNU readline library.

* Changed the default memory size back from 2.5 megabytes to 2 megabytes.

* Miscellaneous documentation updates.


8 November 1993
===============

User visible changes
--------------------

* The STDWIN library can now be made part of CLISP by calling makemake with
  argument --with-stdwin.

* X3J13 vote <108> is implemented: New packages COMMON-LISP and
  COMMON-LISP-USER.

* X3J13 vote <112> is implemented:
  LOAD binds the variables *LOAD-PATHNAME* and *LOAD-TRUENAME*, COMPILE-FILE
  binds the variables *COMPILE-FILE-PATHNAME* and *COMPILE-FILE-TRUENAME*.
  New variables *LOAD-PATHNAME*, *LOAD-TRUENAME*, *COMPILE-FILE-PATHNAME*,
  *COMPILE-FILE-TRUENAME*.

* X3J13 vote <26> is implemented: COMPILE-FILE has a keyword argument :PRINT.
  New variables *COMPILE-WARNINGS*, *COMPILE-VERBOSE*, *COMPILE-PRINT*.

* Fixed two bugs in DEFPACKAGE: *PACKAGE* is not modified by DEFPACKAGE
  any more, and the :INTERN option now works.

* Fixed FUNCTION-LAMBDA-EXPRESSION such that it works on built-in functions.
  Thanks to France Dacar.

* Fixed a serious bug in GCD on 16-bit processors: (GCD x y) with
  2^k - 2^(k-16) <= |x|,|y| < 2^k could cause a division by zero.

Portability
-----------

* Added support for DEC Alpha AXP running OSF/1 Unix.

* Added support for Apple Mac II running A/UX.

* Added support for Atari ST/TT running MiNT. Thanks to Scott Kolodzieski.

* Support for SunOS4 cc now works.

* The makefile now also works with "parallel" make utilities (e.g. GNU make
  with option -j). Thanks to Rick Sladkey.

* Easier porting: The most dangerous optimizations (inline asm() statements,
  global register allocations, ...) are inhibited if CLISP is compiled with
  option SAFETY=3.

* Some modifications for the sake of gcc-2.5.

Other modifications
-------------------

* Speed up generic function dispatch.

* Some kinds of objects take less space (all CPUs except 680x0).

* The list of X3J13 votes and their current status in CLISP has been moved
  from file `src/defs2.lsp' to file `src/cltl2.txt'.

* The code for setting up a connection to an X server (file `src/socket.d')
  has been completely rewritten.

* Miscellaneous documentation updates.


27 September 1993
=================

User visible changes
--------------------

* COMPILE-FILE now handles top-level forms as described in CLtL2 p. 90:
  The macroexpansion of a top-level form is considered a top-level form.
  When a top-level form is a PROGN, LOCALLY, COMPILER-LET, SYMBOL-MACROLET
  or MACROLET form, the subforms of its body are considered top-level forms
  too and are compiled separately.
  This allows things like
    (PROGN (DEFCONSTANT X 3141) (DEFUN GET-X () X))
  or
    (PROGN (DEFCLASS SHIP () ()) (DEFUN SHIP-P (X) (TYPEP X 'SHIP)))
  to work.
  Warning: If you want to inhibit this splitting into separate forms (for
  example, because several of the forms refer to the same uninterned symbol),
  you have to use (LET () (PROGN ...)) instead of (PROGN ...).

* X3J13 vote <144> is implemented: New macro DECLAIM.

* X3J13 vote <113> is implemented: The macro LOCALLY is now a special form.

* Fixed a serious bug in the compiler: When compiling functions inline
  whose parameters are special variables, incorrect code could be generated.

* Fixed a bug in the compiler which caused the compiler to crash in some
  rare cases, notably when compiling Garnet-2.2.

* Fixed a bug that prevented the debugger commands DOWN and BOTTOM from
  working on Linux and SunOS.

* Fixed a CLOS bug: Specifying &KEY without &REST in generic function
  lambda lists didn't have the desired effect.

* DEFCLASS supports both :DEFAULT-INITARGS syntaxes.

* DEFGENERIC is more tolerant about invalid declarations.

Portability
-----------

* Added Dynix/ptx Sequent support. Thanks to Esther Davis.

* Added support for RS/6000 CPU and AIX. Thanks to Gabor Herr.

Other modifications
-------------------

* Made the memory allocation and (ROOM), (TIME ...) more virtual memory
  efficient (less paging on Unix and DOS). Thanks to Don Cohen.

* Added Geoffrey Gordon's "LISP tutorial".

* Renamed stdwin.lsp to stdwin2.lsp.

* Miscellaneous documentation updates.


1 September 1993
================

Important note
--------------

* Changed bytecode format. All .fas files generated by previous CLISP versions
  are invalid and must be recompiled.

User visible changes
--------------------

* Unix version only: The command line option -M now also accepts memory images
  that were compressed using GNU gzip.

* Fixed a CLOS bug: MAKE-INSTANCE now behaves as if it were calling
  INITIALIZE-INSTANCE, and INITIALIZE-INSTANCE and REINITIALIZE-INSTANCE
  behave as if they were calling SHARED-INITIALIZE.

* Fixed a CLOS bug: NO-APPLICABLE-METHOD failed to be called in some cases
  when no method was applicable.

* Relating to X3J13 vote <89>: The first argument to the functions FUNCALL and
  APPLY, denoting a function, may now also be a list (SETF symbol).

* Fixed a bogus error message that occurred when storing an out-of-range
  integer into an array of element-type (UNSIGNED-BYTE 32).

Portability
-----------

* Added NetBSD support. Thanks to Charles Hannum.

Other modifications
-------------------

* Added Jeff Dalton's "brief CLOS guide".

* Miscellaneous documentation updates.


22 August 1993
==============

Important note
--------------

* Changed bytecode format. All .fas files generated by previous CLISP versions
  are invalid and must be recompiled.

User visible changes
--------------------

* X3J13 vote <12> is partially implemented: Native CLOS. New package CLOS
  containing the macros
    DEFCLASS, DEFMETHOD, DEFGENERIC, GENERIC-FUNCTION, GENERIC-FLET,
    GENERIC-LABELS, WITH-SLOTS, WITH-ACCESSORS,
  the functions
    FIND-CLASS, (SETF FIND-CLASS), CLASS-OF, CLASS-NAME, (SETF CLASS-NAME),
    SLOT-VALUE, SLOT-BOUNDP, SLOT-MAKUNBOUND, SLOT-EXISTS-P,
    CALL-NEXT-METHOD, NEXT-METHOD-P,
    NO-APPLICABLE-METHOD, NO-PRIMARY-METHOD, NO-NEXT-METHOD,
    FIND-METHOD, ADD-METHOD, REMOVE-METHOD, COMPUTE-APPLICABLE-METHODS,
    METHOD-QUALIFIERS, FUNCTION-KEYWORDS, SLOT-MISSING, SLOT-UNBOUND,
    PRINT-OBJECT, DESCRIBE-OBJECT, MAKE-INSTANCE, INITIALIZE-INSTANCE,
    REINITIALIZE-INSTANCE, SHARED-INITIALIZE,
  the classes
    STANDARD-CLASS, STRUCTURE-CLASS, BUILT-IN-CLASS, STANDARD-OBJECT,
    STANDARD-GENERIC-FUNCTION, STANDARD-METHOD and all predefined classes,
  and the method combination
    STANDARD.
  See impnotes.txt for details. X3J13 vote <13> is implemented, too.

* X3J13 vote <63> is implemented: DESCRIBE receives the output stream as
  optional argument. New function CLOS:DESCRIBE-OBJECT.

* X3J13 vote <149> is implemented: The second argument to SUBSEQ may now
  be NIL. Thanks to Thomas Kirk.

* X3J13 vote <175> is implemented: TAILP now also works on dotted lists.

* X3J13 vote <124> is implemented: (DECLARE (OPTIMIZE (DEBUG ...))) is legal.

* The type specifier (EQL object), a synonym for (MEMBER object), is now
  implemented.

* New DEFSTRUCT option :INHERIT which is exactly like :INCLUDE except that it
  doesn't create new accessors for the inherited slots. Use this option to
  avoid the problems that occur when using the same :CONC-NAME for the new
  and the inherited structure.

* Fixed EXPORT and USE-PACKAGE: Don't signal a name conflict between the
  symbol being exported and a symbol accessible in the using package if
  the latter symbol is on the list of shadowing symbols of the using package.

* Fixed VECTOR-PUSH-EXTEND. It now works on vectors of dimension 0 and
  on bit-vectors.

* Fixed PRINT-UNREADABLE-OBJECT: Don't output adjacent spaces.

* Fixed a bug in the reader that caused an endless loop or endless recursion
  when resolving #n=/#n# references in objects that already contained cyclic
  data structures, e.g. when reading (#1=a #.'#2=(b . #2#) #1#).

* Fixed a bogus error message in the complex number reader.

Portability
-----------

* The DOS README explains how to run CLISP in the DOS box of Microsoft
  Windows. Thanks to Ralf Muschall.

* Added Sinix support. Thanks to Manfred Weichel.

* Improved installation on OS/2.

Other modifications
-------------------

* A function proclaimed INLINE will be taken inline in a wider set of
  circumstances. (Previously INLINE worked only when that function was being
  used in the same file or in a file that REQUIREd the file defining the
  function.)

* The compiler now produces better code for (APPLY (FUNCTION fun) args).

* Changed the default memory size from 2 megabytes to 2.5 megabytes.

* Miscellaneous documentation updates.


17 July 1993
============

User visible changes
--------------------

* X3J13 vote <150> is mostly implemented: Reading and printing of symbols
  (and characters with bits or fonts attributes) is now affected by
  (READTABLE-CASE *READTABLE*), whose value may be one of :UPCASE, :DOWNCASE
  and :PRESERVE. New place READTABLE-CASE.

* Support for immutable objects is implemented. Attempts to modify read-only
  data will signal an error. Program text and quoted constants loaded from
  files are considered read-only data. Never again will you be allowed to
  write programs that destructively modify themselves!
  This works only for Unix implementations with powerful virtual memory
  management, currently only Linux and SunOS. To enable it, you have to
  add -DIMMUTABLE to the CFLAGS in the makefile when building CLISP.

* Fixed DEFUN such that
  (progn
    (flet ((bar (x) (+ x 10))) (defun bar (y) (if (zerop y) 1 (bar (1- y))))
    (bar 1)
  )
  returns 10 instead of 1.

* Fixed a bug in the compiler that caused the compiler to crash by endless
  recursion and stack overflow when compiling assignments to symbol macros.

Portability
-----------

* Added support for m88000 CPU.

* Amiga version: detect 68000 CPU, for better use of present memory.

Other modifications
-------------------

* Miscellaneous documentation updates.


29 June 1993
============

User visible changes
--------------------

* X3J13 vote <89> is implemented: (SETF symbol) is now a valid syntax for a
  function name in (funname ...), (FUNCTION funname), (DEFUN funname ...),
  (COMPILE funname ...), (DISASSEMBLE funname), (ED funname), FLET, LABELS etc.
  New function FDEFINITION.

* X3J13 vote <173> is implemented: New special form SYMBOL-MACROLET. The
  macroexpansion environment passed to macro expanders and to MACROEXPAND-1,
  MACROEXPAND, GET-SETF-METHOD, GET-SETF-METHOD-MULTIPLE-VALUE now comprises
  both the variable environment and the function environment.
  New macro DEFINE-SYMBOL-MACRO.

* New macro PRINT-UNREADABLE-OBJECT.

* Fixed a bug: The string comparison functions STRING<, STRING>, STRING<=,
  STRING>=, STRING/=, STRING-LESSP, STRING-GREATERP, STRING-NOT-GREATERP,
  STRING-NOT-LESSP, STRING-NOT-EQUAL now return the index of the first mismatch
  instead of T.

* Fixed a bug: The functions REMOVE-DUPLICATES and DELETE-DUPLICATES produced
  an out-of-bounds error when called on a small sequence, with :FROM-END T
  argument and without :END argument.

Portability
-----------

* Updated support for DJGPP.

Other modifications
-------------------

* The macros SETF, PUSH, POP, PUSHNEW have been completely rewritten.

* Changed internal representation of special form handlers: They now consume
  regular memory. This frees one type tag, which will be used by CLOS
  instances.

* Miscellaneous documentation updates.


24 May 1993
===========

User visible changes
--------------------

* New macro DEFPACKAGE.

* New function FUNCTION-LAMBDA-EXPRESSION.

* New package SCREEN containing some functions for random screen access
  (Unix, DOS, OS/2, Atari, VMS versions only).

* X3J13 vote <5> is implemented: The value of *APPLYHOOK* must now be
  a function of two arguments.

* X3J13 vote <104> is implemented: COMPILE-FILE now binds *READTABLE*.

* X3J13 vote <161> is implemented: SHADOW now accepts strings as well
  as symbols.

* Fixed a bug in the compiler which caused the compiler to crash when
  compiling (CASE key ...) forms with constant key.

* Fixed a bug in the compiler which produced unloadable .fas files
  when compiling forms like (SETF ... (FUNCTION LIST)).

* Fixed a bogus error message in the AREF function.

* The built-in editor on Unix now handles the Delete key the same way
  as the Backspace key or Ctrl-H.

* Fixed a bug in + that occasionally caused (- x x) to return a
  long-float zero which was not EQL to the other zeroes of type LONG-FLOAT.

* Fixed a bug: Correctly do round-to-even when adding two long-floats.

* Fixed a bug: The destructive sequence functions DELETE etc. failed to
  produce an error when called on a sequence of type LIST and with an :END
  argument larger than the list's length.

* Corrected the branch cuts of the complex ATAN and ATANH functions.

Portability
-----------

* 68000 and other versions: Fixed a bug in the low-level division algorithm.

* Mips and Vax versions: Finished the low-level number crunching routines.

* Added Ultrix support.

* Added Coherent support.

* Finished Sun3 support.

Other modifications
-------------------

* The file `src/defs2.lsp' contains a list of X3J13 votes and their current
  status in CLISP.

* The file `src/foreign.txt' documents how to do function calls to foreign
  language routines from within CLISP.

* Miscellaneous documentation updates.


5 April 1993
============

Portability
-----------

* 68000/68020 versions: Fixed some bugs in the low-level number crunching
  routines.

* Improved efficiency of the WIDE tagging scheme.


30 March 1993
=============

User visible changes
--------------------

* Fixed a bug in + that caused the sign of (+ x y) to be wrong when x and y
  were double-floats satisfying  0 < x < -y  or  0 > x > -y .

* New special form LOAD-TIME-VALUE.

* The function DIR now sorts its output.

* A new place (DEFAULT-DIRECTORY) manages the "current directory".

* When LOAD is called with a pathname as argument that contains a parent
  directory component (".."): Ignore the variable *LOAD-PATHS*, avoid an error.

* Fixed TRACE so that functions calling TRACE are correctly handled by
  COMPILE-FILE.

Portability
-----------

* Unix version: Correct handling of system calls that are interrupted
  by signals.

* Finished IRIX support.

Other modifications
-------------------

* Miscellaneous documentation updates.


19 March 1993
=============

User visible changes
--------------------

* Replaced variable *TEMPFILE* by a function EDITOR-TEMPFILE.

Portability
-----------

* Unix version: Corrected detection of ANSI C header files.

* Unix version: Check whether signal handlers are automatically reinstalled
  when activated.

* Made readline library ANSI C compliant and (on Unix) auto-configuring.

* In case there is no room for three extra bits in a symbol pointer,
  allocate three stack words per binding in a VAR frame (instead of two stack
  words). This completes the Amiga 3000/4000 version.

* Completed memory model SPVW_PURE_BLOCKS: There is a large contiguous memory
  area for each kind of Lisp object. This model is used only if memory can
  be allocated at prescribed addresses, for example on Unix with mmap().

* More 386BSD support.

Other modifications
-------------------

* Remove limit on the number of files that may be specified on the command
  line. Limit was 1000.

* Miscellaneous documentation updates.


4 March 1993
============

User visible changes
--------------------

* Fixed a bug in ADJOIN that caused ADJOJN and PUSHNEW to push (key item)
  instead of item onto the list when a :KEY argument was present.

* Amiga version: allow opening of "files" on special devices.

* OS/2 version: Long filenames on DOS (FAT) filesystems no longer produce
  errors. They are now silently truncated to 8+3 characters.

* Unix, Amiga, OS/2 versions: When a pathname is to be fully specified, no
  subdirectory wildcard "**/" or ".../" is allowed. Check this.

Portability
-----------

* Corrected underflow detection in SCALE-FLOAT on 16-bit processors.

* Atari ST version: fixed getenv(), wrote INSTALL instructions.

Other modifications
-------------------

* Miscellaneous documentation updates.


21 February 1993
================

User visible changes
--------------------

* Include test suite into distribution.

* Add COMMON-LISP and CLTL1 to the *FEATURES*.

* Fixed a bug in the compiler which caused the compiler to crash in some
  rare cases.

* Fixed a bug in WITH-OPEN-FILE: handle the case when OPEN returns NIL.

* Amiga version: Fixed bug in FILE-POSITION.

* Amiga version: Renamed REXX-WAIT-COMMAND to REXX-WAIT-SENT-COMMAND.

Portability
-----------

* On HP-UX: Use /bin/ksh for shell scripts instead of the buggy /bin/sh.

* Now compiles on IRIX using CC="cc -ansi".

* Added 386BSD support.

Other modifications
-------------------

* Miscellaneous documentation updates.


3 February 1993
===============

Portability
-----------

* Support for 386 UHC UNIX System V release 4 now works.

Other modifications
-------------------

* lispbibl.d: Rename macro `untype' to `upointer', `type_untype_object' to
  `type_pointer_object'.

* lispbibl.d: Clean up selection of type code and frame code tables.

* Remove init streams. Use string input streams instead.


1 February 1993
===============

User visible changes
--------------------

* Fixed handling of declarations in macros DO-SYMBOLS, DO-EXTERNAL-SYMBOLS,
  DO-ALL-SYMBOLS, DOSEQ, DOHASH.

* LISTEN on file streams opened with :DIRECTION :OUTPUT now returns NIL.

* Pathnames resulting from OPEN on special files are now called
  "file handle streams", they are unbuffered file streams.
  They can now be used as argument in situations where a pathname is expected.

Portability
-----------

* The `target' and `configure' scripts no longer depend on awk.

* Support Sun4 with 32 bit address range (kernel architecture "Sun4m") as
  well as Sun4 with 29 bit address range (kernel architecture "Sun4", "Sun4c).

* Can now exploit the shared memory facilities of SunOS 4.1 and of Linux.

* Added support for 386 UHC UNIX System V release 4.

Other modifications
-------------------

* Implemented memory model SPVW_PURE_PAGES where memory is divided
  into many small pages each containing objects of the same type.

* Fixed up source for systems without window streams.

* lispbibl.d, constobj.d: reorder the stream types such that the test for
  file stream becomes faster.

* /usr/local/lib/aclocal.m4, configure.in, unixconf.h.in: prefix my own local
  macros by CL_ instead of AC_.

* Miscellaneous documentation updates.


11 January 1993
===============

User visible changes
--------------------

* Fixed meaning of :KEY argument for SUBLIS and NSUBLIS.

* DOS, OS/2 versions: adapted to emx 0.8f. This results in better
  *KEYBOARD-INPUT* on DOS and faster screen access on OS/2.

* Amiga version: implemented SHELL.

* OS/2 version: implemented MAKE-PIPE-INPUT-STREAM and MAKE-PIPE-OUTPUT-STREAM.

* compiler.lsp: Emit a warning when #'foo is used but foo is undefined.

* rexx.d, rexx.lsp: remove the trailing "p" from the keywords.

* init.lsp: don't call a macro a "Common Lisp function".

* stream.d, readline/readline.[ch]: exported rl_deprep_terminal such that a
  failing call to xmalloc() can now signal an ordinary error instead of exiting.

Portability
-----------

* Rewrote makemake.in using indentation.

* /usr/local/lib/aclocal.lsp: fixed AC_SYS_ERRLIST (m4 bug?) and AC_RENAME,
  improved AC_SELECT and added AC_SETITIMER.

* spvw.d: implement ualarm for Unix with interval timers, e.g. HP/UX or Linux.

* Remove support for Linux 0.12.

Other modifications
-------------------

* Language (DEUTSCH resp. ENGLISH) can now be set from CFLAGS, without
  modifying lispbibl.d.

* _README translated into german.

* Renamed clispsrc.1 to FILES.1.

* Renamed pseudofu.d to pseudofun.d.

* Sun4 version: merged il_sparc.il into cc_sparc.il.

* lispbibl.d: use an enum type to get the stream types converted
  to consecutive numbers without risking clashes.

* intgcd.d: found algorithm for binary extended gcd.

* intlog.d: make use of 80386 instruction "bsfl" where possible.

* lispbibl.d: let gcc2 on 680x0 emit "dbra" instructions.

* spvw.d: use IPC_PRIVATE as key for all shared memory segments.

* avl.d: don't generate code for unused functions insert and delete.

* Miscellaneous documentation updates.


1 January 1993
==============

Release of first portable version of CLISP.
It now compiles and runs under
* Atari ST
* Amiga 500-2000
* DOS
* OS/2 2.0
* Linux
* Sun4
* Sun386
* HP9000/800

Now that the tests passed, I hope I'll never again have to remove a serious
bug.

