/[cmucl]/src/general-info/beta-release-notes.txt
ViewVC logotype

Diff of /src/general-info/beta-release-notes.txt

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by ram, Wed Feb 26 02:02:50 1992 UTC revision 1.8 by ram, Sat May 30 13:22:35 1992 UTC
# Line 1  Line 1 
1              Release notes for CMU Common Lisp 15e, 25 February 92              Release notes for CMU Common Lisp 16d, 23 April 92
   
   
 15e is mainly a bug-fix release; it will probably be the last version 15  
 release, and is thus the most stable system you're going to see for a while.  
 We're reluctant to call it a "default" release because some things are stably  
 broken:  
  -- There still isn't any good stack overflow detection.  Probably stack  
     overflow detection won't appear until the C code rewrite associated with  
     generational GC comes out (version 17 or later.)  
  -- The Alien/foreign function call mechanism is fairly broken.  It doesn't  
     work at all in interpreted code, and DEF-C-ROUTINE doesn't work properly  
     for many argument type signatures.  We've redesigned and reimplemented  
     our foreign interface for version 16.  
   
 We are now distributing the CMU CL user manual in Gnu Info format (in  
 doc/cmu-user.info.)  You can either have your EMACS maintainer install this in  
 the info root, or you can use the info "g(<cmucl root dir>/doc/cmu-user.info)"  
 command.  Many thanks to Mike Clarkson (the LaTeXinfo maintainer) who  
 volunteered to convert our Scribe documents.  
   
 Changes:  
  -- Improved recursive error handling.  Errors during reporting of errors are  
     detected and suppressed.  Other recursive errors are eventually detected,  
     and hopefully recovered from.  This should eliminate some "recursive map  
     failure (stack overflow?)" errors.  
  -- Fixed a bad declaration in CLX which caused an array index error on  
     font attribute queries (such as CHAR-WIDTH.)  
  -- Fixed interpreted (typep x '(and ...)) to not always return NIL.  
  -- Fixed interpreted CLOS methods to work once again.  
  -- Fixed PROFILE to work again, now that argument count information may be  
     missing.  
  -- Changed NCONC to signal an error if a non-null ATOM appears other than  
     as the last argument.  
  -- Changed FEATUREP to signal an error if it is passed a list form with a  
     strange CAR.  
  -- Do type checking on the arguments to %PUTHASH so that  
     (setf (gethash foo 'bar) x) doesn't get a bus error.  
  -- Changed LET* and &AUX to allow duplicate variable names.  
  -- Fixed DEFTYPE to properly invalidate type system caches so that type  
     redefinitions predictably take effect.  
  -- Improvements to MIPS disassembler database.  
2    
3    16d is our first version 16 general release, and incorporates many changes not
4    present in the 15 series.  It is currently fairly close to our current
5    internal development (alpha) systems, and is thus less stable.  The major
6    changes are:
7        New Aliens
8        New pathnames
9        New pretty printer
10        New format
11        R5.0 CLX.
12        5/1/90  May Day PCL (REV 4b)
13        Revised manual
14    
15    The fasl file format is nominally compatible with version 15, but the pathname
16    change affects any pathname constants in fasl files, which includes the
17    defined-from information present in every fasl file.  It is probably a good
18    idea to recompile everything.
19    
20    CLX and Hemlock are now optional.  When CMU CL is installed, the maintainer can
21    elect not to load CLX and Hemlock -- this saves 7 megabytes of disk and
22    improves memory usage somewhat.  See the installation section of the README
23    file for details.
24    
25    The ``CMU Common Lisp User's Manual'' has been updated to be more helpful for
26    non-CMU users.  The new manual also documents the new Alien facility for
27    foreign function calls and data structure access.  The manual is now formatted
28    with Mike Clarkson's LaTeXinfo package, so a consistent version of the
29    documentation is available online in Gnu info format.  See `doc/cmu-user.ps'
30    and `doc/cmu-user.info'.
31    
32    
33              Release notes for CMU Common Lisp 15d, 2 February 92  General system code:
   
 These release notes cover changes since the beta release of version 15b on 6  
 June 91.  Execpt for Miles Bader's portable disassembler and a few minor  
 performance enhancements, this is mostly a bug-fix release.  We've been  
 working on ANSI complaince, foreign function interface and more advanced  
 compiler optimizations, but we're not going to inflict that on the general  
 public just yet.  
   
34    
35                               GENERAL SYSTEM CODE  ANSI cleanups:
36     -- ANSI Compiler macros are now implemented: see COMPILER-MACRO-FUNCTION,
37  Bug fixes:      COMPILER-MACROEXPAND, COMPILER-MACROEXPAND-1 and DEFINE-COMPILER-MACRO.
38   -- (SETF AREF) now checks to make sure that the new value is of the correct   -- Fixed things that invoke *MACROEXPAND-HOOK* to coerce it to a function
39      type.      before calling it.
40   -- Improved checking for invalid syntax in DEFSTRUCT.  In some cases, syntax   -- Fixed MACRO-FUNCTION to take an environment argument.
41      errors would cause cryptic internal errors due to inadequate type   -- SYMBOL-MACROLET now accepts declarations.
42      checking.   -- SHADOW now accepts strings in addition to symbols.
43   -- DRIBBLE now monitors *ERROR-OUTPUT* (in addition to *STANDARD-OUTPUT*).   -- Added UPGRADED-ARRAY-ELEMENT-TYPE and UPGRADED-COMPLEX-PART-TYPE.
44   -- Bignum printing now works correctly in base 36.   -- IGNORABLE is now in the LISP package instead of the EXT package.
45   -- Fixed EXPT to deal with SINGLE-FLOAT x SINGLE-FLOAT arg type combination.   -- ADJUST-ARRAY has been updated to allow adjusting of arrays which were
46   -- Fixed TRUNCATE to handle the SINGLE-FLOAT/DOUBLE-FLOAT case.      not created with :adjustable non-nil to be adjusted to new dimensions.
47   -- The PROFILE package works once again.   -- ADJUSTABLE-ARRAY-P has been updated correspondingly. It returns T if
48        adjust ADJUST-ARRAY would return an EQ array.
49     -- The BASE-CHARACTER type has been renamed to BASE-CHAR.
50     -- The REAL type and REALP function are now implemented.
51     -- Changed the default structure printer to print slot names as keywords
52        instead of unqualified symbols.
53    
54  Enhancements:  Enhancements:
55   -- A new retargetable disassembler provides DISASSEMBLE support on the SPARC,   -- Added MAYBE-INLINE declaration for GET, PUT, etc., so that these
56      and also greatly improved disassembly on the MIPS.  The output is      functions can be inline expanded according to the compilation policy.
57      annotated with source-code correspondences if debug-info permits.   -- Added some type declarations so that GET-INTERNAL-REAL-TIME doesn't cons.
58   -- Added INLINE MEMBER declarations in definitions of the set functions   -- Process the command line before printing the herald so that we can eval
59      (UNION, etc.) so that when the set functions are inlined, the MEMBER calls      some form and quit without printing anything.
60      will also.   -- SET now protects against setting T, NIL, and keywords.  (SETF
61   -- Merged Lange's improved type declarations for nthcdr/butlast/nbutlast.      SYMBOL-FUNCTION) now expands into FSET, which protects against defining
62      Also, NTH-VALUE now doesn't cons for non-constant N less than 3.      NIL.
63   -- The loader now supports appending fasl files.  You can:   -- Substantially rearranged function describing to make it more consistent,
64          cat a.fasl b.fasl c.fasl >all.fasl      and added support for describing interpreted functions.
65   -- Added :UNIX to the features list.   -- PURIFY is now called multiple times during system building to improve
66        locality.
67  The new variable EXT:*TOP-LEVEL-AUTO-DECLARE* controls whether assignments to   -- (EVAL-WHEN (EVAL) ...) is now actually eval'ed.
 unknown variables at top-level (or in any other call to EVAL of SETQ) will  
 implicitly declare the variable SPECIAL.  These values are meaningful:  
      :WARN  -- Print a warning, but declare the variable special (the default.)  
       T     -- Quietly declare the variable special.  
       NIL   -- Never declare the variable, giving warnings on each use. (The  
                old behavior.)  
   
 The reader now ignores undefined read macro errors when *read-suppress* is T.  
 All reader character lookup tables are now CHAR-CODE-LIMIT in size.  Formerly,  
 some where only 128.  In the standard readtable, these additional characters  
 are all undefined.  
   
 There are various changes in the DEBUG-INTERNALS interface related to  
 breakpoint support, but we haven't yet implemented a satisfactory user  
 interface to breakpoints.  Changed name of DI:DO-BLOCKS to  
 DI:DO-DEBUG-FUNCTION-BLOCKS.  Added DI:FUNCTION-END-COOKIE-VALID-P and  
 DI:DEBUG-FUNCTION-START-LOCATION.  
   
 This release fixes a few problems with Aliens, but they are still pretty  
 broken.  In particular, Alien and C interface operations don't work at all in  
 interpreted code.  We are in the process of integrating a new-and-improved  
 implementation of Aliens that works much more smoothly with C.  
   
   
                                  COMPILER  
   
 Enhancements:  
  -- Various SPARC-specific reductions in spurious type checks and coercions.  
  -- FTYPE declarations on local functions are now propagated to the variables  
     of the local definition.  
  -- Improved representation selection by not totally ignoring references by  
     move VOPs.  This is particularly useful for avoiding spurious number  
     consing of float arguments that are passed on as arguments.  
  -- The warning about assignments to the arguments of functions having FTYPE  
     declarations is now suppressed when the FTYPE declaration gives no useful  
     information.  
  -- Improved readability of *COMPILE-PROGRESS* output.  
  -- Fixed TYPES-INTERSECT to consider any supertype of T to definitely  
     intersect with anything (including unknown or not-yet-defined types.)  
   
 Bug fixes:  
  -- Fixed some bugs in dead code deletion.  
  -- Lambdas with &KEY and no specified keywords are now compiled correctly  
     (instead of the &KEY being ignored.)  
  -- The compiler now knows that INTERN can return NIL as its second value.  
  -- Global FTYPE declarations on DEFSTRUCT slot accessors are now quietly  
     ignored, instead of causing the structure definition to be removed.  
  -- Fixed a problem with resulting from an interaction between block  
     compilation and global FTYPE declarations.  
  -- Fixed TAGBODY not to consider NIL to be a tag.  
  -- Fixed an internal error during register allocation which could happen when  
     compilation-speed > speed.  
  -- If we undefine a structure type, unfreeze it also.  
  -- Fixed TYPEP SATISFIES to always return T-or-NIL, regardless of what the  
     predicate returns.  
   
 PCL/CLOS:  
  -- Added generalized source context parsing with EXT:DEF-SOURCE-CONTEXT.  
     Added a parser for DEFMETHOD that gets qualifiers and specializers.  
  -- FUNCALLABLE-INSTANCE-P is now compiled much more efficiently.  
  -- Fixed SET-FUNCTION-NAME to correctly set the name of interpreted methods,  
     instead of clobbering the name of an internal interpreter function.  
   
   
                                   HEMLOCK  
68    
69  Bug fixes:  Bug fixes:
70   -- Changed X font specs in the generic site-init file to use point size   -- Fixed bug in NTH-VALUE where it expanded into bogus code unless ``n'' was
71      instead of pixel size so that they work on 100dpi devices.      a constant integer.
72   -- Added :INPUT :ON wm-hints to Hemlock windows, which is necessary to   -- Fixed FMAKUNBOUND to return the symbol instead of T.
73      receive input in OpenLook windowing systems.   -- Allocate memory as executable so that the OS knows to maintain cache
74   -- Fixed Lisp mode indentation for FLET&c to check that we are actually in      consistency.
75      the first arg form before doing funny indentation.  Generalized to   -- Changed DESCRIBE to allow T or NIL as the stream argument.
76      reference the variable "Lisp Indentation Local Definers", and also to  
77      recognize LABELS (as well as MACROLET and FLET.)  Load enhancements and cleanups:
78   -- When we reallocate string-table vectors to grow them, clear the old vector   -- The initial value of *LOAD-VERBOSE* is now T.  Additionally, LOAD no
79      so that it won't hold onto garbage (in case the vector was in static      longer always binds *LOAD-VERBOSE* and *LOAD-PRINT*.  Now it only
80      space, but pointed to dynamic values.)  This was a major cause of memory      binds them when :VERBOSE or :PRINT are explicity supplied.  Therefore, you
81      leakage in Hemlock.      can set either of these in your init file and it will take effect.
82   -- Fixed sentence motion to work at the end of the buffer.   -- Normally when *LOAD-VERBOSE* is T, only the file name is printed.
83        Formerly, the loaded stream was always printed, whereas now a stream is
84  Enhancements:      printed only when the stream is not a file stream.
85   -- The site file now contains a template for file directory translation (for   -- Added ANSI features *LOAD-TRUENAME*, *LOAD-PATHNAME* and *LOAD-PRINT*.
86      "Edit Definition"), and some of the comments have been improved.   -- As per ANSI, bind *READTABLE* to itself to make assignments file-local.
87   -- There's a new "Buffer Modified Hook" function that raises the "Echo Area"   -- Added new variables EXT:*SOURCE-FILE-TYPES* and EXT:*OBJECT-FILE-TYPES*.
88      window when it becomes modified.  You can control this with the Hemlock      When no file type is specified, LOAD tries the types in these lists to
89      variable: "Raise Echo Area When Modified".      locate the source and object files.  LOAD now recognizes source types "l",
90   -- In "Edit Definition" and related commands, before doing directory      "cl" and "lsp" in addition to "lisp".
91      translations, try a probe-file of the source file first.  This can reduce   -- The compiler OPTIMIZE policy is now bound during load, so proclamations in
92      the number of translations needed.      a file don't leave the global policy clobbered when the load is finished.
93   -- Added DEFINDENT's for the "WIRE" package.   -- Changed the :IF-SOURCE-NEWER option to signal an error and use restarts,
94   -- Made the X visual bell look less spastic by adding a finish-output.      rather than PROMPT-FOR-Y-OR-N.  Fixed the load source case to actually
95   -- The termcap parser now recognizes entries for things like begin/end bold,      load the source, rather than loading the object as a source file...
96      underline, etc.  Fixed a problem with font halding in TTY redisplay.   -- Changed load to deal with source files having NIL type more reasonably.
97   -- The MH interface now uses the correct name for the MailDrop profile   -- If a wild pathname is given to LOAD, all files matched will be loaded.
98      component.   -- Proceeding from nonexistent file errors has been improved.  It is no longer
99   -- The netnews interface has been improved in various ways, including the      assumed that missing files are always source files.  Added condition
100      addition of server timeouts, but should still be considered experimental.      restarts for missing files.
101     -- Improved formatting of error and warning messages.
102    
103    
104    Garbage collection:
105     -- Changed the minimal ROOM output to include all easily computed information
106        including whether GC is disabled.  The verbose ROOM now conses less.
107     -- Removed the :ENABLE-GC SAVE-LISP option, as it's no longer needed.
108        Garbage collection is now correctly enabled in cores which have been saved
109        and then restarted.
110     -- Added EXT:BYTES-CONSED-BETWEEN-GCS, a function that returns (and sets when
111        used with setf) *BYTES-CONSED-BETWEEN-GCS*.  Additionally, it changes
112        *GC-TRIGGER* immediately to reflect the new values of *bytes-consed...*.
113     -- TIME now displays the GC run-time.
114     -- Added EXT:*GC-RUN-TIME* with accumulates the INTERNAL-RUN-TIME spent doing
115        garbage collection.  Added declarations to make EXT:GET-BYTES-CONSED more
116        efficient.
117     -- The top-level REP loop now zeros the unused non-zero portion of the
118        control stack to discourage spurious garbage retention.
119     -- The garbage collector now closes open file streams when it reclaims them.
120    
121    
122    Packages:
123     -- The LISP and USER packages have been renamed to COMMON-LISP and
124        COMMON-LISP-USER.  LISP and USER are nicknames, so they can still be used.
125     -- The LISP package namespace has been cleaned up somewhat.  For example,
126        *DESCRIBE-PRINT-LEVEL* is no longer exported from LISP.
127     -- The Mach/Unix division in the package system has been clarified a great
128        deal.  Unix specific features have been moved from the MACH package to the
129        UNIX package.  Mach specific features have been left in (or moved to) the
130        MACH package.  For example, all standard Unix syscalls are related
131        definitions are un UNIX, whereas vm_statistics remains in MACH and GR-CALL
132        has been moved to MACH.
133    
134    SETF cleanups:
135     -- Changed GET-SETF-METHOD-MULTIPLE-VALUE to try to macroexpand-1 the form
136        when it's an atom in case it's a symbol-macro as per the X3J13 cleanup
137        SYMBOL-MACROLET-SEMANTICS:SPECIAL-FORM.  Now you can safely INCF, etc.
138        symbol macros where the macroexpansion has side effects.
139     -- Fixed SETF of GETF to evaluate the various parts in the correct order as
140        per X3J13 cleanup SETF-SUB-METHODS:DELAYED-ACCESS-STORES.
141     -- X3J13 cleanup SETF-MULTIPLE-STORE-VARIABLES:
142        Extend the semantics of the macros SETF, PSETF, SHIFTF, ROTATEF, and
143        ASSERT to allow "places" whose SETF methods have more than one "store
144        variable".  In such cases, the macros accept as many values from the
145        newvalue form as there are store variables.  As usual, extra values
146        are ignored and missing values default to NIL.
147     -- Extended the long form of DEFSETF to allow the specification of more
148        than one "store variable", with the obvious semantics.
149     -- GET-SETF-METHOD signals an error if there would be more than one
150        store-variable.
151    
152    
153              Release notes for CMU Common Lisp 15b, 19 October 91  Printer:
   
 These release notes cover changes since the beta release of version 14c on 6  
 June 91.  SPARCstations and Sun4's are now supported under SunOS (as well as  
 Mach), which makes CMU CL more usable outside of the CMU environment.  CMU CL  
 also runs on Mach (or OSF/1) DECstations, and IBM RT support is coming real  
 soon now.  
   
154    
155                              GENERAL SYSTEM CODE  Almost all of the printing code has been rewritten/restructured to support
156    all of the printing features added to the language.  Some highlights:
157     -- *PRINT-READABLY* is now supported.
158     -- *PRINT-CIRCLE* works irrespective of *PRINT-PRETTY*.  Note: the default
159        structure printer currently does not work when *PRINT-CIRCLE* is true: you
160        get #1=#1#.
161     -- *PRINT-LEVEL* abbreviation now works automatically inside structure
162        printers.
163     -- XP has been replaced with a native pretty printer that is fully
164        integrated with the rest of the system.  This Supports the ANSI
165        pretty-printing interface instead of the old Waters XP interface.  Existing
166        uses of the old interface will need to be updated to use the new names.
167     -- The pretty-printer now unparses backquote forms on printing.  To retain
168        this information, the backqoute read macro no longer expands into LIST,
169        CONS, etc.  Internal functions are used instead.
170     -- The macros WITH-STANDARD-IO-SYNTAX and PRINT-UNREADABLE-OBJECT have
171        been added.
172     -- All new format.  Supports the FORMATTER macro and all the pretty-printing
173        directives.  FORMAT has extended to accept a function as the format control
174        (as an alternative to a string.)
175     -- Added support for READTABLE-CASE in symbol printing.  Printing when
176        *PRINT-CASE* is :CAPITALIZE and *PRINT-ESCAPE* is NIL is now slightly
177        different than before.  Added some missing array type declarations in
178        symbol printing.
179    
180  Bug fixes:  Bug fixes:
181   -- MAKE-ARRAY now to allows :INITIAL-CONTENTS any kind of of sequence, not   -- Fixed a bug which caused some float printing format directives to
182      just a list.      infinitely loop when a fixed-width field overflowed.
183   -- VECTOR-PUSH and VECTOR-PUSH-EXTEND now return the original fill   -- Specify stream when printing unbound marker.
184      pointer, not the new fill pointer.   -- Fixed FORMAT to override printer control variables when printing float
185   -- VECTOR-POP now returns the value indexed by the new fill pointer, not      exponents so that they are always printed in decimal, etc.
     the original fill pointer.  
  -- Fixed two bugs in bignum division.  
  -- FORMAT-PRINT-NUMBER now correctly inserts commas for negative numbers  
     (don't print -,123).  
  -- Fixed GET-SETF-METHOD to only inhibit setf macros when there is a local  
     function, not also when there is a local macro.  
  -- Changed the debugger to use *READ-SUPPRESS* when skipping over top-level  
     forms in the source file to prevent spurious read errors.  
  -- In the printer, deleted an incorrect and questionably optimal  
     optimization of symbol package qualification.  
  -- When printing characters, prefer the semi-standard character-names  
     NEWLINE, ESCAPE and DELETE to the old LINEFEED, ALTMODE and RUBOUT.  
  -- Fixed one-off error in list REMOVE-DUPLICATES :FROM-END.  Fixed  
     SUBSTITUTE & friends to pass arguments to the TEST in the right order.  
     Fixed SUBSTITUTE not to randomly apply the KEY to the OLD value.  Changed  
     LIST NSUBSTITUTE & friends to work in the :FROM-END case.  
  -- Several bug-fixes to RUN-PROGRAM and subprocess I/O.  
  -- Fixed all recursive READ calls in sharp-macros to specify eof-error-p T, so  
     that EOF errors are signalled when appropriate.  
  -- The REMOTE RPC protocol (used for slave control) can now send bignums.  
  -- Passing of unused arguments to interpreted functions now works.  Previously  
     the variables would be bound to the wrong arguments.  
  -- Many fixes to the time parsing and printing extensions.  
   
 X3J13 cleanups:  
  -- Added #P pathname read syntax, and changed the pathname printer to use it.  
  -- Added :KEY argument to REDUCE.  
   
 Enhancements:  
  -- Added code to compile the argument to TIME when possible, and print a  
     warning when it isn't.  Optimized the TIME macro to keep the consing  
     overhead of using it zero.  
  -- Changed all places absolute pathnames were used to indirect search-lists,  
     mostly library:.  "lisp" must now be findable on your PATH for Hemlock to  
     be able to start slaves.  
  -- Increased readability of DESCRIBE function output by printing function and  
     macro doc strings before arg and result info.  
  -- The CMUCLLIB search path environment variable is now used to find lisp.core  
     and other library files, instead of always assuming the path  
     /usr/misc/.cmucl/lib.  
   
   
                                  COMPILER  
186    
187  Bug fixes:  
188   -- EVAL now uses the constant value recorded in the compiler environment  Reader:
     that compile-time references to constants works better.  Now  
     (defconstant a 3) (defconstant b (+ a 4)) works again.  
  -- Don't try to infer the bounds of non-simple arrays, since they can change.  
  -- Fixed some problems with block compilation, maybe-inline functions and  
     unused function deletion.  
  -- DEFMETHODs can now use &ALLOW-OTHER-KEYS without killing the compiler.  
  -- Fixed VALUES declaration to work correctly when zero values are specified.  
  -- The FORMAT transform now warns if there are to many or too few args.  
  -- Changed SYMBOL-MACRO-LET to SYMBOL-MACROLET.  
   
 X3J13 cleanups:  
  -- Make all non-symbol atoms self-evaluate.  
189    
190  Enhancements:  ANSI Cleanups:
191   -- Made the default for COMPILE-FILE's :error-file argument be nil.   -- *READ-EVAL* is now supported.  If a #. is encountered while *READ-EVAL*
192   -- Changed notes about incompatible changes in function arguments lists to be      is NIL (default T), an error is signaled.  This intended to allow
193      a warning rather than a note.      ``secure'' READ-based command interfaces to be written.
194   -- Source-level optimization efficiency notes now print out a   -- READTABLE-CASE is now supported.
195      transform-specific string to describe what the transform was trying to do,   -- The reader now signals the correct type of error when things go wrong
196      instead of just saying "unable to optimize."      instead of always signaling a simple-error.
197     -- Changed the return value of SET-SYNTAX-FROM-CHAR from NIL to T as per X3J13
198        cleanup RETURN-VALUES-UNSPECIFIED:SPECIFY.  [Hard to believe nobody has
199                                    HEMLOCK      complained about not conforming to this one.]
   
 This is version 3.5.  
   
 Note: The default value of "Slave Utility" is now just "lisp" which hopefully  
 will be found on path:.  If you don't have lisp on your path, you need to set  
 "Slave Utility" to the full pathname of lisp, /usr/misc/.cmucl/bin/lisp on CMU  
 machines.  
200    
201  Bug fixes:  Bug fixes:
202   -- Under TTY screen management, a MAKE-WINDOW - DELETE-WINDOW sequence now   -- Fixes to several bugs with respect to #+, #-.  In particular, stacked
203      leaves the screen unchanged.      conditionals like "#+foo #-bar baz" now work
204   -- Fixed some character attribute constants to make 8-bit chars work.   -- #n= and #n# now detect more error conditions and work on structures.
205   -- "Center Line" now works when invoked on the last line of the buffer.   -- # is now a non-terminating macro character, so foo#bar is read as a
206   -- Fixed "Move Over )" to use a permanent mark instead of a temporary mark      symbol.
207      because it deletes text.   -- Added Ted's changes to make INTERNAL-READ-EXTENDED-TOKEN work when there
208   -- Fixed sentence motion to be able to move to the end of the buffer.      are `|' escapes.  The main significance of this is that #+nil '|foo;bar|
209   -- Fixed the hemlock banner in the status line to not have "!" after      and #:|foobar| now work properly.  Also changed this function to recognize
210      the date.      unquoted colons so that #:foo:bar will error, but not #:foo\:bar.
211    
212  Enhancements:  Enhancement:
213   -- Removed the definitions of the obsolete COMMAND-CHAR-BITS-LIMIT and   -- Export new variable *ignore-extra-close-parentheses* if true (the default),
214      COMMAND-CHAR-CODE-LIMIT.      extra close parens are only a warning, not an error.  Previously unmatched
215   -- Modified "Visit File" to issue a loud message whenever another buffer      close parens were quietly ignored.
     already contains the file visited. The quiet message often went unnoticed,  
     defeating its purpose.  
  -- The definitions in FLET, LABELS and MACROLET are now indented correctly.  
  -- Added DEFINDENT's for the "DEBUG-INTERNALS" interface.  
  -- Modified Lisp indentation to check if the mark in was in a string context.  
     If it is, then we go to the column after the opening double quote.  
     Otherwise, we use the first preceding non-blank line's indentation.  This  
     fixes the problem with doc strings and ERROR strings which got indented  
     respectively at the beginning of the line and under the paren for the ERROR  
     call.  
  -- Added some prototype netnews support.  Details to be anounced later.  
  -- Added font support for the TTY.  Allow active region highlighting and open  
     paren highlighting when on the TTY, as they now work.  
  -- Changed the compile-in-slave utilities to count notes and display in  
     completion message.  Also fixed not to print echo area messages "Error in  
     NIL ..."  
   
 New commands:  
   
 "Fill Lisp Comment Paragraph"   Lisp: M-q  
    Fills a flushleft or indented Lisp comment, or lines all beginning with the  
    same initial, non-empty blankspace.  When filling a comment, the current  
    line is used to determine a fill prefix by scanning for the first semicolon,  
    skipping any others, and finding the first non-whitespace character;  
    otherwise, the initial whitespace is used.  
   
 "Shell Complete Filename"       Process: M-Escape  
     In a shell buffer, attempts to complete the filename immediately before  
     point.  The commands that start "Process" buffers with shells establish a  
     stream with the shell that tries to track the current working directory of  
     the shell.  It uses the variable "Current Working Directory" to do this.  
     For it to work, you should add the following to your .cshrc file:  
        if ($term == emacs) then  
           alias cd 'cd \!* ; echo "&"`pwd`"/\
"'
 
           alias popd 'popd \!* ; echo "&"`pwd`"/\
"'
 
           alias pushd 'pushd \!* ; echo "&"`pwd`"/\
"'
 
        endif  
   
 "Manual Page"  
     Runs man(1) in a scratch buffer and displays it in the current window.  
   
 "Typescript Slave Status"       Typescript: H-s  
    Interrupt the slave and cause it to print status information.  
   
   
 Hemlock-internals changes:  
  -- CREATE-WINDOW-FROM-CURRENT now creates a window according to its new  
     proportion argument instead of simply splitting the current window in two.  
     It returns nil without doing anything if either window is too small.  
  -- WINDOW-GROUP-CHANGED no longer unifies the sizes of window when the  
     user resizes a group.  It now tries to distribute the new size of the group  
     according to the proportions of the old size consumed by the windows.  
  -- Changed ARRAY-ELEMENT-FROM-MARK to use AREF for the Netnews stuff.  I  
     documented this to be an internal interface since a few other modes use it.  
  -- WRITE-FILE now takes an :append argument.  
  -- Modified %SET-MODELINE-FIELD-FUNCTION to allow its function argument to be  
     a symbol or function since the purpose is to FUNCALL the thing.  Since the  
     new system is up to spec on the disjointedness of functions, this needed to  
     be fixed for usefulness.  
216    
217    
218          Release notes for CMU Common Lisp 14c, 6 June 91  Pathnames:
   
   ** The FASL file format has changed, so all files must be recompiled. **  
   
 These notes describe changes since the beta release of 3 February 91.  This is  
 the first CMU CL release to run on Mach SPARCs as well as on PMAXen (DECstation  
 3100 or 5000).  Version 14c will go out to both beta and default, since there  
 is currently no default release.  
   
 This release has a substantial space reduction due to compiling with debug-info  
 1 and reduced safety.  The core is currently 19.2 meg, which is 7 meg smaller  
 than the last beta release (despite added functionality.)  
   
 Major parts of the system are now compiled with no error checking.  Users  
 should not notice any reduction in safety, since user visible interfaces are  
 supposed to be fully checked.  Standard functions that users can cause to get  
 unbound symbol or array index errors needed to be changed to either do explicit  
 error checks or locally use a safe policy.  Some of these cases may have been  
 missed.  Let us know if you get any less-than-informative error messages  
 (segmentation violation) inside standard functions.  
   
   
 New packages:  
   
 The X based graphical inspector is now available.  It now uses standard  
 fonts (courier) and has a bigger help window.  
   
 An improved version of the profile package (previously in the library) is now  
 in the core.  It now compensates for recursive calls or nested calls, and  
 interacts better with TRACE and function redefinition.  The old profile  
 documentation is in:  
     /afs/cs/project/clisp/library/profile/profile.doc  
   
   
 Code:  
   
 Argument type checking for Common Lisp functions is now driven by the  
 compiler's function type database (the types reported by DESCRIBE.)  This means  
 that some type errors might be detected that were previously unnoticed.  
   
 Changed the internal WITH-ARRAY-DATA macro to do bounds checking.  This causes  
 various string functions to give better error messages when an :END arg is out  
 of bounds or :START is greater than :END.  
   
 Tuning:  
     Some tuning in SYSTEM:SERVE-EVENT which reduces consing and speeds up  
     Hemlock and terminal I/O.  
   
     Changed GET-INTERNAL-REAL-TIME to subtract out the time of the first  
     call to minimize the probability of bignum results.  Also some other tuning  
     that reduced the consing of this function to 0.  
   
     Tuned bignum code and added declarations to reduce number consing.  
   
   
 DEFSTRUCT:  
     Fixed default-structure-print to work when *print-circle* is T.  
     Merged fix to DEFSTRUCT constructor parsing that allows multiple default  
     constructors, or none at all.  
   
 Merged bug fixes from old RT system:  
     STANDARD-CHAR-P no longer returns T for #\return.  
   
     Fixed a bug in format regarding ~@*.  
   
     Fixed the read-eval-print loop to frob +, ++, +++ correctly.  
   
     Fixed a bug in Y-OR-N-P.  It was calling WHITESPACEP on a symbol.  
   
     Fixed READ-QUOTE to call READ with t for eof-errorp which it previously  
     failed to do.  fixed READ-PRESERVING-WHITESPACE to no longer screw with  
     eof-errorp based on recursivep  
   
 Package system:  
     Changed DEFPACKAGE to expand into stuff that will have the package effect  
     at compile time as well as at load time.  
   
     Fixed DEFPACKAGE to deal more correctly with finding symbols that must  
     exist.  
   
     Fixed package system code to not destructively modify the USE, USED-BY and  
     SHADOWING-SYMBOLS lists so that they don't get retroactively modified when  
     we hand them off to the user.  
   
     Also, in SHADOW, when symbols is NIL, shadow no symbols, not NIL.  
   
     Fixed a bug in RENAME-PACKAGE that happened when the new name was one of  
     the old nicknames.  
   
 Streams:  
     Tweaked handling of LISTEN a bit to allow READ-CHAR-NO-HANG to work  
     correctly.  Fixed the listen method for concatenated streams.  It failed to  
     step to the next stream when the current one hit eof.  
   
     Make two-way streams force-output on the output side before passing any  
     input requests on to the input side.  Made *standard-output* a two-way  
     stream so that reading *standard-input* will force output on standard  
     output.  This eliminates the need for explicit calls for FORCE-OUTPUT when  
     prompting.  
   
     Some tuning and bug fixes to FD-STREAMS (file descriptor streams) which are  
     used for file I/O (and now for communication with the X server.)  Also, now  
     OPEN complains if you try to open a non-writable file for output with  
     :RENAME or :RENAME-AND-DELETE.  Previously this would succeed as long as  
     the directory was writable.  SYSTEM:READ-N-BYTES on FD streams is now more  
     efficient, but does *not* wait using SERVE-EVENT; it blocks instead.  
219    
220  TRACE:  This release supports all the new CltL2 pathname features except for logical
221      Use FORCE-OUTPUT instead of FINISH-OUTPUT to prevent gratuitous slowdowns  pathnames.  Following is an overview of the new pathname support.
     when running in a slave.  
222    
223      If we enter trace recursively (due to the printer calling the traced  Programs that actually conform to the CLtL1 pathname spec will have very few
224      function), then just quietly call the function, instead of signalling an  problems.  However, the CLtL1 spec was extremely vague, and CMU CL did not
225      annoying "unable to trace" error.  make use of much of the allowed flexibility, so many technically non-portable
226    programs previously worked under CMU CL.
227    
228    The main incompatible changes from CLtL1 to CLtL2:
229     -- Symbols are no longer acceptable filenames.
230     -- PATHNAME-HOST may be any object.
231     -- :UNSPECIFIC is now a legal pathname component.
232     -- MERGE-PATHNAMES now recognizes relative pathnames and treats them
233        specially.
234    
235    The format of directories is now specified (to be a list in a certain format.)
236    This required an incompatible change from the previous practice of using a
237    vector PATHNAME-DIRECTORY and using "DEFAULT" or :ABSOLUTE in the
238    PATHNAME-DEVICE to indicate relative and absolute pathnames.
239    
240    In a related change, the CMU SEARCH-LIST extension was changed so that the
241    search-list now appears in the PATHNAME-DIRECTORY as:
242        (:ABSOLUTE #<Search-list "name"> ...)
243    
244    Other changes to search-lists:
245     -- (SETF SEARCH-LIST) now accepts a string or pathname, and converts it into
246        a one-element list.
247     -- Search-list elements are now canonicalized to pathnames rather than to
248        strings.
249     -- Instead of returning NIL, SEARCH-LIST now signals an error when it is
250        called on an undefined search list.
251     -- SEARCH-LIST-DEFINED-P is a predicate that tells if the search list is
252        currently defined.
253    
254    New features which are now supported:
255     -- Wildcard pathnames are now fully supported.  In addition to allowing :WILD
256        in any pathname component, "extended wildcards" such as "foo*.*" are also
257        supported.  A consequence of this is that PATTERN objects may appear in
258        wildcard pathname components instead of strings.  See PATHNAME-MATCH-P and
259        TRANSLATE-PATHNAME.
260     -- As a CMU CL extension, a wildcard pathname may be used as the argument to
261        any filesystem interface (like OPEN) as long as it matches only one file.
262     -- The pathname :COMMON case mechanism provides a way around the problems of
263        portably specifying string pathname components in the presence of operating
264        systems with differing preferred case in their filesystem.  An uppercase
265        string "LISP" is mapped to the "customary case" (lowercase on unix.)
266        Lowercase is also inverted: "readme" becomes "README".  Mixed case is left
267        alone.  Note that this mechanism is explicitly enabled by supplying :CASE
268        :COMMON to functions such as MAKE-PATHNAME.  The default is the old
269        behavior (:CASE :LOCAL).
270    
271    Also, DIRECTORY now actually returns the TRUENAME of each file (as it was
272    always supposed to do.)  If a matched file is a symbolic link, the truename may
273    be a file in some other directory that doesn't even match the pattern.  The old
274    behavior can be obtained by specifying :FOLLOW-LINKS NIL.
275    
276  LOAD:  The new wildcard pathname mechanism has not yet been used to replace the old
277      Changed load to look at the file contents for the "FASL FILE" header to  single-wildcard matching in Hemlock DIRED, etc.
     determine whether to fasload or slow load, instead of forcing use of a  
     single fasl file type.  Also, when the given filename doesn't exist and  
     doesn't have a type, try ``fasl'' in addition to the machine specific fasl  
     file type.  Eliminated the "feature" whereby zero-length fasl files were  
     considered to be valid (doing nothing).  Now if you try to load a file with  
     a fasl file type, but that doesn't have a valid fasl header, then you will  
     get an error (proceeding loads as a source file.)  
278    
279      When the loader prints comments about loading progress, the number of  
280      leading semicolons is now the depth of recursive loading.  Debugger:
281     -- Added Miles' changes to keep errors and warnings on one line if they fit.
282      Added a CONTINUE restart in LOAD that returns NIL.   -- The debugger now starts up with the error frame as the current frame, so
283        it is no longer necessary to manually skip over internal frames resulting
284  GC:      from the error system invocation.
285      Fixed some bugs in control of garbage collection that should solve some   -- Fixed some debugger bugs that appeared when debugging interpreted code.
286      problems with GC failing to be triggered automatically.  Also, GC no longer   -- Added ``DESCRIBE'' debugger command.
287      implicitly reenables automatic GC if it has been disabled with GC-OFF.   -- Merged Miles' changes that allow the use of restart names as debugger
288        commands.
289      Changed the default GC notify function to not beep.  The old behavior can   -- Changed SHOW-RESTARTS to also display the restart name (but only if it's
290      still be obtained by setting *GC-VERBOSE* to :BEEP.  Note that this only      not shadowed by a higher priority restart).  Changed the restart command
291      affects use on TTYs, since slave GC notification works differently.      to look for restarts by name if a symbol is typed.
292     -- Bind *CURRENT-LEVEL* to 0, *PRINT-READABLY* to nil, and *READ-EVAL* to T
293      Wrapped a without-interrupts around the guts of maybe-gc so that the notify      when entering the debugger to make sure things print as expected.
294      messages and state updates don't get seperated from the actual gc.  
295    The debugger programmer (DEBUG-INTERNALS) interface is now documented in the
296      Removed the icache flushing stuff from GC, because it was unneeded (and  User's Manual.  This interface allows the coding of debuggers and debugger
297      sometimes printed annoying messages that it didn't work).  extensions without requiring an intimate understanding of the compiler and
298    run-time system.  Be warned that DI features (such as breakpoints) not used by
299  X3J13 cleanups:  the current debugger may not work very well (wait for version 17.)
300      The non-destructive string functions now accept characters as well as  
301      strings and symbols.  Debug internals changes:
302     -- DI:DEBUG-FUNCTION-FUNCTION is now implemented.
303      MACROEXPAND now expands symbol macros.   -- Added DI:FLUSH-FRAMES-ABOVE for cleaning up frames to be bound to
304        DEBUG:*STACK-TOP-HINT*.
     Now almost all Common Lisp functions which are SETFable have a (SETF name)  
     function.  The exceptions are functions where it makes no sense (LDB,  
     GETF), and a few other functions (GET, GETHASH.)  Now SETF of APPLY works  
     for any function which has a setf function.  
   
     Changed GET-SETF-METHOD to ignore setf macros (always global) when there is  
     a local macro or function of the place function.  [An x3j13 cleanup]  
   
     Fixed the LOOP THEREIS keyword.  Changed a null test in LOOP into an endp  
     test.  
   
 Other bug fixes:  
     Fixed sequence functions with output type specifiers to handle DEFTYPE'ed  
     types and other complex types correctly.  (COERCE still can't hack  
     DEFTYPEs, though.)  
   
     Fixed typep of (satisfies (lambda (obj) ...)) to coerce the form into a  
     function so that "object not function" errors don't result.  
   
     Fixed DOCUMENTATION to return only one value.  
   
 Enhancements:  
     ROOM is now much more verbose, displaying a breakdown of memory usage by  
     object type.  
   
     Changed the printer to print the name of code objects and the value of  
     value cells.  
   
   
 CLX:  
   
 Modified EXT:OPEN-CLX-DISPLAY to set XLIB:DISPLAY-DEFAULT-SCREEN to the  
 screen specified by the user before returning the display.  
   
 Merged in a bug-fix to EVENT-LISTEN to make it return the right number of  
 events when called when there is a current event (i.e. in an EVENT-CASE.)  
305    
306  Fixed the CLX X interface to be much more efficient, as well as fixing some  
307  bugs.  The low-level I/O to the server is now faster and conses much less.  Defstruct:
 Enabled some code speeds up pixarray read/write (though it could still be much  
 better.)  Also, eliminated redundant type checking and fixed some broken  
 declarations.  This fixes problems with CLX sometimes not working with some X  
 servers (like the RT server.)  
308    
309    Various fixes and enhancements to defstruct slot parsing and inclusion.
310    It now works to define structures such as:
311        (defstruct super a)
312        (defstruct (sub1 (:conc-name super)) one)
313        (defstruct (sub2 (:conc-name super)) two)
314        (super-a (make-sub1))
315    
316    previously, a definition such as for SUB2 would define SUPER-A to be a
317    SUB2-specific function, which could then no longer be used on other types.  The
318    spec doesn't clearly say that such a construct is legal, but its use seems
319    fairly common.
320    
321    Also, slot parsing is now more rigorous.  Unrecognized slot options cause an
322    error, as does a slot spec like: (defstruct foo (a :type t))
323    
324    Fasl dumping of constant structures has been fixed to conform to X3J13.  The
325    main significance of this is that DEFSTRUCT structures are no longer dumpable
326    by default.  However, the generic function MAKE-LOAD-FORM isn't really used.
327    Instead, a new defstruct option, :MAKE-LOAD-FORM-FUN, has been added that can
328    be used to specify a function that acts like a MAKE-LOAD-FORM method.  When we
329    have a CLOS that supports STRUCTURE-CLASS, the default method for
330    MAKE-LOAD-FORM will use this information instead of having the compiler use it
331    directly.  The old behavior can be enabled on a structure by structure basis by
332    using the :MAKE-LOAD-FORM-FUN defstruct option:
333        (defstruct (foo (:make-load-form-fun :just-dump-it-normally))
334          ...)
335    
336    
337  Compiler:  Compiler:
338    
339  Bug fixes:  Cleanups:
340      Fixed incorrect argument type information for some standard Common Lisp   -- Added the LOAD-TIME-VALUE support special form.
341      functions.   -- Displaced or adjustable arrays and vectors with fill pointers can now be
342        dumped in fasl files, but are converted to simple array with the same
343      Fixed PROCLAIM to work correctly when the argument isn't a constant.      elements.
344     -- Arrays of floats are left as arrays of floats instead of being
345      Fixed the DEBUG optimize quality to be called DEBUG instead of DEBUG-INFO.      converted into arrays of element-type T that just so happen to hold a
346        bunch of floats.
347      Fixed the compiler to not flame out if it sees a SATISFIES type specifier   -- Changed IGNORE and IGNORABLE to recognize #'fn-name for declaring that
348      where the predicate function is undefined, and generally to deal better      local functions are not used.  Exported IGNORABLE from LISP.
349      with testing whether a compile-time constant is of some type that may not  
350      be properly defined yet.  New optimizations:
351     -- Iterations written using tail recursion are now optimized through a
352      Fixed a number of bugs in the handling of closures over top-level      special-casing of local functions where all calls but one are
353      variables.      tail-recursive self-calls.  Such functions are compiled with no
354        environment manipulation, resulting in the same code as explicit
355      Fixed a problem with semi-inline functions.      iteration.
356     -- Loop rotation (Knuth "while" loop optimization) been added.  This is the
357      The compiler note count is no longer incremented when notes are suppressed      optimization that negates the loop exit test and places it at the end of
358      by INHIBIT-WARNINGS 3.      the loop, and then jumps there at loop entry.  Note that this is part of
359        control optimization, and not simply a recoding of certain iteration
360        macros.  In fact, for historical reasons DO, etc. already had the exit
361        test negated, but the compiler was cleverly un-negating the test.
362     -- Flow analysis now recognizes function calls and special forms which do
363        not yield any value because they unwind or signal an error.  This results
364        in improved code for error checks, since the compiler can get by with
365        fewer unconditional branches.  A function can be declared not to return by
366        declaring its result type to be NIL (not to be confused with NULL).  If a
367        function declared NIL does return, an error will be signalled.
368     -- Added derive-type methods for ASIN, ACOS, ACOSH, ATANH and SQRT which
369        figure out whether the result type is real on the basis of the argument
370        range.  Also, the result of ATAN is always real, so we don't need a result
371        type assertion.
372     -- Added optimization which deletes MULTIPLE-VALUE-BINDs when all
373        variables have been deleted.
374     -- Eliminated some spurious checking of the result types of safe VOPs (such
375        as the SPARC tadd for fixnum arithmetic.)
376     -- Transform uses of the SEARCH generic sequence function on simple strings
377        into a call to a more efficient string-specific function.
378     -- Added multiplier recoding of (UNSIGNED-BYTE 32) multiplication.  This
379        converts 32 bit (or smaller) unsigned multiplication by any compile-time
380        constant into a shift-add sequence.  This is much faster when the constant
381        is a near power of two or when general multiplication is slow (as on the
382        SPARC.)
383     -- Added comprehensive handling of arithmetic and logical identities when
384        an arg is -1, 0 or +1.
385     -- Added a RANDOM derive-type method: (random 13) is (integer 0 12).
386    
     Some fixes that should eliminate spurious undefined-function warnings.  In  
     particular, definitions of functions in non-null lexical environments will  
     be noticed.  
   
     Also, now if a function is defined incompatibly with previous calls, the  
     warning will have proper source context.  
   
     Fixed a bug in accessors for 1,2, and 4 bit arrays that was causing #* to  
     generate incorrect bit vectors.  
   
     Changed the type system to consider #(:foo :bar) to be a subtype of  
     (vector keyword).  In other words, array subtype relations are determined  
     according to the specialized element types actually present in this  
     implementation, rather than assuming that all element types can be  
     discriminated.  
   
     Fixed a problem that could cause type checks to be spuriously deleted in  
     some contexts where there is a local change in the SAFETY optimization  
     policy.  
   
 DECStation (PMAX) specific changes:  
   
     Representation conversion of a SAP (system area pointer) to a pointer  
     representation now results in an efficiency note.  
   
     Fixed EQL (and =) on integers to not unnecessarily cons a word-integer  
     argument just because one argument is known to be a fixnum.  
   
     New version of the assembler with instruction scheduling (no-op deletion)  
     support.  This reduced the size of the core by 1.3 meg, and makes  
     everything run faster too.  
   
     Fixed TRUNCATE on floats to truncate instead of rounding.  
   
 SPARC notes:  
     The SPARC port is not yet as highly tuned as the PMAX port.  In particular,  
     no instruction scheduling is done yet.  This is probably a 10% performance  
     penalty.  
387    
388  Enhancements:  Enhancements:
389      Made forms within a LOCALLY be recognized as "top-level" so that subforms   -- Changed the compiler to temporarily increase *BYTES-CONSED-
390      can be compiled separately.      BETWEEN-GCS* by a factor of 4 during compilation of each top-level form,
391        instead of turning off all garbage collection.
392      The compiler now ignores assignments to special variables when determining   -- Bind *PRINT-LINES* around compiler error output to
393      which representation to use for a variable.  Also, we don't print      *ERROR-PRINT-LINES*.
394      representation selection efficiency notes about coercion that are due to   -- Do not warn about undefined variables, functions or types when the
395      error checking code.      INHIBIT-WARNINGS OPTIMIZE quality is 3.
396     -- Some optimizations are now considered "important"; failure of important
397      Added support for the EXT:CONSTANT-FUNCTION declaration (already in the      optimizations causes an efficiency note even when speed=inhibit-warnings
398      documentation.)      (i.e. by default.)
399     -- Print a error summary even when *COMPILE-VERBOSE* is false.  (This is only
400      When a DEFUN is compiled and the name has a FTYPE declaration, then a note      printed when there are errors, so this doesn't seem a violation of the
401      is printed if any arguments to the function are assigned to (i.e. SETQ) in      spirit of the spec.)
     the body, as this inhibits application of the FTYPE declaration to the  
     argument variables.  
   
     (<mumble>-P x) structure predicates are now just as efficient as  
     (TYPEP x '<mumble>).  
   
     Added type inference methods for sequence functions, and various functions  
     that return an argument as their result value.  
   
     A number of improvements to register allocation.  
   
     Added a new optimization of MULTIPLE-VALUE-CALL which converts MV calls  
     having a known number of arguments into MULTIPLE-VALUE-BIND/FUNCALL.  
     Combined with some other existing optimizations, this allows functions like  
     to be efficiently inline expanded (i.e. the APPLY turns to a FUNCALL):  
         (defun foo (&rest x)  
           (apply #'glorp x))  
   
     Reduced the size of debug information for OPTIMIZE DEBUG <= to 1.  
     If debug-info is < 1, then don't dump debug-args or function type.  
   
     Disabled the compiler's internal consistency checking by default.  These  
     phases are only useful for locating compiler bugs.  
   
 X3J13 cleanups:  
     The :VERBOSE and :PRINT keyword arguments are now supported by  
     COMPILE-FILE.  The :PROGRESS keyword is a CMU extension that provides an  
     even higher level of verbosity.  The *COMPILE-VERBOSE*, etc., variables are  
     also now supported.  
   
     Changed declaration processing to treat FUNCTION declarations as ordinary  
     variably type declarations.  The old semantics is still obtained when the  
     second arg to the declaration is a list (as it always would be in the old  
     usage.)  
   
 Block compilation:  
     Added new START-BLOCK and END-BLOCK declarations to allow portions of a  
     file to be block compiled (instead of only entire files.)  This mechanism  
     also allows the entry points to a block to be specified, allowing improved  
     compilation of non-entry-point functions.  Fixed many bugs that appeared  
     once block compilation was actually used.  
   
     COMPILE-FILE now has :ENTRY-POINTS and :BLOCK-COMPILE keywords.  
     :BLOCK-COMPILE NIL will totally inhibit compile-time resolution of function  
     names (including self-calls.)  The default (:SPECIFIED) allows compile time  
     resolution, but still compiles one top-level form at a time, preventing  
     local calls between top-level forms.  In this mode, a  
         (BLOCK-START Entry-Point*)  
     declaration will start block compilation.  Block compilation is terminated  
     by BLOCK-END, or the BLOCK-START of the next block.  
   
     See also the COMPILE-FILE doc string.  
   
   
 Context sensitive declarations:  
     Added the OPTIMIZE-INTERFACE declaration, which is just like OPTIMIZE, but  
     specifies the policy for function argument syntax checking and checking of  
     any declared argument types, allowing it to be distinct from the general  
     compilation policy.  This allows debugged code to be compiled with lowered  
     safety in its "guts", while still doing checking on the arguments that  
     users may supply (incorrectly.)  Any quality not separately specified  
     defaults to the normal OPTIMIZE quality.  
   
     Fixed WITH-COMPILATION-UNIT keyword to be :OVERRIDE instead of :FORCE.  
     Also, added :OPTIMIZE and :OPTIMIZE-INTERFACE for changing the "global"  
     compilation policy within the dynamic extent.  
   
     Added :CONTEXT-DECLARATIONS, which provides a way to insert declarations  
     conditional on pattern matching of the context in which the definition  
     appears.  So you can compile all external functions safe, or whatever.  See  
     the doc string for WITH-COMPILATION-UNIT.  
   
   
 Hemlock:  
   
 Tuning:  
     Changed typescript streams to cache the line length.  This greatly speeds  
     up slave output.  
   
     Several changes to allow redisplay to be delayed until process output (i.e.  
     in a shell buffer) is complete.  This allows the editor to catch up with  
     output by only displaying the final state of the shell buffer, instead of  
     forcing every line of output to be displayed.  This is very nice with slow  
     terminals or large outputs.  
   
 TTY redisplay:  
     Changed TTY redisplay to get the terminal size and speed from Unix using  
     the appropriate "ioctl" calls.  The speed of a PTY (and hence any telnet or  
     MCN connection) is infinite by default.  For best results with TTY  
     redisplay, it is crucial to set the terminal speed with the Unix "stty"  
     command:  
         stty 2400  
         stty 9600 etc.  
   
     Setting the speed allows the editor to keep in synch with the terminal so  
     that typing a command will temporarily abort redisplay until until there is  
     no typeahead.  This way, if you type C-v C-v in succession, output of the  
     first screen will stop when you type the second C-v.  
   
     Fixed several bugs in TTY redisplay.  "Unexpected zero transition delta" is  
     gone.  Also, fixed some problems with the screen not being updated properly  
     after redisplay has been aborted.  (When you type several commands in quick  
     succession.)  
   
     REDISPLAY now returns T, NIL or :EDITOR-INPUT.  T is returned when  
     redisplay changed the screen.  NIL is returned when there was no change.  
     :EDITOR-INPUT is returned when redisplay tried to update the screen, but  
     was aborted due to pending editor input.  
   
     Fixed REDISPLAY-WINDOWS-FROM-MARK so that process output won't cause  
     redisplay when we aren't in Hemlock.  
402    
403  Bug fixes:  Bug fixes:
404      Modified MAKE-BUFFERS-FOR-TYPESCRIPT to make sure the user supplied   -- Merged Miles' fix to disassembly of the MIPS coprocessor move instructions.
405      slave-name is free for use, so we don't clobber currently existing slaves.   -- Fixed spelling of "efficency" in exported variables such as
406        *EFFICIENCY-NOTE-COST-THRESHOLD*
407      Fixed a bug in completion mode (didn't previously work in the new-compiler   -- Fixed some cases where incomplete optimization could happen.
408      system.)   -- Fixed some arithmetic "identities" that failed to preserve the sign of
409        -0.0.
410  Enhancements:   -- Fixed TYPES-INTERSECT to consider any supertype of T to definitely
411      There is a new command "Set Buffer Writable", and the obsolete      intersect with anything (even an unknown type.)
412      command "Connect to Registered Eval Server" has been removed.   -- Fixed a problem where inconsistent declarations could fail to be detected
413        at compile time.
414      Added "Slave GC Alarm" variable (default :MESSAGE) which controls how   -- Fixed the VALUES transform (which discards unused subforms) to work
415      obnoxious the slave GC notification is.  Other values are like for "Input      on (VALUES).
416      Wait Alarm", :LOUD-MESSAGE and NIL.   -- More bug fixes to dead code deletion.
417     -- Fixed a problem where a special binding would not be removed on exit from
418      Made the slave switch demon set debug:*help-line-scroll-count* to      the scope if there was no code in the scope (e.g. it had all been
419      most-positive-fixnum, since the editor can do the scrolling for us.      deleted.)
420     -- Fixed handling of named (DEFCONSTANT) constants so that EQ
421        relationships are properly preserved.
 SYSTEM, EXTENSIONS:  
   
 Made SYSTEM:BITS, BYTES, etc., be defined in the null environment so that they  
 can be inline expanded.  This was causing spurious consing in various system  
 code.  
   
 Fixed EXT:CONNECT-TO-INET-SOCKET to check that we successfully looked up the  
 name so that we don't get segment violations on unknown hosts.  
422    
423  Fixed DI:FUNCTION-DEBUG-FUNCTION (though it still returns the XEP.)  
424  Some fixes to DI: condition report methods  Extensions:
425    
426  Added support for the MACH:TIOCGWINSZ and MACH:TIOCSWINSZ ioctls.   -- Export FEATUREP from EXT.  This takes a feature expression and tests it
427  In the Unix interface, extended the length of pathnames from 64 to 1024.      against the value of *FEATURES*.  Allow LISP:AND, LISP:OR, and LISP:NOT in
428        features lists in addition to :AND, :OR, and :NOT.  This makes featurep
429        useful outside of #+ and #-.
430     -- The encapsulation mechanism (similar to advise facilities) has been
431        revamped to work on SETF function names as well as symbols.
432        EXT:ENCAPSULATED-DEFINITION
433           Returns whatever definition is stored for name, regardless of whether
434           it is encapsulated.  Unlike FDEFINITION, this does not strip off the
435           encapsulation.  This is SETF'able.
436        EXT:ENCAPSULATE
437           Replaces the definition of name with a function that binds name's
438           arguments a variable named argument-list, binds name's definition to a
439           variable named basic-definition, and EVAL's body in that context.  Type
440           is whatever you would like to associate with this encapsulation for
441           identification in case you need multiple encapsuations of the same
442           name.
443        EXT:UNENCAPSULATE
444           Removes name's most recent encapsulation of the specified type.
445        EXT:ENCAPSULATED-P
446           Returns t if name has an encapsulation of the given type, otherwise
447           nil.
448        EXT:*SETF-FDEFINITION-HOOK*
449           A list of functions invoked by (SETF FDEFINITION) before storing the
450           new value.  Each hook function must take the function name and the
451           new-value.
452    
453  EXT:ONCE-ONLY now does sequential variable binding.  This can't cause any  Hemlock:
454  problems, since all names are gensyms, and is often useful.   -- Fixed the :FILE branch of "Help on Parse" to trim leading directory
455        components off the pathname if it wouldn't otherwise fit on the screen.
456     -- Fixed GET-EDITOR-TTY-INPUT to not assume that UNIX-READ will always work.
457     -- When we reallocate string table vectors to grow them, clear the old vector
458        so that it won't hold onto garbage (in case the vector was in static space,
459        but pointed to dynamic values.)  This was a major cause of memory leakage
460        in Hemlock.
461     -- Added a (setf (ts-stream-char-pos stream) 0) to the accept-input function
462        so that char-pos will be reset to zero whenever the user presses enter.
463    
464    PCL:
465     -- The version has been updated to "5/1/90  May Day PCL (REV 4b)".
466     -- The Code walker now understands the real SYMBOL-MACROLET, and the PCL macro
467        definition is no longer used.
468     -- Fixed a bug in WALK-ARGLIST where it would ignore the rest of the current
469        arglist if the current arg destructured.  This was causing it to compile
470        forms like:
471                (macrolet ((foo ((a b) c) ...)) ...)
472        as:
473                (macrolet ((foo ((a b)) ...)) ...)
474        note the loss of the arg c.
475    
476  Added :TIMEOUT argument to SYSTEM:MAKE-FD-STREAM.  The SYSTEM:IO-TIMEOUT  
477  condition is signalled if a timeout is specified and exceeded.  System:
478    
479  ----------   -- All the SAP-REF-<n> functions now take byte offsets.  Previously, the
480        16 and 32bit versions were scaled by the element size.
481     -- Fixed UNIX-IOCTL to not flame out of the cmd is a ub-32 instead of a sb-32.
482     -- Added Miles' TCSETPGRP, TCGETPGRP, and TTY-PROCESS-GROUP.
483     -- Unix syscalls are now more restrictive in the kind of arguments that they
484        accept.  In particular, UNIX:UNIX-READ, etc., no longer automatically
485        accept a vector (or string) argument.  You must use VECTOR-SAP to convert
486        the vector to a system area pointer.  Note that WITHOUT-GCING should be
487        wrapped around any syscall which is passed a pointer to the Lisp heap,
488        since the object might otherwise move doing the syscall.
489     -- Changed LOAD-FOREIGN to be exported from ALIEN.  Changed it have keyword
490        args instead of optionals.  Deleted obsolete linker argument.

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.5