/[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.13 by ram, Wed Jul 28 12:14:37 1993 UTC revision 1.14 by ram, Wed Nov 17 17:12:29 1993 UTC
# Line 1  Line 1 
1              Release notes for CMU Common Lisp 17b, 26 July 93              Release notes for CMU Common Lisp 17c, 19 September 93
2    
3  17b is a new major release of CMU Common Lisp.  An overview of changes:  17c is a new major release of CMU Common Lisp.  An overview of changes:
4   -- New structure object representation and class support in the type system.   -- New structure object representation and class support in the type system.
5   -- PCL better integrated with CMU type system.   -- PCL better integrated with CMU type system.
6   -- New CLX, PCL.   -- New CLX, PCL.
# Line 14  Line 14 
14   -- New TTY debugger commands support stepping compiled code.   -- New TTY debugger commands support stepping compiled code.
15   -- A graphical debugger and inspector based on a Motif interface.   -- A graphical debugger and inspector based on a Motif interface.
16   -- Changes in the startup code and SAVE-LISP increase portability.   -- Changes in the startup code and SAVE-LISP increase portability.
17     -- Preliminary support for the HP Precision Architecture under HP-UX 9.0
18        (i.e. for HP 700 series.)
19     -- New User's manual.  Note that the online Info document has not been
20        updated yet.
21    
22  And of course, bug fixes...  And of course, bug fixes...
23    
24  Basic runtime code changes:  Basic runtime code changes:
25    
26  ANSI cleanups:  ANSI cleanups:
27   -- Functions ARRAY-DISPLACEMENT, COPY-STRUCTURE, CELL-ERROR-NAME,   -- These functions are now defined:
28      INTERACTIVE-STREAM-P, OPEN-STREAM-P, DELETE-PACKAGE, conditions      ARRAY-DISPLACEMENT CELL-ERROR-NAME COMPILE-FILE-PATHNAME
29      FLOATING-POINT-INEXACT, FLOATING-POINT-INVALID-OPERATION, and type      COPY-STRUCTURE DELETE-PACKAGE INTERACTIVE-STREAM-P
30      FILE-STREAM are now defined.      LOAD-LOGICAL-PATHNAME-TRANSLATIONS LOGICAL-PATHNAME LOGICAL-PATHNAME-P
31        LOGICAL-PATHNAME-TRANSLATIONS MAKE-LOAD-FORM MAKE-LOAD-FORM-SAVING-SLOTS
32        MAP-INTO OPEN-STREAM-P TRANSLATE-LOGICAL-PATHNAME
33     -- The conditions FLOATING-POINT-INEXACT,
34        FLOATING-POINT-INVALID-OPERATION, and the type FILE-STREAM are now
35        defined.
36     -- Logical pathnames are now implemented.  (See "pathnames" below and the
37        user's manual.)
38     -- Allow :UNSPECIFIC and :WILD in all pathname slots where they should be
39        legal; don't always use a :MULTI-CHAR-WILD pattern.
40     -- Support for :COMPILE-TOP-LEVEL, :LOAD-TOP-LEVEL and :EXECUTE keywords to
41        EVAL-WHEN.
42   -- #S readed no longer forces keywords into the keyword package.   -- #S readed no longer forces keywords into the keyword package.
43   -- Various changes to DEFSTRUCT described below.   -- Various changes to DEFSTRUCT described below.
44   -- IN-PACKAGE now prints a warning if any arguments other than the package   -- IN-PACKAGE now prints a warning if any arguments other than the package
# Line 31  ANSI cleanups: Line 47  ANSI cleanups:
47   -- DEFPACKAGE now tells you about inconsistencies between any existing package   -- DEFPACKAGE now tells you about inconsistencies between any existing package
48      and the DEFPACKAGE form.      and the DEFPACKAGE form.
49   -- Packages:   -- Packages:
50       - Delete-package function added according to X3J13/92 specification.       - DELETE-PACKAGE function added according to X3J13/92 specification.
51         Most operations on deleted packages signal an error.         Most operations on deleted packages signal an error.
52       - Changed IN-PACKAGE to conform to the new definition.  But if you use an       - Changed IN-PACKAGE to conform to the new definition.  But if you use an
53         old-style IN-PACKAGE, it will use the old behavior.         old-style IN-PACKAGE, it will use the old behavior.
54       - Rewrote DEFPACKAGE to tell you about inconsistencies between the       - Rewrote DEFPACKAGE to tell you about inconsistencies between the
55         package and the DEFPACKAGE form.         package and the DEFPACKAGE form.
56   -- Conditions:   -- Conditions:
57         - Changed conditions to be non-structure (but also non-PCL) instances
58           that support multiple inheritance and the other required CLOS
59           operations.  Removed SIMPLE-CONDITION hacks for simulating multiple
60           inheritance.
61         - DEFINE-CONDITION now corresponds to proposed ANSI CL, which is a subset
62           of DEFINE-CLASS syntax and is incompatible with the earlier KMP syntax.
63           Note that in particular, :INITARG and :READER options are now
64           effectively required on every slot.
65       - SIMPLE-CONDITION-FORMAT-STRING renamed to       - SIMPLE-CONDITION-FORMAT-STRING renamed to
66         SIMPLE-CONDITION-FORMAT-CONTROL.         SIMPLE-CONDITION-FORMAT-CONTROL.
      - Spiffed up the SIMPLE-CONDITION hacks so that  
        (typep x 'simple-condition) works.  
67       - Implemented CONDITION-RESTARTS ANSI cleanup & WITH-CONDITION-RESTARTS       - Implemented CONDITION-RESTARTS ANSI cleanup & WITH-CONDITION-RESTARTS
68         macro.  This provides a way to say that restarts are relevant only to a         macro.  This provides a way to say that restarts are relevant only to a
69         certain condition.         certain condition.
70       - Added style-warning and parse-error conditions.       - Added STYLE-WARNING and PARSE-ERROR conditions.
71       - Added report method for END-OF-FILE and changed system code to signal       - Added report method for END-OF-FILE and changed system code to signal
72         it.         it.
73       - Added PRINT-NOT-READABLE condition and made people use it.       - Added PRINT-NOT-READABLE condition and made people use it.
74   -- Remove some spurious LISP package exports, and add missing ones.   -- Remove some spurious LISP package exports, and add missing ones.
75        Delete package setup for optional subsystems (hemlock, etc.)
76   -- Renamed SPECIAL-FORM-P to SPECIAL-OPERATOR-P.   -- Renamed SPECIAL-FORM-P to SPECIAL-OPERATOR-P.
77   -- Renamed GET-SETF-METHOD-MULTIPLE-VALUE to GET-SETF-EXPANSION and   -- Renamed GET-SETF-METHOD-MULTIPLE-VALUE to GET-SETF-EXPANSION and
78      DEFINE-SETF-METHOD to DEFINE-SETF-EXPANDER.  The old names are still      DEFINE-SETF-METHOD to DEFINE-SETF-EXPANDER.  The old names are still
# Line 59  ANSI cleanups: Line 82  ANSI cleanups:
82   -- Hash-table code largely rewritten.  MAKE-HASH-TABLE now conforms to   -- Hash-table code largely rewritten.  MAKE-HASH-TABLE now conforms to
83      the X3J13 spec.  Hash-tables can now be dumped as constants in fasl files.      the X3J13 spec.  Hash-tables can now be dumped as constants in fasl files.
84    
   
85  Bug fixes:  Bug fixes:
86   -- Made the "modules:" search-list (used by REQUIRE) default to the current   -- Made the "modules:" search-list (used by REQUIRE) default to the current
87      directory.      directory.
# Line 68  Bug fixes: Line 90  Bug fixes:
90      undefined-variable errors.      undefined-variable errors.
91   -- Set up a default for modules: search-list.   -- Set up a default for modules: search-list.
92   -- Changed BACKQ-UNPARSE to check for improper lists instead of getting an   -- Changed BACKQ-UNPARSE to check for improper lists instead of getting an
93      internal error.  Some meaningless backq forms will now pprint as "###      internal error.  Some meaningless backq forms will now pprint as:
94      illegal dotted backquote form ###".          "### illegal dotted backquote form ###".
95   -- Added SIMPLE-STYLE-WARNING, and spiffed up the simple-condition hacks so   -- Added SIMPLE-STYLE-WARNING, and spiffed up the simple-condition hacks so
96      that (typep x 'simple-condition) works.      that (typep x 'simple-condition) works.
97   -- In LOAD-FOREIGN, use unix-namestring on each file before passing it to the   -- In LOAD-FOREIGN, use unix-namestring on each file before passing it to the
98      linker to get rid of search lists.      linker to get rid of search lists.
99   -- Fixed the printer to stop at the fill pointer for strings with fill   -- Fixed the printer to stop at the fill pointer for strings with fill
100      pointers.      pointers.
101     -- Fixed PPRINT-DO to not flame out if one of the binding lists is NIL.
102   -- Fixed load to not always consider files with NIL type to be source files.   -- Fixed load to not always consider files with NIL type to be source files.
103      If the file exists as specified, then look at the header instead of trying      If the file exists as specified, then look at the header instead of trying
104      to default the type.  If :CONTENTS is specified, then don't try defaulting      to default the type.  If :CONTENTS is specified, then don't try defaulting
# Line 97  Bug fixes: Line 120  Bug fixes:
120   -- Fixed FLOAT to float ratios precisely by using integer division instead of   -- Fixed FLOAT to float ratios precisely by using integer division instead of
121      float division.  This fixes a problem where a bit or two was lost on      float division.  This fixes a problem where a bit or two was lost on
122      READing floats.      READing floats.
123     -- In the Alien type= method for FUNCTION, call ALIEN-TYPE-= instead of
124        calling ALIEN-TYPE-P with two args.  [Fix from Mike Clarkson.]
125    
126  Compiler changes:  Compiler changes:
127    
128  Enhancements:  Enhancements:
129     -- If the argument to compile-file is already absolute, then don't bother
130        expanding it into the TRUENAME.  This allows search-lists or logical
131        pathnames to be preserved in the defined-from info (for DESCRIBE,  "Edit
132        Definition", etc.)
133     -- Signal a compile-time error for division by constant 0.
134   -- Replaced the FORMAT transform with one that uses FORMATTER for more   -- Replaced the FORMAT transform with one that uses FORMATTER for more
135      complete handling of format directives.  This is only enabled when      complete handling of format directives.  This is only enabled when
136      speed > space.      speed > space.
# Line 164  ANSI changes: Line 194  ANSI changes:
194      ignored.      ignored.
195    
196  Tuning:  Tuning:
197     -- Tuning based on instruction-counting profiling of the compiler --- added
198        missing declarations, etc.  This also motivated some general
199        array/sequence optimizations (see below.)
200   -- Added block compilation declarations.  Moved some stuff around to get   -- Added block compilation declarations.  Moved some stuff around to get
201      better locality.      better locality.
202   -- Changed IR1-ERROR-BAILOUT to do fewer special bindings.   -- Changed IR1-ERROR-BAILOUT to do fewer special bindings.
# Line 177  Bug fixes: Line 210  Bug fixes:
210      supplied.      supplied.
211   -- Structure slot accessors are no longer constant-folded, because that was   -- Structure slot accessors are no longer constant-folded, because that was
212      causing problems with some MAKE-LOAD-FORM hacks.      causing problems with some MAKE-LOAD-FORM hacks.
213     -- Fixed numeric type inference to realize that contagion  causes the result
214        of SINGLE-FLOAT & REAL to be FLOAT, not SINGLE-FLOAT.
215   -- In FINALIZE-XEP-DEFINITION, if not the current global definition, just   -- In FINALIZE-XEP-DEFINITION, if not the current global definition, just
216      leave the defined type alone, instead of clobbering it with FUNCTION.  A      leave the defined type alone, instead of clobbering it with FUNCTION.  A
217      benefit of this is that COMPILE doesn't trash the function type.      benefit of this is that COMPILE doesn't trash the function type.
# Line 202  Bug fixes: Line 237  Bug fixes:
237   -- Fixed the handling of +/- 0.0:   -- Fixed the handling of +/- 0.0:
238       - = is no longer converted to EQL, but is directly handled by the backend.       - = is no longer converted to EQL, but is directly handled by the backend.
239       - EQL is converted into a raw comparison of the bits.       - EQL is converted into a raw comparison of the bits.
240   -- Weaken (not (component-new-functions component)) assertion to allow   -- Fixed several bugs which caused fatal compile-time errors.
     deleted functions.  
241   -- Fixed LET* to correctly use the internal policy (not the interface policy)   -- Fixed LET* to correctly use the internal policy (not the interface policy)
242      for all bindings, not just the first.      for all bindings, not just the first.
243   -- In local call VOPs, must load CALLEE-NFP with MAYBE-LOAD-STACK-TN, since it   -- In local call VOPs, must load CALLEE-NFP with MAYBE-LOAD-STACK-TN, since it
# Line 239  Mips: Line 273  Mips:
273  Byte compilation:  Byte compilation:
274    
275  Byte compilation reduces the size of the Lisp process by allowing rarely used  Byte compilation reduces the size of the Lisp process by allowing rarely used
276  functions to be compiled more compactly.  Together with assembly optimization,  functions to be compiled more compactly.  In comparison with 16f, the basic
277  this has reduced the size of the full MIPS core by 26% and the full sparc core  system image is about 20% smaller.  The full system with Hemlock CLX, etc., is
278  by 14%.  also 19% smaller even though it contains new code (the Motif interface) because
279    a larger fraction of the extra systems are byte compiled.
280    
281    
282  Byte compilation overview:  Byte compilation overview:
283    
# Line 260  comparison to other Common Lisp interpre Line 296  comparison to other Common Lisp interpre
296  about as fast as Spice Lisp on a PERQ.  about as fast as Spice Lisp on a PERQ.
297    
298  Tuning:  Tuning:
299     -- Tweaked GENSYM so that the CONCATENTATE is open-coded.
300     -- Tweaked WITH-ARRAY-DATA to test for (not (array-header-p )) instead of
301        (simple-array * (*)), since that's much faster.  This helps all functions
302        that accept non-simple arrays.
303     -- Transform MEMBER, DELETE and ASSOC to MEMQ, ASSQ and DELQ when possible.
304        Inline expand vector & list POSITION, vector FILL and list DELETE-IF.
305     -- Add some INDEX declarations in simple-string concatenate/replace
306        transforms.
307   -- made DIGIT-CHAR-P and DIGIT-WEIGHT maybe-inline.   -- made DIGIT-CHAR-P and DIGIT-WEIGHT maybe-inline.
308   -- Added declarations from efficiency notes in fd-stream, load, package,   -- Added declarations from efficiency notes in fd-stream, load, package,
309      reader, char and hash.      reader, char and hash.
# Line 284  Tuning: Line 327  Tuning:
327      FD-SET stuff to be efficiently compilable.      FD-SET stuff to be efficiently compilable.
328   -- Use an auxiliary function to make the condition for macro arg count   -- Use an auxiliary function to make the condition for macro arg count
329      errors to save space in macro definitions.      errors to save space in macro definitions.
330   -- Byte compile the expander functions for all macros except those in code/   -- Byte compile the expander functions for all macros except those in the
331      (those may come later.)      cold load.  Byte-compile various user-interface stuff like the debugger,
332        disassemble and structure print functions.  Byte-compile most Hemlock
333        commands.
334   -- Compile PCL's guts unsafe when #+SMALL.   -- Compile PCL's guts unsafe when #+SMALL.
  -- Byte-compile most Hemlock commands.  
335   -- Some gratuitous RANDOM tuning.  Random double floats are now much, much   -- Some gratuitous RANDOM tuning.  Random double floats are now much, much
336      faster. Added transforms for RANDOM to type-specific functions (which can      faster. Added transforms for RANDOM to type-specific functions (which can
337      then be inline-expanded).      then be inline-expanded).
# Line 331  Type tests: Line 375  Type tests:
375      of another type or the type is a supertype of the object's type.  The code      of another type or the type is a supertype of the object's type.  The code
376      is also somewhat smaller.      is also somewhat smaller.
377    
378  Redefinition:  Structure Redefinition:
379   -- Handing of structure redefinition is now much more comprehensive.   -- Handing of structure redefinition is now much more comprehensive.
380   -- Definitions are only considered incompatible when slots have moved or been   -- Definitions are only considered incompatible when slots have moved or been
381      added, slot types are changed to a type that is not a subtype of the old      added, slot types are changed to a type that is not a subtype of the old
# Line 349  Redefinition: Line 393  Redefinition:
393      is signalled when you load code that was compiled with a different      is signalled when you load code that was compiled with a different
394      structure definition than the one currently in effect.      structure definition than the one currently in effect.
395    
396  Internals:  Structure Internals:
397   -- VM:STRUCTURE-USAGE renamed to VM:INSTANCE-USAGE.  Internally, the structure   -- VM:STRUCTURE-USAGE renamed to VM:INSTANCE-USAGE.  Internally, the structure
398      type and accessors have also been renamed, e.g.      type and accessors have also been renamed, e.g.
399      STRUCTURE-REF => %INSTANCE-REF.      STRUCTURE-REF => %INSTANCE-REF.
# Line 366  The largest changes are: Line 410  The largest changes are:
410    
411  PCL notes:  PCL notes:
412    
413  This PCL fixes a number of problems that were introduced in the changeover to  The integration of PCL with the CMU CL type system has been substantially
414  the new structure format:  improved.  There are significant improvements in the speed of PCL generic
415   -- The Lisp type system is now integrated with PCL (even better than before.)  function dispatch of built-in and structure classes and TYPEP of PCL classes.
416   -- Structure-class slot-value now works again.  There should also be reduced run-time compilation (e.g. in the Motif
417    inspector) due to less use of non-precompiled dispatch functions.
418  Generic function dispatch should be significantly more efficient in this PCL,  
419  especially for built-in and structure classes.  There should also be reduced  The compiler now recognizes the PCL::CLASS declaration.  This clues the
420  run-time compilation (e.g. in the Motif inspector) due to less use of  compiler in on PCL's knowledge of types (due to being a specialized argument
421  non-precompiled dispatch functions.  TYPEP for PCL objects should be  to a method.)  CLOS class names are recognized as "real" types by the
422  faster, and type system integration should be fairly complete.  CLOS class  compiler, not SATISFIES DEFTYPES.  Note that LISP:CLASS is still not a PCL
423  names are recognized as "real" types by the compiler, not SATISFIES DEFTYPES.  class, so PCL needs to shadow CLASS and STANDARD-CLASS.
 Note that LISP:CLASS is still not a PCL class, so PCL needs to shadow CLASS  
 and STANDARD-CLASS.  
424    
425  Fixed the #< print function to flame out if *PRINT-READABLY* is true.  Fixed the #< print function to flame out if *PRINT-READABLY* is true.
426    
427  September-16-92-PCL-e has been incorporated into the CMUCL sources thanks  Supply missing :INITIAL-ELEMENT NIL in MAKE-ARRAY call which can result in a
428  to Rick Harris.  "0 is not a list" or "segment violation" error on redefining a class.
429    
430    September-16-92-PCL-e has been incorporated into the CMU CL sources thanks
431    to Rick Harris.  Merge fix to pessimization of GFs with many standard class
432    specializers but also some EQL or built-in class specializers.
433    
434  Graphical debugger/Motif toolkit:  Graphical debugger/Motif toolkit:
435    
# Line 448  Bug fixes: Line 494  Bug fixes:
494      breakpoint_do_displaced_inst.  That way the C code can do different things      breakpoint_do_displaced_inst.  That way the C code can do different things
495      on different machines (like use single stepping if available).      on different machines (like use single stepping if available).
496    
497    
498  Misc changes:  Misc changes:
499    
500  CLX:  CLX:
501      We are now distributing version R5.01 of the CLX X library.  Among other      We are now distributing version R5.01 of the CLX X library.  Among other
502      changes, this is supposed to support the cookie-based host authentication      changes, this is supposed to support the cookie-based host authentication
503      used by OpenWindows.      used by OpenWindows.  Now compiled with the :CLX-ANSI-COMMON-LISP feature.
504    
505    Pathnames:
506     -- Logical pathnames are now implemented and wildcard matching has been
507        generalized to make them useful.  Any namestring beginning with HOST:
508        (where HOST is a defined logical host) will be parsed as a logical
509        pathname.  If the prefix is not a defined logical host, it will be still
510        be parsed as a CMU CL "search list."
511     -- Pattern-matching on :WILD-INFERIORS is now implemented, but the
512        Unix code treats it pretty much like :WILD.
513     -- More error cases are detected in TRANSLATE-PATHNAME.
514     -- See new user's manual for CMU CL specific documentation.
515    
516  Stream internals:  Stream internals:
517   -- Deleted read-line methods.  For simplicity, this rather unimportant   -- Deleted read-line methods.  For simplicity, this rather unimportant
# Line 463  Stream internals: Line 521  Stream internals:
521      sure it won't block, you must guard it with a LISTEN.      sure it won't block, you must guard it with a LISTEN.
522    
523  Extensions:  Extensions:
524     -- Changed the stream arg to DISASSEMBLE to be a keyword to avoid optional &
525        keyword lossage.
526   -- Changed PROFILE:PROFILE argument count determination to parse the function   -- Changed PROFILE:PROFILE argument count determination to parse the function
527      type and look at it, instead of trying to fake it.  Among other things,      type and look at it, instead of trying to fake it.  Among other things,
528      this allows efficient profiling of functions with FTYPE declarations even      this allows efficient profiling of functions with FTYPE declarations even
529      when compilation policy has caused the function-object's type to be      when compilation policy has caused the function-object's type to be
530      dropped.      dropped.
531     -- Add :CALLERS option to PROFILE which records the most common callers
532        of each profiled function.
533     -- Add new "CPROFILE" package which does instruction-counting profiling with
534        the compiler's assistance.
535   -- Fixed DI:FUNCTION-DEBUG-FUNCTION to work on closures.   -- Fixed DI:FUNCTION-DEBUG-FUNCTION to work on closures.
536   -- Added EXT:DO-HASH.   -- Added EXT:DO-HASH.
537   -- User-defined hashtable tests are now supported.  There is a function   -- User-defined hashtable tests are now supported.  There is a function
# Line 482  Extensions: Line 546  Extensions:
546       - Removed (setf weak-pointer-value) and made make-weak-pointer itself the       - Removed (setf weak-pointer-value) and made make-weak-pointer itself the
547         compiler primitive in order to simplify the gengc port.         compiler primitive in order to simplify the gengc port.
548       - Added stuff to fake scavenger hooks in the non-gengc system.       - Added stuff to fake scavenger hooks in the non-gengc system.
549     -- Moved the RUN-PROGRAM fork/exec stuff into C, for ease in porting.
550    
551  Hemlock:  Hemlock:
552   -- In DELETE-BREAKPOINTS-BUFFER-HOOK, if no wire (server died), then   -- In DELETE-BREAKPOINTS-BUFFER-HOOK, if no wire (server died), then
553      don't do anything.      don't do anything.
554   -- Changed BEEP flashing to use SLEEP 0.1 instead of DISPLAY-FINISH-OUTPUT   -- Changed BEEP flashing to use SLEEP 0.1 instead of DISPLAY-FINISH-OUTPUT
555      because this was causing recursive entry of CLX.      because this was causing recursive entry of CLX.
556     -- Fixed from debugger edit command "can't edit source" message not
557        spuriously reinvoke the debugger when invoked from the command line.
558     -- Fix initialization of print-representation attribute so that characters
559        >127 don't cause text to mysteriously disappear.
560     -- Flush carefully-add-font-path call.  If people want library:fonts/ in
561        their font-path, they can put it there.  This should eliminate the Hemlock
562        initialization error which would happen when using X remotely.
563    
564    
565  Changed SAVE-LISP to no longer save the stacks.  Instead, when the core is  Changed SAVE-LISP to no longer save the stacks.  Instead, when the core is
566  restored, a (supplied) initial function is invoked which can do whatever kind  restored, a (supplied) initial function is invoked which can do whatever kind
# Line 506  assemble routine versions. Line 579  assemble routine versions.
579  Significant revamping of startup code (lisp now, not ldb.)  The new startup  Significant revamping of startup code (lisp now, not ldb.)  The new startup
580  code has better breakpoint support and improved portability.  code has better breakpoint support and improved portability.
581    
582  Added :cmu17 to the features list so that PCL can tell if it is in a  Added :CMU17 to the features list so that PCL can tell if it is in a
583  version 16 or a version 17 series core.  version 16 or a version 17 series core.
584    
585    

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.5