ViewVC logotype

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

Parent Directory Parent Directory | Revision Log Revision Log

Revision 1.17 - (hide annotations)
Fri Nov 4 07:11:23 1994 UTC (19 years, 5 months ago) by ram
Branch: MAIN
CVS Tags: sparc-tramp-assem-base, double-double-array-base, post-merge-intl-branch, release-19b-pre1, release-19b-pre2, merged-unicode-utf16-extfmt-2009-06-11, double-double-init-sparc-2, unicode-utf16-extfmt-2009-03-27, double-double-base, snapshot-2007-09, snapshot-2007-08, snapshot-2008-08, snapshot-2008-09, ppc_gencgc_snap_2006-01-06, sse2-packed-2008-11-12, snapshot-2008-05, snapshot-2008-06, snapshot-2008-07, snapshot-2007-05, snapshot-2008-01, snapshot-2008-02, snapshot-2008-03, intl-branch-working-2010-02-19-1000, snapshot-2006-11, snapshot-2006-10, double-double-init-sparc, snapshot-2006-12, unicode-string-buffer-impl-base, sse2-base, release-20b-pre1, release-20b-pre2, unicode-string-buffer-base, sse2-packed-base, sparc-tramp-assem-2010-07-19, amd64-dd-start, snapshot-2003-10, snapshot-2004-10, release-18e-base, release-19f-pre1, snapshot-2008-12, snapshot-2008-11, intl-2-branch-base, snapshot-2004-08, snapshot-2004-09, remove_negative_zero_not_zero, snapshot-2007-01, snapshot-2007-02, snapshot-2004-05, snapshot-2004-06, snapshot-2004-07, release-19e, release-19d, GIT-CONVERSION, double-double-init-ppc, release-19c, dynamic-extent-base, unicode-utf16-sync-2008-12, LINKAGE_TABLE, release-19c-base, cross-sol-x86-merged, label-2009-03-16, release-19f-base, PRE_LINKAGE_TABLE, merge-sse2-packed, mod-arith-base, sparc_gencgc_merge, merge-with-19f, snapshot-2004-12, snapshot-2004-11, intl-branch-working-2010-02-11-1000, unicode-snapshot-2009-05, unicode-snapshot-2009-06, amd64-merge-start, ppc_gencgc_snap_2005-12-17, double-double-init-%make-sparc, unicode-utf16-sync-2008-07, release-18e-pre2, unicode-utf16-sync-2008-09, unicode-utf16-extfmts-sync-2008-12, prm-before-macosx-merge-tag, cold-pcl-base, RELEASE_20b, snapshot-2008-04, snapshot-2003-11, snapshot-2005-07, unicode-utf16-sync-label-2009-03-16, RELEASE_19f, snapshot-2007-03, release-20a-base, cross-sol-x86-base, unicode-utf16-char-support-2009-03-26, unicode-utf16-char-support-2009-03-25, release-19a-base, unicode-utf16-extfmts-pre-sync-2008-11, snapshot-2008-10, sparc_gencgc, snapshot-2007-04, snapshot-2010-12, snapshot-2010-11, unicode-utf16-sync-2008-11, snapshot-2007-07, snapshot-2011-09, snapshot-2011-06, snapshot-2011-07, snapshot-2011-04, snapshot-2007-06, snapshot-2011-02, snapshot-2011-03, snapshot-2011-01, snapshot-2003-12, release-19a-pre1, release-19a-pre3, release-19a-pre2, pre-merge-intl-branch, release-19a, UNICODE-BASE, double-double-array-checkpoint, double-double-reader-checkpoint-1, release-19d-base, release-19e-pre1, double-double-irrat-end, release-19e-pre2, snapshot-2010-05, snapshot-2010-04, snapshot-2010-07, snapshot-2010-06, snapshot-2010-01, snapshot-2010-03, snapshot-2010-02, release-19d-pre2, release-19d-pre1, snapshot-2010-08, release-18e, double-double-init-checkpoint-1, double-double-reader-base, label-2009-03-25, snapshot-2005-03, release-19b-base, cross-sol-x86-2010-12-20, double-double-init-x86, sse2-checkpoint-2008-10-01, intl-branch-2010-03-18-1300, snapshot-2005-11, double-double-sparc-checkpoint-1, snapshot-2004-04, sse2-merge-with-2008-11, sse2-merge-with-2008-10, snapshot-2005-10, RELEASE_20a, snapshot-2005-12, release-20a-pre1, snapshot-2005-01, snapshot-2009-11, snapshot-2009-12, unicode-utf16-extfmt-2009-06-11, portable-clx-import-2009-06-16, unicode-utf16-string-support, release-19c-pre1, cross-sparc-branch-base, release-19e-base, intl-branch-base, double-double-irrat-start, snapshot-2005-06, snapshot-2005-05, snapshot-2005-04, ppc_gencgc_snap_2005-05-14, snapshot-2005-02, unicode-utf16-base, portable-clx-base, snapshot-2005-09, snapshot-2005-08, lisp-executable-base, snapshot-2009-08, snapshot-2007-12, snapshot-2007-10, snapshot-2007-11, snapshot-2009-02, snapshot-2009-01, snapshot-2009-07, snapshot-2009-05, snapshot-2009-04, snapshot-2006-02, snapshot-2006-03, release-18e-pre1, snapshot-2006-01, snapshot-2006-06, snapshot-2006-07, snapshot-2006-04, snapshot-2006-05, pre-telent-clx, snapshot-2006-08, snapshot-2006-09, HEAD
Branch point for: release-19b-branch, double-double-reader-branch, double-double-array-branch, mod-arith-branch, RELEASE-19F-BRANCH, portable-clx-branch, sparc_gencgc_branch, cross-sparc-branch, RELEASE-20B-BRANCH, unicode-string-buffer-branch, sparc-tramp-assem-branch, dynamic-extent, UNICODE-BRANCH, release-19d-branch, ppc_gencgc_branch, sse2-packed-branch, lisp-executable, RELEASE-20A-BRANCH, amd64-dd-branch, double-double-branch, unicode-string-buffer-impl-branch, intl-branch, release-18e-branch, cold-pcl, unicode-utf16-branch, cross-sol-x86-branch, release-19e-branch, sse2-branch, release-19a-branch, release-19c-branch, intl-2-branch, unicode-utf16-extfmt-branch
Changes since 1.16: +164 -1 lines
File MIME type: text/plain
Lock status: Locked ram
update for 17f.
1 ram 1.17 Release notes for CMU Common Lisp 17f, ?? November 94
3     17f contains bug fixes, PCL enhancements, and support for three new platforms:
4     Sun SPARC/Solaris
5     SGI MIPS/Iris (no load-foreign)
6     DEC Alpha/OSF1 (no Motif or load-foreign)
8     The HPPA/HPux and Sun/Sunos 4.x platforms are still available. Distributions
9     are now gzip'd, not compressed.
11     Other highlights: Motif, load-foreign on Hp/Ux, image size improvements, MIT
12     loop, some documentation of some previously undocumented features.
14     [Also see the README file for platform-specific notes.]
16     Bug fixes to basic CL support:
17     -- Fixed ADJUST-ARRAY to not flame out on arrays containing a zero-length
18     dimension (hence having no elements whatsoever.)
19     -- In SIGNAL, bind *break-on-signals* to NIL even before doing the type test
20     so that we don't wedge the error system if the type is malformed or
21     undefined.
22     -- Fixed bugs with EOF handling in READ-LINE.
23     -- In DEFINE-CONDITION, don't warn about probable error unless both initarg
24     and initform are missing.
25     -- In OPEN, fixed :direction :io :if-does-not-exist :create to actually
26     create.
27     -- Fix problem in LOAD-FOREIGN where (especially on SunOS), the failure to
28     page-align loaded code caused errors when load-foreign was done more than
29     once.
30     -- In OUTPUT-INSTANCE, check for the layout being invalid before calling the
31     print function, since the print function might error.
32     -- Closing composite streams (broadcast, etc.) no longer closes the component
33     streams.
34     -- Fixed pprint goof that didn't actually break anything, but wasted effort.
35     -- (COERCE x 'FLOAT) now convert to a single-float (instead of being an
36     error.) Also, we now check that numeric coercions actually return a value
37     of the specified type (which they might not if the type is not a symbol,
38     e.g. (coerce 0 '(complex float)). Possibly these should "do the right
39     thing", but it seems better to error than quietly do the wrong thing.
40     -- Fixed a bug in FLOAT-BIGNUM-RATIO that could cause an assertion failure
41     when floating particular bignum ratios (or possibly reading particular
42     float values.)
44     Miscellaneous enhancements:
45     -- LOOP is now the MIT/Symblics loop, so whatever it does is by definition
46     correct and The Right Thing.
47     -- PURIFY is now exported as EXT:PURIFY. This function can greatly improve
48     the GC performance of many large programs by moving code and static data
49     into non-collected storage. This is a "poor man's generational GC".
50     Environment compaction now done by purify.
51     -- Some reduction in the size of the image (and of GC scanned memory) from
52     tweaks to build process.
53     -- Binary input can now be done from string streams (from David Axmark.)
54     -- Debugger no longer aborts printing of a frame when printing one arg gets an
55     error (from Harris.)
56     -- LOAD-FOREIGN support for HP/Ux (from TSM.)
57     -- Add sap-ref-64 (only on Alpha).
58     -- Changes to EVAL, ROOM and site-init to work better in a runtime core image
59     (without the compiler loaded.)
60     -- *BEFORE-SAVE-INITIALIZATIONS* is now actually done before saving.
62     Compiler:
63     -- Fixed some problems with multiple values and cleanup code in byte
64     compilation. Also added EXT:*COMPILE-PROGRESS* printout.
65     -- Fixed some problems with internal errors when a function was just
66     declared to be FUNCTION.
67     -- Now allows stream args to compile-file and doesn't attempt to constant-fold
68     pathname functions (which depend on *default-pathname-defaults*.)
69     -- Fixed a case where dead local function in top-level code could cause an
70     internal error.
71     -- Fix compiler-macro expansion to correctly handle macros that pass (by
72     returning the unmodified form.)
73     -- Fix spelling of :COMPILE-TOPLEVEL and :LOAD-TOPLEVEL in EVAL-WHEN.
74     -- If compile-file is :block-compile T, the entire file is block-compiled as a
75     unit (even if it contains embedded START-BLOCK/END-BLOCK declarations.)
76     -- Virtually all of the compiler is now compiled without type checking, giving
77     some space and speed benefit.
79     CLX:
80     -- Merged with CLX R5.02 (no substantive changes).
81     -- In read-resources, trim off spaces, tabs, and "'s in #include file name
82     -- If CLX is compiled when PCL is loaded (as is now done in the binary
83     distribution), DRAWABLE, WINDOW and PIXMAP will be defined as PCL classes
84     (which can be subclasses.) This is compatible with various CLX-based
85     toolkits.
86     -- Fix some CONS declarations to be LIST because they aren't conses on the
87     last iteration (when the body isn't executed.)
88     -- Fix incorrect slot type declaration for DISPLAY-AUTHORIZATION-DATA.
89     -- Changed holding-lock not to turn off GC, which could cause event handlers
90     and other code to run for ling periods of time without garbage collecting.
91     Instead we bind all the GC hooks to (), since it was their invocation that
92     could cause bad recursive entry of CLX.
94     Hemlock:
95     -- Fixed problem in Hemlock recursive error handler (hadn't been properly
96     updated for ANSI conditions.)
97     -- Add ignore handler for client-message events.
98     -- Deleted some setting of hi::*hack-hunk-replace-line* to T, since we may
99     want it explicitly disabled in the init file.
100     -- Dylan mode now infix-oriented.
102     Motif interface:
103     -- Fixed a bug in the generation of Interface.h which was preventing motifd
104     from being successfully compiled on HP/Ux, Solaris, ...
105     -- use pcl::precompile-random-code-segments to minimize run-time compilations.
106     -- Add INVOKE-TTY-DEBUGGER. Don't try to invoke motif debugger if we didn't
107     succeed in opening a connection.
108     -- Print warning in status hook when server dies.
109     -- Made server to fflush after all output so that we see motifd output
110     when it is run on a pipe.
111     -- Fixed severely broken INSPECT-CLOS-PANE according to patch from Marco
112     Antoniotti.
113     -- Fix from Marco Antoniotti to actually remove handlers from the table in
114     remove-event-handler.
115     -- Fix to TOOLKIT-WRITE-VALUE to allow it to write either signed or unsigned
116     word integers.
117     -- Improved error recovery and internal error reporting.
119     PCL:
120     -- Structure-object is now no longer shadowed in PCL. Code that was using
121     PCL::STRUCTURE-OBJECT will now work better.
122     -- BUILT-IN-CLASS, CLASS-NAME, CLASS-OF and FIND-CLASS are once again exported
123     from PCL. This will cause a name conflict if anyone use-package's PCL, but
124     this will at least warn about the distinction. Probably you shouldn't
125     USE-PACKAGE PCL for this reason, but you can now say PCL:FIND-CLASS instead
126     of PCL::FIND-CLASS. It is also possible to use SHADOW or SHADOWING-IMPORT
127     to resolve the conflict.
128     -- Fix to update-instance-for-different-class.
129     -- When updating arg-info slots, check to see if the value is already there.
130     This can reduce non-shared pages.
131     -- Improved handling of invalid structure instances.
132     -- Fix a problem with PCL clobbering byte functions when setting their names.
133     -- New parameterized version of use-dispatch-dfun-p which avoids pessimizing
134     GFs with many methods.
135     -- Fix to :after methods on accessor functions. Also, fixed some problems
136     with the result of get-secondary-dispatch-function1 when there are no
137     methods.
138     -- Add compiler-macro for pcl:find-class which does lookup at load-time
139     when the name is a constant.
140     -- Definitive tweak for handling function-p in
141     compute-secondary-dispatch-function1 which avoids an infinite recursion.
142     -- When signalling an incompatible superclass error, added a hint to the
143     message to check out VALIDATE-SUPERCLASSES.
145     Lisp code:
146     -- Fixed Sparc GC bug fix (L2 never scavenged.)
147     -- On all non-Mach platforms, changed the default for CMUCLLIB to be
148     /usr/local/lib/cmucl/lib.
149     -- On SunOS, added "dynamic segments" patch which prevents the "out of
150     segments" errors that could happen when a Lisp memory management table
151     overflowed.
153     Build tools:
154     -- Fix compilation of motif interface to actually generate the C header files
155     Interface.h, etc.
156     -- Some changes to reduce compiler warnings
157     -- In compile-all, -clean and -noupdate have been flushed. -clean is now
158     done by the clean-build script.
159     -- Add some scripts from David Axmark that automate the entire build process:
160     tools/variant-lisp
161     tools/build-and-install
164     Release notes for CMU Common Lisp 17e, 11 March 94
165 ram 1.15
166 ram 1.16 17e is primarily a bug-fix release. This release is also available on
167     Hewlett-Packard 700-series workstations running HP/UX version 9.x.
168     The main missing feature on HP/UX is LOAD-FOREIGN.
169 ram 1.15
173     Enhancements:
174     -- The function EXT:PURIFY is now exported. This was formerly only
175     documented as usable via the :PURIFY argument to SAVE-LISP. Great
176     improvements in GC runtime and memory use can be obtained when PURIFY is
177     called after loading in large amounts of code or creating large
178     datastructures that are unlikely to become garbage.
179     -- EXT:PURIFY (and thus (EXT:SAVE-LISP ... :PURIFY T) now compact the
180     hashtables representing the global namespace. Formerly this feature was
181     undocumented and only used during the initial system build.
182     -- There is now a "runtime" version of the Lisp image which omits the
183     compiler and loads some other code byte compiled, giving a 60% size
184     reduction. See README file, "Runtime distribution" section.
185     -- Changed the byte-function and byte-closure funcallable-instances to use
186     &more args instead of a &rest arg (eliminating the main source of
187     grautitous consing in byte code.)
188     -- Allow pretty-printer to work without compiler loaded.
189     -- Improved (and thus changed) the SXHASH of lists and other composite
190     objects.
191     -- Added to *FEATURES* all of the ANSI CL features that seemed plausible.
192     Any non-ANSI compliance is now a bug, not a feature...
193     -- Picked up Miles' changes to apropos and apropos-list that allows one to
194     supply NIL for the package, meaning all packages.
196     Bug fixes:
197 ram 1.16 -- In SIGNAL, bind *break-on-signals* to NIL even before doing the type test
198     so that we don't wedge the error system if the type is malformed or
199     undefined.
200 ram 1.15 -- Fix arg ordering for GETF in new condition support. Default the name
201     slot in DEFMACRO-LAMBDA-LIST-BIND-ERRORS to NIL (instead of leaving it
202     unbound.)
203     -- In READ-N-BYTES, only signal EOF when we read and got 0 bytes, not
204     whenever read returns less than we wanted. Also, fix the case of small
205     reads with an empty buffer not to leave garbled buffer pointers if we have
206     to do more than one read. These bugs mostly affect the X interface and
207     its users (Garnet was having problems.)
208     -- Changed YES-OR-NO-P and Y-OR-N-P to force output.
209     -- Fixed COUNT :TEST-NOT to actually negate the test.
210     -- Fixed COERCE to call type-expand so that people can coerce to deftypes.
211     -- Rename STEP to DEBUG::SET-STEP-BREAKPOINT because step is supposed to be
212     the exported step macro, not some internal routine.
213     -- Fixed DEFPACKAGE to combine multiple use, export, and import options
214     correctly. Fixed the warning about no longer using some packages to
215     actually work.
216     -- Fixed GCD to correctly handle MOST-NEGATIVE-FIXNUM.
217     -- Flush Hemlock font change hack in default site-init.lisp, since it was
218     causing problems.
220     CLOS (PCL):
221     -- Add some hacks for coercing lisp:class objects to pcl:class.
223     -- Fix some problems with the LISP:CLASS class-precedence-list suddenly
224     becoming empty when a class is redefined.
225     -- Fixed SIMPLE-STRING to list STRING in the inherits list.
226 ram 1.16 -- Fix to update-instance-for-different-class.
227 ram 1.15
229     COMPILER:
231     Enhancements:
232     -- Added a type inference method for LOG's result type.
233     -- Added support for "more args" which are like rest args, but don't cons.
234     This is used for calling into annd out of byte-compiled core and in the
235     PROFILE package.
236     -- Increase *inline-expansion-limit* from 50 to 200. Change "inline
237     expansion count exceeded" warning to be a note. Don't inline expand in
238     interpreted code.
240     Bug fixes:
241 ram 1.16 -- Allow stream arg to compile-file.
242     -- Changed assert-definition-type to quietly ignore non function-types.
243     -- Allow stream arg to compile-file.
244     -- Deleted incorrect type declaration in process-1-ftype-proclamation.
245     Deleted test for function-type-p around call to assert-definition-type,
246     since this is now folded into the function. Previously several calls
247     weren't doing this necessary check.
248 ram 1.15 -- Fix a problem where spurious argument types could be inferred for optional
249     arguments in byte-compiled code (caused yes-or-no-p to fail.)
250     -- Fixed an internal error related to tail local calls.
251     -- Fixed assertion failure about COMPONENT-NEW-FUNCTIONS with some inline
252     expansions.
253     -- Fixed (TYPEP X '(REAL ...)) to actually test against REAL, not NUMBER.
254     -- Fixed a problem where top-level MULTIPLE-VALUE-CALL forms could cause an
255     assertion falure.
256     -- Don't try to compile flow-graph components that are unreachable. This
257     avoids some internal errors when unreachable local functions are
258     deleted.
259     -- Fix problem with byte-compiling PROGV getting an internal compiler error.
264     Misc extensions:
265     -- Added an executable-only optional to EXT:UNIX-NAMESTRING so that we can
266     expand path:foo into the first executable in the path named foo, not just
267     the first file
268     -- Changed RUN-PROGRAM to only try to run executables, and to flame out if it
269     can't be found in path:.
270     -- Profile: use &more instead of &rest to avoid consing the &rest arg list.
271     Fixed PROFILE:REPORT-TIME to not choke if any of the function names are
272     not symbols (e.g. setf functions).
274 ram 1.16 [NOTE: Motif server doesn't work on HP yet.]
275 ram 1.15 Motif interface:
276     -- Added an optional STYLE arg to the graphical inspector to make the
277     function consistent with its doc string (as well as the old inspector).
278     -- Tried to make starting the Motif server more robust, or at least give some
279     intelligible error message.
280     -- Added some extra protection against recursive invocation of the windowing
281     debugger.
282 ram 1.16 -- Don't try to invoke motif debugger if we didn't succeed in opening a
283     connection.
284     -- Print warning in status hook when server dies.
285     -- Made server fflush after all output so that we see output when it is run
286     on a pipe.
287 ram 1.15
288     Hemlock:
289     -- Add window-buffer-hook for echo area buffer to make absolutely sure we
290     can't change the eacho area window to point to another buffer.
291     -- Give a sensible error message if we can't find the slave utility (e.g.
292     lisp) to run.
293     -- Restored the behavior of scribe-file to cd to the directory of the .mss
294     file before running scribe.
295     -- Change default fonts to be courier, flushing all mention of 8x13.
296     Remove font-setting in default site-init file, since it was causing
297     problems.
298     -- Add FILE-POSITION method for region streams so that the compiler's read
299     error recovery works for "Editor Compile Defun", etc.
300     -- When reading a file, set BUFFER-WRITABLE to T before doing anything so
301     that we don't get spurious read-only errors.
304 ram 1.14 Release notes for CMU Common Lisp 17c, 19 September 93
305 ram 1.12
306 ram 1.14 17c is a new major release of CMU Common Lisp. An overview of changes:
307 ram 1.12 -- New structure object representation and class support in the type system.
308     -- PCL better integrated with CMU type system.
309     -- New CLX, PCL.
310     -- Numerous ANSI changes.
311     -- Byte-code compilation option offers more compact code.
312     -- Improvements in compiler source-level optimization, inline expansion and
313     instruction scheduling.
314     -- New fasl file format (you must recompile.)
315     -- Calling of SETF functions is now efficient.
316     -- Speed and space tuning in the compiler and runtime system.
317     -- New TTY debugger commands support stepping compiled code.
318     -- A graphical debugger and inspector based on a Motif interface.
319     -- Changes in the startup code and SAVE-LISP increase portability.
320 ram 1.14 -- Preliminary support for the HP Precision Architecture under HP-UX 9.0
321     (i.e. for HP 700 series.)
322     -- New User's manual. Note that the online Info document has not been
323     updated yet.
325 ram 1.12 And of course, bug fixes...
327     Basic runtime code changes:
329     ANSI cleanups:
330 ram 1.14 -- These functions are now defined:
336     -- The conditions FLOATING-POINT-INEXACT,
338     defined.
339     -- Logical pathnames are now implemented. (See "pathnames" below and the
340     user's manual.)
341     -- Allow :UNSPECIFIC and :WILD in all pathname slots where they should be
342     legal; don't always use a :MULTI-CHAR-WILD pattern.
343     -- Support for :COMPILE-TOP-LEVEL, :LOAD-TOP-LEVEL and :EXECUTE keywords to
344     EVAL-WHEN.
345 ram 1.12 -- #S readed no longer forces keywords into the keyword package.
346     -- Various changes to DEFSTRUCT described below.
347     -- IN-PACKAGE now prints a warning if any arguments other than the package
348     name are supplied and signals a correctable error if the package doesn't
349     exist yet.
350     -- DEFPACKAGE now tells you about inconsistencies between any existing package
351     and the DEFPACKAGE form.
352     -- Packages:
353 ram 1.14 - DELETE-PACKAGE function added according to X3J13/92 specification.
354 ram 1.12 Most operations on deleted packages signal an error.
355     - Changed IN-PACKAGE to conform to the new definition. But if you use an
356     old-style IN-PACKAGE, it will use the old behavior.
357     - Rewrote DEFPACKAGE to tell you about inconsistencies between the
358     package and the DEFPACKAGE form.
359     -- Conditions:
360 ram 1.14 - Changed conditions to be non-structure (but also non-PCL) instances
361     that support multiple inheritance and the other required CLOS
362     operations. Removed SIMPLE-CONDITION hacks for simulating multiple
363     inheritance.
364     - DEFINE-CONDITION now corresponds to proposed ANSI CL, which is a subset
365     of DEFINE-CLASS syntax and is incompatible with the earlier KMP syntax.
366     Note that in particular, :INITARG and :READER options are now
367     effectively required on every slot.
368 ram 1.12 - SIMPLE-CONDITION-FORMAT-STRING renamed to
371     macro. This provides a way to say that restarts are relevant only to a
372     certain condition.
373 ram 1.14 - Added STYLE-WARNING and PARSE-ERROR conditions.
374 ram 1.12 - Added report method for END-OF-FILE and changed system code to signal
375     it.
376     - Added PRINT-NOT-READABLE condition and made people use it.
377     -- Remove some spurious LISP package exports, and add missing ones.
378 ram 1.14 Delete package setup for optional subsystems (hemlock, etc.)
379 ram 1.12 -- Renamed SPECIAL-FORM-P to SPECIAL-OPERATOR-P.
381     DEFINE-SETF-METHOD to DEFINE-SETF-EXPANDER. The old names are still
382     defined for CLtL1 compatability.
383     -- Added degenerate versions of STREAM-EXTERNAL-FORMAT,
384     FILE-STRING-LENGTH and the :EXTERNAL-FORMAT argument to OPEN.
385     -- Hash-table code largely rewritten. MAKE-HASH-TABLE now conforms to
386     the X3J13 spec. Hash-tables can now be dumped as constants in fasl files.
388     Bug fixes:
389     -- Made the "modules:" search-list (used by REQUIRE) default to the current
390     directory.
391     -- Do a BOUNDP check so that references to undefined types inside of a
392     WITH-COMPILATION-UNIT but outside of the compiler won't cause
393     undefined-variable errors.
394     -- Set up a default for modules: search-list.
395     -- Changed BACKQ-UNPARSE to check for improper lists instead of getting an
396 ram 1.14 internal error. Some meaningless backq forms will now pprint as:
397     "### illegal dotted backquote form ###".
398 ram 1.12 -- Added SIMPLE-STYLE-WARNING, and spiffed up the simple-condition hacks so
399     that (typep x 'simple-condition) works.
400     -- In LOAD-FOREIGN, use unix-namestring on each file before passing it to the
401     linker to get rid of search lists.
402     -- Fixed the printer to stop at the fill pointer for strings with fill
403     pointers.
404 ram 1.14 -- Fixed PPRINT-DO to not flame out if one of the binding lists is NIL.
405 ram 1.12 -- Fixed load to not always consider files with NIL type to be source files.
406     If the file exists as specified, then look at the header instead of trying
407     to default the type. If :CONTENTS is specified, then don't try defaulting
408     types.
409     -- Fixed FORMAT-EXP-AUX to correctly handle variable width fields when the
410     argument is negative.
411     -- Use ~C instead of ~A when printing float exponent marker so that
412     *PRINT-READABLY* doesn't mess things up.
413     -- Fixed CLEAR-INPUT on file descriptor streams to flush any unread chars.
414     -- Now that +0.0 and -0.0 are no longer EQL, fixed ATAN to deal with them
415     correctly.
416     -- Changed SAVE-LISP to pad the core file out to CORE_PAGESIZE bytes, so that
417     when we mmap it back it, we won't get bus errors if the real page size is
418     less then the CORE_PAGESIZE.
419     -- Really really fixed GET-SETF-METHOD-MULTIPLE-VALUE for local macros. Also,
420     in the recursive calls, people were not propagating the environment
421     through, and in some places were not recursing with the multiple-value
422     version.
423     -- Fixed FLOAT to float ratios precisely by using integer division instead of
424     float division. This fixes a problem where a bit or two was lost on
425     READing floats.
426 ram 1.14 -- In the Alien type= method for FUNCTION, call ALIEN-TYPE-= instead of
427     calling ALIEN-TYPE-P with two args. [Fix from Mike Clarkson.]
428 ram 1.12
429     Compiler changes:
431     Enhancements:
432 ram 1.14 -- If the argument to compile-file is already absolute, then don't bother
433     expanding it into the TRUENAME. This allows search-lists or logical
434     pathnames to be preserved in the defined-from info (for DESCRIBE, "Edit
435     Definition", etc.)
436     -- Signal a compile-time error for division by constant 0.
437 ram 1.12 -- Replaced the FORMAT transform with one that uses FORMATTER for more
438     complete handling of format directives. This is only enabled when
439     speed > space.
440     -- Compilation to a dense byte-code is now supported, see below.
441     -- Semantic analysis/optimization of function calls has been revamped so that
442     optimizations are done more consistently, especially when the call is a
443     funcall.
444     -- A new approach is now taken to inline expansion, allowing inlining to be
445     done in more cases. In particular:
446     - local functions from LABELS or block compilation can now be inlined,
447     - global function definitions made inside of a local macro or special
448     declaration can now be inlined.
449     Inline expansion is now divided into two separate parts:
450     - Semi-inline expansion introduces a local definition of a global
451     function that has an expansion available. This is now exactly
452     equivalent to block-compiling together with that DEFUN.
453     - Local call analysis introduces new copies of locally defined INLINE
454     functions. This duplication is limited by EXT:*INLINE-EXPANSION-LIMIT*
455     (default 50) to prevent indefinite expansion of recursive functions.
456     This limit may need to be increased for compilations containing many
457     legit inline expansions in order for all calls to be inlined.
458     -- SETF functions are now better supported. Calling a compile-time constant
459     SETF function is now just as efficient as calling a function named by a
460     symbol. This is done by resolving function names to "fdefinition objects"
461     at load time. SYMBOL-FUNCTION of a non-constant symbol is now somewhat
462     slower, since the fdefinition must be located by a table lookup.
463     -- Assembler and disassembler have been reimplemented yet again, giving
464     improved portability and scheduling.
465     -- Assembly optimization is now enabled, giving large speed/space improvements
466     on MIPS and some on SPARC. This optimization is done when speed >
467     compilation-speed (i.e. not by default) since it significantly slows
468     compilation.
469     -- [mips] Lots of tweeks in order to use NIL and 0 directly from the
470     registers holding them instead of copying them into a new register and
471     then using it.
472     -- New funcallable-instance support (for PCL, etc.) Now funcallable instance
473     functions must be specially compiled, which is indicated by creating them
475     -- Moved assumed-type recording of unknown function calls from the beginning
476     of IR1 to the end so that we have the best type information about the
477     arguments.
478     -- Generalized the static-mumble-offset routines to also consider nil a
479     static symbol at offset 0.
481     ANSI changes:
482     -- Make compiler error functions use the condition system. This ANSI cleanup
483     has two advantages:
484     1] compiler-warning and warn are now equivalent, so uses of WARN will be
485     counted in the warning total and given source context.
486     2] user handlers can be defined to notice or suppress output.
487     -- Made DYNAMIC-EXTENT declaration recognized & ignored.
488     -- Allow non-keyword keyword names when the &key keyword is specified
489     separately. In FUNCTION and VALUES types, allow non-keyword symbols; you
490     must now explicitly the ":" in order to get the usual keyword naming.
491     -- Compiler-macros are now supported. See DEFINE-COMPILER-MACRO.
492     -- Minor tweeks to conform to X3J13 cleanup MACRO-DECLARATIONS:MAKE-EXPLICIT.
493     -- Fixed SYMBOL-MACROLET to allow declarations as per X3J13 cleanup SYMBOL-
494     MACROLET-DECLARE:ALLOW. When declaring things about symbol macros, type
495     declarations just wrap (the type ...) around the expansion, special
496     declarations signal an error, and ignore/ignorable declarations are
497     ignored.
499     Tuning:
500 ram 1.14 -- Tuning based on instruction-counting profiling of the compiler --- added
501     missing declarations, etc. This also motivated some general
502     array/sequence optimizations (see below.)
503 ram 1.12 -- Added block compilation declarations. Moved some stuff around to get
504     better locality.
505     -- Changed IR1-ERROR-BAILOUT to do fewer special bindings.
506     -- Inline expand some simple utility functions.
507     -- Some changes to increase the sharing among some of the automatically
508     generated functions in the compiler backend.
510     Bug fixes:
511     -- [sparc,mips] Fixed a bug in default-unknown-values where it wouldn't
512     default the first unsupplied value to nil if more then 6 values where
513     supplied.
514     -- Structure slot accessors are no longer constant-folded, because that was
515     causing problems with some MAKE-LOAD-FORM hacks.
516 ram 1.14 -- Fixed numeric type inference to realize that contagion causes the result
518 ram 1.12 -- In FINALIZE-XEP-DEFINITION, if not the current global definition, just
519     leave the defined type alone, instead of clobbering it with FUNCTION. A
520     benefit of this is that COMPILE doesn't trash the function type.
521     -- Don't run the back-end(s) on components with no code.
522     -- Don't compile load-time-value lambdas if they've already been compiled
523     because they ended up in a non-top-level component. Also, the function
524     holding a load-time-value form also has a more sensible debug name.
525     -- Fixed a problem with ASSERT-DEFINITION-TYPE when we have a keyword arg
526     with a non-constant default.
527     -- Fixed several uses of FIND to use EQUAL instead of EQL to compare function
528     names, because (SETF mumble) is now a valid function name, and isn't
529     necessarily EQL.
530     -- Bind *GENSYM-COUNTER* around compilation that it doesn't get side
531     effected.
532     -- Fixed a bug in type inference which seems to have generally prevented
533     anything from being inferred about function result types.
534     -- Fixed several bugs related to the handling of "assignment" local functions
535     (that correspond to a tail-recursive loop.)
536     -- Added a hack to IF-IF optimization to hopefully prevent some spurious
537     unreachable code notes.
538     -- Fixed call to CONTINUATION-DERIVED-TYPE to be CONTINUATION-TYPE so that we
539     don't choke on values types in the functional position.
540     -- Fixed the handling of +/- 0.0:
541     - = is no longer converted to EQL, but is directly handled by the backend.
542     - EQL is converted into a raw comparison of the bits.
543 ram 1.14 -- Fixed several bugs which caused fatal compile-time errors.
544 ram 1.12 -- Fixed LET* to correctly use the internal policy (not the interface policy)
545     for all bindings, not just the first.
546     -- In local call VOPs, must load CALLEE-NFP with MAYBE-LOAD-STACK-TN, since it
547     might not be in a register.
548     -- When iterating over the lamdba-calls in unconverting tail calls, have
549     to ignore any deleted lambda.
550     -- Fixed listify-rest-arg. It was leaving a tagged pointer to unallocated
551     memory in a descriptor register, which would confuse the garbage collector
552     if this value was still around.
553     -- Compile and dump package manipulation forms before evaluating them, so
554     they are dumped with respect to the state of the package system before the
555     form was read, not after.
557     Sparc:
558     -- New pseudo-atomic speeds allocation.
559     -- Added checking for integer division by zero.
561     Mips:
562     -- Changed generic-= and generic-/= to not assume that EQ implies =,
563     because it doesn't in the case of NaNs.
564     -- Major rewrite of many things. Merged mumble-immediate SCs into the
565     immediate SC. Wrote several vops to use :constant arg types better.
566     Rewrote all the type testing stuff. New pseudo-atomic, allocators now
567     inline.
568     -- Fixed UNBIND-TO-HERE to not dereference past the end of the binding stack.
569     -- Changed to load the function from static-function-offset relative to NIL
570     instead of computing the symbol and then loading the function.
571     -- Added Miles' change to use JALI instead of LI/JR now that it exists.
572     -- Fixed a lifetime bug in full call. This only showed up if there were
573     either a variable number or > 6 arguments and the caller was large enough
574     that the compute-lra-from-code couldn't be done in one instruction.
576     Byte compilation:
578     Byte compilation reduces the size of the Lisp process by allowing rarely used
579 ram 1.14 functions to be compiled more compactly. In comparison with 16f, the basic
580     system image is about 20% smaller. The full system with Hemlock CLX, etc., is
581     also 19% smaller even though it contains new code (the Motif interface) because
582     a larger fraction of the extra systems are byte compiled.
583 ram 1.12
584 ram 1.14
585 ram 1.12 Byte compilation overview:
587     The decision to byte-compile or native compile can be done on a per-file or
588     per-code-object basis. COMPILE-FILE now has a :BYTE-COMPILE argument. If T,
589     we byte-compile everything and create a machine-independent fasl file
590     (dependent only on byte order, file type "bytef" or "lbytef".)
591     If :MAYBE (the default, from EXT:*BYTE-COMPILE-DEFAULT*), things are
592     byte-compiled when speed = 0 and debug <= 1. Top-level forms are byte-compiled
593     by default (controlled by ext:*byte-compile-top-level*.)
595     Byte compilation is roughly twice as fast native compilation. Byte compiled
596     code runs 50x--200x slower than native code, and is 6x more dense. This is
597     about 10x faster than the IR1 interpreter, which is itself considered fast in
598     comparison to other Common Lisp interpreters. Historical perspective: this is
599     about as fast as Spice Lisp on a PERQ.
601     Tuning:
602 ram 1.14 -- Tweaked GENSYM so that the CONCATENTATE is open-coded.
603     -- Tweaked WITH-ARRAY-DATA to test for (not (array-header-p )) instead of
604     (simple-array * (*)), since that's much faster. This helps all functions
605     that accept non-simple arrays.
606     -- Transform MEMBER, DELETE and ASSOC to MEMQ, ASSQ and DELQ when possible.
607     Inline expand vector & list POSITION, vector FILL and list DELETE-IF.
608     -- Add some INDEX declarations in simple-string concatenate/replace
609     transforms.
610 ram 1.12 -- made DIGIT-CHAR-P and DIGIT-WEIGHT maybe-inline.
611     -- Added declarations from efficiency notes in fd-stream, load, package,
612     reader, char and hash.
613     -- Revived the support for FAST-READ-CHAR and the STREAM-IN-BUFFER, which
614     allows READ-CHAR and READ-BYTE to be done with 0 function calls rather than
615     2.
616     -- Because of above two changes, both the reader and the fasloader are now
617     significantly faster (reader 2x.)
618     -- Default (non-frozen) structure type tests are now significantly faster (no
619     function calls), and somewhat smaller. This and the reader improvement
620     have sped up the compiler somewhat.
621     -- Many debug-info and compiler data structures are now annotated as pure,
622     alloing them to be put in read-only space. This reduces the amound of
623     stuff in static space, speeding GC.
624     -- Real-valued hash-table parameters (rehash-threshold etc.) are
625     canonicalized to single-floats.
626     -- Replaced ISQRT with a much faster version off the net.
627     -- serve-event now uses UNIX-FAST-SELECT, so it can can handle >32 file
628     descriptors and is more efficient.
629     -- Changed UNIX-FAST-SELECT to a macro so that it can be efficient. Changed
630     FD-SET stuff to be efficiently compilable.
631     -- Use an auxiliary function to make the condition for macro arg count
632     errors to save space in macro definitions.
633 ram 1.14 -- Byte compile the expander functions for all macros except those in the
634     cold load. Byte-compile various user-interface stuff like the debugger,
635     disassemble and structure print functions. Byte-compile most Hemlock
636     commands.
637 ram 1.12 -- Compile PCL's guts unsafe when #+SMALL.
638     -- Some gratuitous RANDOM tuning. Random double floats are now much, much
639     faster. Added transforms for RANDOM to type-specific functions (which can
640     then be inline-expanded).
642     DEFSTRUCT and classes:
644     The structure representation has been changed to point directly to a type
645     descriptor rather than to the symbol type name. This allows faster type tests
646     and better GC support. Also, structure redefinition is now much more
647     conservative; formerly, many cases where code was compiled using differing
648     versions of the same structure were quietly ignored or resulted in strange
649     behavior. Raw allocation of typed slots dramatically increase the efficiency
650     of float-valued slots. Much of DEFSTRUCT has been rewritten, and is now
651     believed to be ANSI complaint.
653     ANSI changes:
654     -- Default defstruct keyword constructors can no longer reference argument
655     values in slot init forms. BOA constructors can still do this, so defining
656     a BOA constructor with all keyword args will have the old effect.
657     -- Class objects are now implemented, see FIND-CLASS, CLASS-NAME, TYPEP,
658     CLASS-OF. TYPE-OF is now based on CLASS-OF, and returns slightly different
659     results than before.
660     -- STRUCTURE-CLASSes now exist. See also the STRUCTURE-OBJECT type.
661     -- BUILT-IN-CLASSes also exist. In some cases CLASS-OF (legally) returns
662     non-standard subclasses of the standard class, e.g. for a float vector, the
664     now DEFTYPEs.
666     Bug fix:
667     -- Typed structures now have the correct (though rather odd) semantics of
668     :offset and :named when inclusion is done.
670     Raw slots:
671     -- Structure slots of subtypes of SINGLE-FLOAT, DOUBLE-FLOAT and
672     (UNSIGNED-BYTE 32) are now allocated in non-descriptor storage, and can be
673     read/written without number-consing overhead.
675     Type tests:
676 ram 1.13 -- The default (non-frozen) structure type predicate is now significantly
677 ram 1.12 faster (no function call) in the case where the argument is a structure
678     of another type or the type is a supertype of the object's type. The code
679     is also somewhat smaller.
681 ram 1.14 Structure Redefinition:
682 ram 1.12 -- Handing of structure redefinition is now much more comprehensive.
683     -- Definitions are only considered incompatible when slots have moved or been
684     added, slot types are changed to a type that is not a subtype of the old
685     type, or the inheritance structure has changed. Previously any change at
686     all would produce a warning.
687 ram 1.13 -- When a change is incompatible, the default restart (CONTINUE) invalidates
688     old instances, constructors and predicate uses. When speed <= safety, a
689 ram 1.12 LAYOUT-INVALID error will be signalled when obsolete instances are passed
690     to a type test (e.g. for type checking.) Use of old code on new instances
691     or old instances when speed > safety > 0 will result in type errors.
692     Other restarts allow you to ignore the redefinition or to clobber the
693 ram 1.13 existing information, preserving the old code (in case the change is
694     actually compatible.)
695 ram 1.12 -- If the structure length or inheritance structure has changed, an error
696     is signalled when you load code that was compiled with a different
697     structure definition than the one currently in effect.
699 ram 1.14 Structure Internals:
700 ram 1.12 -- VM:STRUCTURE-USAGE renamed to VM:INSTANCE-USAGE. Internally, the structure
701     type and accessors have also been renamed, e.g.
703     -- The non-standard STRUCTURE type has become has become EXT:INSTANCE. To
704     (portably) test whether something is really a structure object, do
707     PCL:
708     The largest changes are:
709     -- PCL port revamped to re-integrate PCL classes with the type system and to
710     more efficiently dispatch on structure and built-in types. Some
711     miscellaneous tuning. CLOS symbols are now exported from the LISP package,
712     so you don't need to USE-PACKAGE PCL anymore.
714     PCL notes:
716 ram 1.14 The integration of PCL with the CMU CL type system has been substantially
717     improved. There are significant improvements in the speed of PCL generic
718     function dispatch of built-in and structure classes and TYPEP of PCL classes.
719     There should also be reduced run-time compilation (e.g. in the Motif
720     inspector) due to less use of non-precompiled dispatch functions.
721 ram 1.12
722 ram 1.14 The compiler now recognizes the PCL::CLASS declaration. This clues the
723     compiler in on PCL's knowledge of types (due to being a specialized argument
724     to a method.) CLOS class names are recognized as "real" types by the
725     compiler, not SATISFIES DEFTYPES. Note that LISP:CLASS is still not a PCL
726     class, so PCL needs to shadow CLASS and STANDARD-CLASS.
727 ram 1.12
728     Fixed the #< print function to flame out if *PRINT-READABLY* is true.
730 ram 1.14 Supply missing :INITIAL-ELEMENT NIL in MAKE-ARRAY call which can result in a
731     "0 is not a list" or "segment violation" error on redefining a class.
732 ram 1.12
733 ram 1.14 September-16-92-PCL-e has been incorporated into the CMU CL sources thanks
734     to Rick Harris. Merge fix to pessimization of GFs with many standard class
735     specializers but also some EQL or built-in class specializers.
737 ram 1.12 Graphical debugger/Motif toolkit:
739     We have implemented a new interface to Motif which is functionally similar to
740     CLM, but works better in CMU CL. See:
741     doc/motif-toolkit.doc
742     doc/motif-internals.doc
744     This motif interface has been used to write a new inspector and graphical
745     debugger. There is also a Lisp control panel with a simple file management
746     facility, apropos and inspector dialogs, and controls for setting global
747     options.
749     Call INTERFACE:LISP-CONTROL-PANEL to create the control panel. When
750     INTERFACE:*INTERFACE-STYLE* is :GRAPHICS (the default) and the DISPLAY
751     environment variable is defined, the graphical inspector and debugger will be
752     invoked by INSPECT or when an error is signalled. Possible values are
753     :GRAPHICS and :TTY. If the value is :GRAPHICS, but there is no X display,
754     then we quietly use the TTY interface.
756     Debugger:
758     The command-line debugger now implements the breakpoint and step commands
759     described in the manual:
760     LIST-LOCATIONS [{function | :c}] list the locations for breakpoints.
761     Specify :c for the current frame. Abbreviation: LL
762     LIST-BREAKPOINTS list the active breakpoints.
763     Abbreviations: LB, LBP
764     DELETE-BREAKPOINT [n] remove breakpoint n or all breakpoints.
765     Abbreviations: DEL, DBP
766     BREAKPOINT {n | :end | :start} [:break form] [:function function]
767     [{:print form}*] [:condition form] set a breakpoint.
768     Abbreviations: BR, BP
769     STEP [n] step to the next location or step n times.
771     These commands provide a degree of support for stepping and setting
772     breakpoints inside compiled functions. The variables
774     verbosity of LIST-LOCATIONS.
776     Enhancements:
777     -- Changed PRINT-FRAME-CALL to print the source if verbosity >= 2 and
778     the source is available.
779     -- Changed source location printing to cache information so that it is much
780     faster when many locations in the same function are printed. The source
781     file is now only printed when the file changes from one printing to the
782     next.
784     Bug fixes:
785     -- Added explicit error checking to the debugger so that we don't get an
786     internal error (bus error in unsafe code, etc.) when attempting to display
787     source from a file that has been excessively modified.
788     -- Bind *BREAK-ON-SIGNALS* to NIL when we call BREAK in SIGNAL so that the
789     debugger doesn't recurse on itself.
790     -- Changed HANDLE-BREAKPOINT in the debugger to allow breakpoints that nobody
791     wants. This can happen if a function-end breakpoint was deactivated while
792     the function was on the stack, because there is no way to convert the
793     bogus-lra back into the real lra.
794     -- Fixed COMPUTE-CALLING-FRAME to not try using %CODE-DEBUG-INFO on
795     things that arn't code components.
796     -- Instead of doing after breakpoints in Lisp, use the new C function
797     breakpoint_do_displaced_inst. That way the C code can do different things
798     on different machines (like use single stepping if available).
800 ram 1.14
801 ram 1.12 Misc changes:
803     CLX:
804     We are now distributing version R5.01 of the CLX X library. Among other
805     changes, this is supposed to support the cookie-based host authentication
806 ram 1.14 used by OpenWindows. Now compiled with the :CLX-ANSI-COMMON-LISP feature.
807 ram 1.12
808 ram 1.14 Pathnames:
809     -- Logical pathnames are now implemented and wildcard matching has been
810     generalized to make them useful. Any namestring beginning with HOST:
811     (where HOST is a defined logical host) will be parsed as a logical
812     pathname. If the prefix is not a defined logical host, it will be still
813     be parsed as a CMU CL "search list."
814     -- Pattern-matching on :WILD-INFERIORS is now implemented, but the
815     Unix code treats it pretty much like :WILD.
816     -- More error cases are detected in TRANSLATE-PATHNAME.
817     -- See new user's manual for CMU CL specific documentation.
819 ram 1.12 Stream internals:
820     -- Deleted read-line methods. For simplicity, this rather unimportant
821     operation is now implemented using read-char.
822     -- READ-N-BYTES eof-error-p nil is now mostly non-blocking (it only reads what
823     is in the buffer, or what unix-read returns if the buffer is empty.) To be
824     sure it won't block, you must guard it with a LISTEN.
826     Extensions:
827 ram 1.14 -- Changed the stream arg to DISASSEMBLE to be a keyword to avoid optional &
828     keyword lossage.
829 ram 1.12 -- Changed PROFILE:PROFILE argument count determination to parse the function
830     type and look at it, instead of trying to fake it. Among other things,
831     this allows efficient profiling of functions with FTYPE declarations even
832     when compilation policy has caused the function-object's type to be
833     dropped.
834 ram 1.14 -- Add :CALLERS option to PROFILE which records the most common callers
835     of each profiled function.
836     -- Add new "CPROFILE" package which does instruction-counting profiling with
837     the compiler's assistance.
838 ram 1.12 -- Fixed DI:FUNCTION-DEBUG-FUNCTION to work on closures.
839     -- Added EXT:DO-HASH.
840     -- User-defined hashtable tests are now supported. There is a function
841     DEFINE-HASH-TABLE-TEST that takes three arguments: the symbol name of the
842     hash table test, the test function, and the hash function. It updates
843     *hash-table-tests*, which is now internal. The test function takes two
844     objects and returns true iff they are the same. The hash function takes
845     one object and returns two values: the (positive fixnum) hash value and
846     true if the hashing depends on pointer values and will have to be redone if
847     the object moves.
848     -- Added weak hash-table support.
849     - Removed (setf weak-pointer-value) and made make-weak-pointer itself the
850     compiler primitive in order to simplify the gengc port.
851     - Added stuff to fake scavenger hooks in the non-gengc system.
852 ram 1.14 -- Moved the RUN-PROGRAM fork/exec stuff into C, for ease in porting.
853 ram 1.12
854     Hemlock:
855     -- In DELETE-BREAKPOINTS-BUFFER-HOOK, if no wire (server died), then
856     don't do anything.
857     -- Changed BEEP flashing to use SLEEP 0.1 instead of DISPLAY-FINISH-OUTPUT
858     because this was causing recursive entry of CLX.
859 ram 1.14 -- Fixed from debugger edit command "can't edit source" message not
860     spuriously reinvoke the debugger when invoked from the command line.
861     -- Fix initialization of print-representation attribute so that characters
862     >127 don't cause text to mysteriously disappear.
863     -- Flush carefully-add-font-path call. If people want library:fonts/ in
864     their font-path, they can put it there. This should eliminate the Hemlock
865     initialization error which would happen when using X remotely.
867 ram 1.12
868     Changed SAVE-LISP to no longer save the stacks. Instead, when the core is
869     restored, a (supplied) initial function is invoked which can do whatever kind
870     of setup it wants. This makes a saved lisp totally independent of the
871     location of the C stack, and eliminates the "environment too big" error that
872     happened in some SUNOS environments. A consequence of this is that calling
873     SAVE-LISP terminates the currently running Lisp.
875     SunOS/SPARC:
876     Changed software-version to use /usr/bin/uname instead of stringing the
877     kernel.
879     Removed the load of bit-bash, because we don't want to have to support the
880     assemble routine versions.
882     Significant revamping of startup code (lisp now, not ldb.) The new startup
883     code has better breakpoint support and improved portability.
885 ram 1.14 Added :CMU17 to the features list so that PCL can tell if it is in a
886 ram 1.12 version 16 or a version 17 series core.
889 ram 1.11 Release notes for CMU Common Lisp 16f, 11 December 92
891     The changes between 16e and 16f are almost exclusively bug-fixes. When we
892     announce a version 17 beta, 16f will probably become the default release
893     (replacing 15e). The PCL has been upgraded from "March 92 (2a)" to
894     "March 92 (2c)", which provides some bug-fixes; also, all of the patches in
895     the March-92-PCL-bugs file have been applied.
897     Enhancements:
898     -- PROVIDE & REQUIRE are now back in the system, since proposed ANSI CL has
899     reinstated them as deprecated features. See the doc strings for these
900     functions and EXT:DEFMODULE.
901     -- The SPARC dynamic heap size limit has been doubled from 64meg to 128meg.
903     Pretty printer:
904     -- Fixed a bug in pprint-let that caused to to barf on (let (nil) ...).
905     -- Fixed pprint-lambda-list to print a space before the dot when the tail of
906     the lambda list is shared. In other words, print (foo . #1=(bar baz))
907     instead of (foo. #1=(bar baz)).
908     -- Added an additional use of ~^ in pprint-flet so that (flet (nil) ...)
909     doesn't flame out.
910     -- Make pretty printer properly process pprint tabs when output is forced.
911     -- In format pprint logical blocks, fixed ~^ to act like
912     PPRINT-EXIT-IF-LIST-EXHAUSTED instead of blowing out to some containing
913     directive.
915     Compiler:
916     -- Fixed compiler internal error with dead-code deletion of top-level code.
917     -- Bind *gensym-counter* instead of setting it so that compiling doesn't
918     globally reset the gensym counter.
919     -- Fixed problem with interpreted LOAD-TIME-VALUE causing undefined function
920     VALUE-CELL-REF errors.
921     -- Preserve the arglist in interpreted functions for DESCRIBE, etc.
922     -- Gag bound-but-not-referenced warnings when the EXT:INHIBIT-WARNINGS
923     optimize quality is 3.
924     -- Fixed a problem with register allocation conflict analysis which appeared
925     when a function was called with ~>= 50 arguments.
926     -- Fixed bug with optimization of tail local calls.
927     -- Fixed interpreted PROCLAIM/DECLAIM to ignore
928     START-BLOCK, END-BLOCK and declared DECLARATION declarations.
929     Changed the unrecognized proclamation error to be a warning.
930     -- Fixed float heap allocation to not wedge when the store causes a trap
931     (SPARC only.)
933     Trace:
934     -- Added pretty-printer directives so that arg lists and results print better.
935     -- Fixed UNTRACE not to flame out when untracing untraced functions.
936     -- Fixed bug with redefining function traced with encapsulation (e.g.
937     interpreted functions.
939     Misc bug fixes:
940     -- Fixed I/O timeout handling (e.g. for CLX) to correctly borrow from the
941     timeout seconds when computing the new value for the timeout microseconds.
942     -- Restored proper (prompt) handling of queued CLX events in SERVE-EVENT
943     -- Alien enums always take up an int to be compatable with C. Also,
944     sort the from-alist so that enum aliens are unparsed in a canonical
945     format.
946     -- When doing macro destructuring, check to see if some part of a lambda-list
947     is a LIST before checking to see if it is a SYMBOL, because we want NIL to
948     act like the empty list, and not an attempt to bind NIL.
949     -- Fixed PACKAGE-ERROR to have a PACKAGE slot instead of a PATHNAME slot.
950     -- Changed DOLIST not to introduce the spurious let around the result form
951     when there is no result form. Also, just read the var in the spurious
952     let, instead of using IGNORABLE, since the var might be special.
953     -- In complex DEFSETF, don't bother creating temp vars for constants. This
954     is necessary so that keywords stay keywords, and are not changed to
955     gensyms.
957     Enhancements:
958     -- Changed the backquote expanded functions (backq-list, ...) from being
959     inline functions to compiler-macros, since although the optimizer does
960     eventually get the right code, it has to work awful hard. Changed BREAK
961     to accept a condition as well as a format string.
962     -- Exported EXT:CONNECT-TO-UNIX-SOCKET and EXT:CREATE-UNIX-SOCKET, which had
963     been forgotten before. Added code to CONNECT-TO-UNIX-SOCKET so that Unix
964     domain sockets are available for connecting to other processes.
965     -- Removed sys:*task-data* and sys:*task-notify* because they aren't used
966     even under Mach.
970 ram 1.10 Release notes for CMU Common Lisp 16e, 5 August 92
972     16e is primarily a bug-fix release. The main changes from 16d are:
973     -- CLOS support is from March 92 PCL (2a). This is a new version of PCL
974     developed by Richard Harris which incorporates many bug-fixes and ANSI
975     compliance cleanups. He has also back-merged the CMU changes into his
976     sources so that we can release future PCLs without time-consuming merging.
977 ram 1.11 On the downside, there are a couple of new bugs (discrimination on
978     pcl::structure-object doesn't always work; generic functions which contain
979     methods which discriminate on both null and list sometimes do not work).
980     Patches for these bugs are available in March-92-PCL-bugs in the CMU CL
981     release area and by anonymous ftp from host parcftp.xerox.com
982     (, in the directory pub/pcl/.
983 ram 1.10 -- TRACE has been reimplemented, has a new syntax and new features.
984     -- The hardcopy and info documentation has been updated. Note that it
985     describes some debugger capabilities (breakpoints) which won't appear
986     until version 17.
988     The fasl file format is the same as for 16d, but some code may need to be
989     recompiled. In particular, the expansion of PPRINT-LOGICAL-BLOCK has changed.
992     March 92 PCL highlights: (see notes.text in the sources for details)
993     -- This version of PCL is much closer than previous versions of PCL to the
994     metaobject protocol specified in "The Art of the Metaobject Protocol",
995     chapters 5 and 6, by Gregor Kiczales, Jim des Riveres, and Daniel G.
996     Bobrow.
997     -- You can use structure-class as a metaclass to create new classes.
998     Classes created this way create and evaluate defstruct forms which
999     have generated symbols for the structure accessors and constructor.
1000     -- Various optimization of instance variable access, both inside and outside
1001     of methods.
1002     -- More work (lookups and precompilation) is done at compile and load time,
1003     rather than run-time.
1006     New TRACE:
1008     Trace has been substantially rewritten, and has a new syntax as well as new
1009     functionality:
1010     -- Tracing of compiled functions is now implemented using breakpoints.
1011     Breakpoints destructively modify the code object, causing all calls to the
1012     function to be trapped, instead of only those calls that indirect through
1013     the symbol. This makes TRACE more useful for debugging programs that use
1014     data structures containing function values, since you can now trace
1015     anonymous functions and macros. Also, the breakpoint stops the function
1016     after the arguments have been parsed, so arguments can accessed by name in
1017     the debugger or in TRACE options.
1018     -- Depending on the ENCAPSULATE option and DEBUG:*TRACE-ENCAPSULATE-DEFAULT*,
1019     encapsulation may be used instead. This is the default for closures,
1020     generic functions and interpreted functions.
1021     -- TRACE options are no longer set off by extra parens, and you can specify
1022     global trace options which affect all functions traced by a particular
1023     call to TRACE.
1024     -- Conditional breakpoints now work much better than before.
1025     -- *DEBUG-PRINT-LEVEL*, -LENGTH* are used instead of a separate
1026     *TRACE-PRINT-LEVEL*, etc.
1028     Here is the documentation string (see also the hardcopy/info documentation):
1029     TRACE {Option Global-Value}* {Name {Option Value}*}*
1030     TRACE is a debugging tool that prints information when specified functions
1031     are called. In its simplest form:
1032     (trace Name-1 Name-2 ...)
1034     TRACE causes a printout on *TRACE-OUTPUT* each time that one of the named
1035     functions is entered or returns (the Names are not evaluated.) The output
1036     is indented according to the number of pending traced calls, and this trace
1037     depth is printed at the beginning of each line of output.
1039     Options allow modification of the default behavior. Each option is a pair
1040     of an option keyword and a value form. Options may be interspersed with
1041     function names. Options only affect tracing of the function whose name they
1042     appear immediately after. Global options are specified before the first
1043     name, and affect all functions traced by a given use of TRACE.
1045     The following options are defined:
1047     :CONDITION Form
1048     :CONDITION-AFTER Form
1049     :CONDITION-ALL Form
1050     If :CONDITION is specified, then TRACE does nothing unless Form
1051     evaluates to true at the time of the call. :CONDITION-AFTER is
1052     similar, but suppresses the initial printout, and is tested when the
1053     function returns. :CONDITION-ALL tries both before and after.
1055     :WHEREIN Names
1056     If specified, Names is a function name or list of names. TRACE does
1057     nothing unless a call to one of those functions encloses the call to
1058     this function (i.e. it would appear in a backtrace.) Anonymous
1059     functions have string names like "DEFUN FOO".
1061     :BREAK Form
1062     :BREAK-AFTER Form
1063     :BREAK-ALL Form
1064     If specified, and Form evaluates to true, then the debugger is invoked
1065     at the start of the function, at the end of the function, or both,
1066     according to the respective option.
1068     :PRINT Form
1069     :PRINT-AFTER Form
1070     :PRINT-ALL Form
1071     In addition to the usual prinout, he result of evaluating Form is
1072     printed at the start of the function, at the end of the function, or
1073     both, according to the respective option. Multiple print options cause
1074     multiple values to be printed.
1076     :FUNCTION Function-Form
1077     This is a not really an option, but rather another way of specifying
1078     what function to trace. The Function-Form is evaluated immediately,
1079     and the resulting function is traced.
1082     If T, the tracing is done via encapsulation (redefining the function
1083     name) rather than by modifying the function. :DEFAULT is the default,
1084     and means to use encapsulation for interpreted functions and funcallable
1085     instances, breakpoints otherwise. When encapsulation is used, forms are
1086     *not* evaluated in the function's lexical environment, but DEBUG:ARG can
1087     still be used.
1089     :CONDITION, :BREAK and :PRINT forms are evaluated in the lexical environment
1090     of the called function; DEBUG:VAR and DEBUG:ARG can be used. The -AFTER and
1091     -ALL forms are evaluated in the null environment.
1094     Assorted bug fixes and enhancements:
1096     System code:
1097     -- Changed default base file name for LOAD-FOREIGN to be argv[0] rather than
1098     being hard-wired to "lisp".
1099     -- Fixed a bad declaration which caused garbage collection to fail if more
1100     than MOST-POSITIVE-FIXNUM bytes had been consed since process creation.
1101     -- Changed GET-INTERNAL-RUN-TIME to use UNIX-FAST-GETRUSAGE to avoid
1102     number-consing and generic arithmetic. Also, rearranged the computation
1103     so that the time is correctly computed for up to 457 days, instead of only
1104     71 minutes.
1105     -- Merged Miles' fix to MAKE-PATHNAME so that it knows the difference between
1106     an arg being NIL and being unsupplied.
1107     -- Some partial fixes to circular printing (the #1=#1# bug).
1108     PPRINT-LOGICAL-BLOCK no longer checks the list argument for CAR
1109     circularity, now that OUTPUT-OBJECT does it for us.
1110     -- Fixed reader dispatch macro characters to be case-insensitive, and to
1111     disallow digits as sub-characters.
1112     -- Changed #A reader to allow arbitrary sequences instead of just lists.
1113     -- RUN-PROGRAM now gives a proper error message when "fork" fails (i.e. too
1114 ram 1.11 many processes.)
1115     -- Fixed a bug in initialization of saved cores which caused the old
1116     environment to be left on the end of EXT:*ENVIRONMENT-LIST*. One symptom
1117     was that RUN-PROGRAM would run programs with strange environment values
1118     based on those in effect at the time the core was saved. In particular,
1119     Lisp subprocesses (i.e. Hemlock slaves) might get the wrong value of
1120     CMUCLLIB, which caused the slave to die before connecting.
1121 ram 1.10 -- SYSTEM:SERVE-EVENT (and XLIB:EVENT-CASE, etc.) now correctly handle
1122     non-integer timeouts. Added declarations to improve the efficiency of
1123     event handling.
1124     -- Fixed some bugs in UNIX-SELECT which could cause Lisp to hang when more
1125     than 32 files were open. Also, improved efficiency in this case.
1126     -- Merged Olssons fix to WITH-ENABLED-INTERRUPTS to not try to change
1127     interrupt characters anymore.
1128     -- A number of bug-fixes for breakpoint support in compiled code (but there
1129     are still problems with arbitrary breakpoints.)
1130     -- Fixed DI:FRAME-CATCHES
1132     CLX:
1133     -- Fixed the implementation-dependent pixarray copying routines (for
1134     GET-IMAGE, etc.) so that they don't occasionally trash memory, and are
1135     actually faster.
1136     -- Fixed the definition of the ANGLE type (used by DRAW-ARC, etc.) to work
1137     regardless of the kind of real number (single or double float, rational,
1138     etc.)
1139     -- Fixed several places in image operations where values that could really
1140     be negative were declared to be non-negative.
1142     Compiler:
1143     -- Fixed a bug which caused an internal error whenever a call to random
1144     was compiled and the argument type wasn't known to be either a float or
1145     an integer.
1146     -- Fixed a bug which caused an internal compiler error when a value that
1147     wasn't used had an unproven type assertion.
1148     -- Fixed some more dead-code deletion bugs.
1149     -- Fixed a problem with the new "assignment" optimization of local function
1150     call where the compiler could get assertion failures such as tail-sets not
1151     being equal.
1152     -- Fixed a few places where reoptimization wasn't being triggered when it
1153     should have been.
1154     -- You can now have a TAGBODY with more than one tag that is non-locally
1155     exited to. Evidently this never worked...
1156     -- Some changes in debug-info format related to breakpoint support.
1158     Misc:
1159     -- Fixed some Hemlock Dired commands to know that PATHNAME-DIRECTORY is
1160     now a list, not a vector.
1161     -- Fixed the bin/sample-wrapper script to use "$@" instead of $* so that
1162     arguments are properly passed through.
1165 ram 1.9 Release notes for CMU Common Lisp 16d, 30 May 92
1166 ram 1.5
1167 ram 1.8 16d is our first version 16 general release, and incorporates many changes not
1168     present in the 15 series. It is currently fairly close to our current
1169     internal development (alpha) systems, and is thus less stable. The major
1170     changes are:
1171     New Aliens
1172     New pathnames
1173     New pretty printer
1174     New format
1175     R5.0 CLX.
1176     5/1/90 May Day PCL (REV 4b)
1177     Revised manual
1178 ram 1.5
1179 ram 1.8 The fasl file format is nominally compatible with version 15, but the pathname
1180     change affects any pathname constants in fasl files, which includes the
1181     defined-from information present in every fasl file. It is probably a good
1182     idea to recompile everything.
1183 ram 1.7
1184 ram 1.8 CLX and Hemlock are now optional. When CMU CL is installed, the maintainer can
1185     elect not to load CLX and Hemlock -- this saves 7 megabytes of disk and
1186     improves memory usage somewhat. See the installation section of the README
1187     file for details.
1188 ram 1.5
1189 ram 1.8 The ``CMU Common Lisp User's Manual'' has been updated to be more helpful for
1190     non-CMU users. The new manual also documents the new Alien facility for
1191     foreign function calls and data structure access. The manual is now formatted
1192     with Mike Clarkson's LaTeXinfo package, so a consistent version of the
1193     documentation is available online in Gnu info format. See `doc/cmu-user.ps'
1194     and `doc/cmu-user.info'.
1196 ram 1.5
1197 ram 1.8 General system code:
1198 ram 1.3
1199 ram 1.8 ANSI cleanups:
1200     -- ANSI Compiler macros are now implemented: see COMPILER-MACRO-FUNCTION,
1202     -- Fixed things that invoke *MACROEXPAND-HOOK* to coerce it to a function
1203     before calling it.
1204     -- Fixed MACRO-FUNCTION to take an environment argument.
1205     -- SYMBOL-MACROLET now accepts declarations.
1206     -- SHADOW now accepts strings in addition to symbols.
1208     -- IGNORABLE is now in the LISP package instead of the EXT package.
1209     -- ADJUST-ARRAY has been updated to allow adjusting of arrays which were
1210     not created with :adjustable non-nil to be adjusted to new dimensions.
1211     -- ADJUSTABLE-ARRAY-P has been updated correspondingly. It returns T if
1212     adjust ADJUST-ARRAY would return an EQ array.
1213     -- The BASE-CHARACTER type has been renamed to BASE-CHAR.
1214     -- The REAL type and REALP function are now implemented.
1215     -- Changed the default structure printer to print slot names as keywords
1216     instead of unqualified symbols.
1217 ram 1.3
1218 ram 1.8 Enhancements:
1219     -- Added MAYBE-INLINE declaration for GET, PUT, etc., so that these
1220     functions can be inline expanded according to the compilation policy.
1221     -- Added some type declarations so that GET-INTERNAL-REAL-TIME doesn't cons.
1222     -- Process the command line before printing the herald so that we can eval
1223     some form and quit without printing anything.
1224     -- SET now protects against setting T, NIL, and keywords. (SETF
1225     SYMBOL-FUNCTION) now expands into FSET, which protects against defining
1226     NIL.
1227     -- Substantially rearranged function describing to make it more consistent,
1228     and added support for describing interpreted functions.
1229     -- PURIFY is now called multiple times during system building to improve
1230     locality.
1231     -- (EVAL-WHEN (EVAL) ...) is now actually eval'ed.
1232 ram 1.3
1233     Bug fixes:
1234 ram 1.8 -- Fixed bug in NTH-VALUE where it expanded into bogus code unless ``n'' was
1235     a constant integer.
1236     -- Fixed FMAKUNBOUND to return the symbol instead of T.
1237     -- Allocate memory as executable so that the OS knows to maintain cache
1238     consistency.
1239     -- Changed DESCRIBE to allow T or NIL as the stream argument.
1240 ram 1.3
1241 ram 1.8 Load enhancements and cleanups:
1242     -- The initial value of *LOAD-VERBOSE* is now T. Additionally, LOAD no
1243     longer always binds *LOAD-VERBOSE* and *LOAD-PRINT*. Now it only
1244     binds them when :VERBOSE or :PRINT are explicity supplied. Therefore, you
1245     can set either of these in your init file and it will take effect.
1246     -- Normally when *LOAD-VERBOSE* is T, only the file name is printed.
1247     Formerly, the loaded stream was always printed, whereas now a stream is
1248     printed only when the stream is not a file stream.
1249     -- Added ANSI features *LOAD-TRUENAME*, *LOAD-PATHNAME* and *LOAD-PRINT*.
1250     -- As per ANSI, bind *READTABLE* to itself to make assignments file-local.
1251     -- Added new variables EXT:*SOURCE-FILE-TYPES* and EXT:*OBJECT-FILE-TYPES*.
1252     When no file type is specified, LOAD tries the types in these lists to
1253     locate the source and object files. LOAD now recognizes source types "l",
1254     "cl" and "lsp" in addition to "lisp".
1255     -- The compiler OPTIMIZE policy is now bound during load, so proclamations in
1256     a file don't leave the global policy clobbered when the load is finished.
1257     -- Changed the :IF-SOURCE-NEWER option to signal an error and use restarts,
1258     rather than PROMPT-FOR-Y-OR-N. Fixed the load source case to actually
1259     load the source, rather than loading the object as a source file...
1260     -- Changed load to deal with source files having NIL type more reasonably.
1261     -- If a wild pathname is given to LOAD, all files matched will be loaded.
1262     -- Proceeding from nonexistent file errors has been improved. It is no longer
1263     assumed that missing files are always source files. Added condition
1264     restarts for missing files.
1265     -- Improved formatting of error and warning messages.
1266 ram 1.3
1268 ram 1.8 Garbage collection:
1269     -- Changed the minimal ROOM output to include all easily computed information
1270     including whether GC is disabled. The verbose ROOM now conses less.
1271     -- Removed the :ENABLE-GC SAVE-LISP option, as it's no longer needed.
1272     Garbage collection is now correctly enabled in cores which have been saved
1273     and then restarted.
1274     -- Added EXT:BYTES-CONSED-BETWEEN-GCS, a function that returns (and sets when
1275     used with setf) *BYTES-CONSED-BETWEEN-GCS*. Additionally, it changes
1276     *GC-TRIGGER* immediately to reflect the new values of *bytes-consed...*.
1277     -- TIME now displays the GC run-time.
1278     -- Added EXT:*GC-RUN-TIME* with accumulates the INTERNAL-RUN-TIME spent doing
1279     garbage collection. Added declarations to make EXT:GET-BYTES-CONSED more
1280     efficient.
1281     -- The top-level REP loop now zeros the unused non-zero portion of the
1282     control stack to discourage spurious garbage retention.
1283     -- The garbage collector now closes open file streams when it reclaims them.
1284 ram 1.3
1286 ram 1.8 Packages:
1287     -- The LISP and USER packages have been renamed to COMMON-LISP and
1288     COMMON-LISP-USER. LISP and USER are nicknames, so they can still be used.
1289     -- The LISP package namespace has been cleaned up somewhat. For example,
1290     *DESCRIBE-PRINT-LEVEL* is no longer exported from LISP.
1291     -- The Mach/Unix division in the package system has been clarified a great
1292     deal. Unix specific features have been moved from the MACH package to the
1293     UNIX package. Mach specific features have been left in (or moved to) the
1294     MACH package. For example, all standard Unix syscalls are related
1295     definitions are un UNIX, whereas vm_statistics remains in MACH and GR-CALL
1296     has been moved to MACH.
1297 ram 1.3
1298 ram 1.8 SETF cleanups:
1299     -- Changed GET-SETF-METHOD-MULTIPLE-VALUE to try to macroexpand-1 the form
1300     when it's an atom in case it's a symbol-macro as per the X3J13 cleanup
1301     SYMBOL-MACROLET-SEMANTICS:SPECIAL-FORM. Now you can safely INCF, etc.
1302     symbol macros where the macroexpansion has side effects.
1303     -- Fixed SETF of GETF to evaluate the various parts in the correct order as
1305     -- X3J13 cleanup SETF-MULTIPLE-STORE-VARIABLES:
1306     Extend the semantics of the macros SETF, PSETF, SHIFTF, ROTATEF, and
1307     ASSERT to allow "places" whose SETF methods have more than one "store
1308     variable". In such cases, the macros accept as many values from the
1309     newvalue form as there are store variables. As usual, extra values
1310     are ignored and missing values default to NIL.
1311     -- Extended the long form of DEFSETF to allow the specification of more
1312     than one "store variable", with the obvious semantics.
1313     -- GET-SETF-METHOD signals an error if there would be more than one
1314     store-variable.
1315 ram 1.3
1316 ram 1.8
1317     Printer:
1318 ram 1.3
1319 ram 1.8 Almost all of the printing code has been rewritten/restructured to support
1320     all of the printing features added to the language. Some highlights:
1321     -- *PRINT-READABLY* is now supported.
1322     -- *PRINT-CIRCLE* works irrespective of *PRINT-PRETTY*. Note: the default
1323     structure printer currently does not work when *PRINT-CIRCLE* is true: you
1324     get #1=#1#.
1325     -- *PRINT-LEVEL* abbreviation now works automatically inside structure
1326     printers.
1327     -- XP has been replaced with a native pretty printer that is fully
1328     integrated with the rest of the system. This Supports the ANSI
1329     pretty-printing interface instead of the old Waters XP interface. Existing
1330     uses of the old interface will need to be updated to use the new names.
1331     -- The pretty-printer now unparses backquote forms on printing. To retain
1332     this information, the backqoute read macro no longer expands into LIST,
1333     CONS, etc. Internal functions are used instead.
1335     been added.
1336     -- All new format. Supports the FORMATTER macro and all the pretty-printing
1337     directives. FORMAT has extended to accept a function as the format control
1338     (as an alternative to a string.)
1339     -- Added support for READTABLE-CASE in symbol printing. Printing when
1340     *PRINT-CASE* is :CAPITALIZE and *PRINT-ESCAPE* is NIL is now slightly
1341     different than before. Added some missing array type declarations in
1342     symbol printing.
1343 ram 1.3
1344     Bug fixes:
1345 ram 1.8 -- Fixed a bug which caused some float printing format directives to
1346     infinitely loop when a fixed-width field overflowed.
1347     -- Specify stream when printing unbound marker.
1348     -- Fixed FORMAT to override printer control variables when printing float
1349     exponents so that they are always printed in decimal, etc.
1350 ram 1.3
1351 ram 1.8
1352     Reader:
1353 ram 1.3
1354 ram 1.8 ANSI Cleanups:
1355     -- *READ-EVAL* is now supported. If a #. is encountered while *READ-EVAL*
1356     is NIL (default T), an error is signaled. This intended to allow
1357     ``secure'' READ-based command interfaces to be written.
1358     -- READTABLE-CASE is now supported.
1359     -- The reader now signals the correct type of error when things go wrong
1360     instead of always signaling a simple-error.
1361     -- Changed the return value of SET-SYNTAX-FROM-CHAR from NIL to T as per X3J13
1362     cleanup RETURN-VALUES-UNSPECIFIED:SPECIFY. [Hard to believe nobody has
1363     complained about not conforming to this one.]
1364 ram 1.3
1365     Bug fixes:
1366 ram 1.8 -- Fixes to several bugs with respect to #+, #-. In particular, stacked
1367     conditionals like "#+foo #-bar baz" now work
1368     -- #n= and #n# now detect more error conditions and work on structures.
1369     -- # is now a non-terminating macro character, so foo#bar is read as a
1370     symbol.
1371     -- Added Ted's changes to make INTERNAL-READ-EXTENDED-TOKEN work when there
1372     are `|' escapes. The main significance of this is that #+nil '|foo;bar|
1373     and #:|foobar| now work properly. Also changed this function to recognize
1374     unquoted colons so that #:foo:bar will error, but not #:foo\:bar.
1375 ram 1.3
1376 ram 1.8 Enhancement:
1377     -- Export new variable *ignore-extra-close-parentheses* if true (the default),
1378     extra close parens are only a warning, not an error. Previously unmatched
1379     close parens were quietly ignored.
1380 ram 1.3
1382 ram 1.8 Pathnames:
1383 ram 1.2
1384 ram 1.8 This release supports all the new CltL2 pathname features except for logical
1385     pathnames. Following is an overview of the new pathname support.
1386 ram 1.2
1387 ram 1.8 Programs that actually conform to the CLtL1 pathname spec will have very few
1388     problems. However, the CLtL1 spec was extremely vague, and CMU CL did not
1389     make use of much of the allowed flexibility, so many technically non-portable
1390     programs previously worked under CMU CL.
1391 ram 1.2
1392 ram 1.8 The main incompatible changes from CLtL1 to CLtL2:
1393     -- Symbols are no longer acceptable filenames.
1394     -- PATHNAME-HOST may be any object.
1395     -- :UNSPECIFIC is now a legal pathname component.
1396     -- MERGE-PATHNAMES now recognizes relative pathnames and treats them
1397     specially.
1398 ram 1.2
1399 ram 1.8 The format of directories is now specified (to be a list in a certain format.)
1400     This required an incompatible change from the previous practice of using a
1401     vector PATHNAME-DIRECTORY and using "DEFAULT" or :ABSOLUTE in the
1402     PATHNAME-DEVICE to indicate relative and absolute pathnames.
1403 ram 1.2
1404 ram 1.8 In a related change, the CMU SEARCH-LIST extension was changed so that the
1405     search-list now appears in the PATHNAME-DIRECTORY as:
1406     (:ABSOLUTE #<Search-list "name"> ...)
1407 ram 1.2
1408 ram 1.8 Other changes to search-lists:
1409     -- (SETF SEARCH-LIST) now accepts a string or pathname, and converts it into
1410     a one-element list.
1411     -- Search-list elements are now canonicalized to pathnames rather than to
1412     strings.
1413     -- Instead of returning NIL, SEARCH-LIST now signals an error when it is
1414     called on an undefined search list.
1415     -- SEARCH-LIST-DEFINED-P is a predicate that tells if the search list is
1416     currently defined.
1417 ram 1.2
1418 ram 1.8 New features which are now supported:
1419     -- Wildcard pathnames are now fully supported. In addition to allowing :WILD
1420     in any pathname component, "extended wildcards" such as "foo*.*" are also
1421     supported. A consequence of this is that PATTERN objects may appear in
1422     wildcard pathname components instead of strings. See PATHNAME-MATCH-P and
1424     -- As a CMU CL extension, a wildcard pathname may be used as the argument to
1425     any filesystem interface (like OPEN) as long as it matches only one file.
1426     -- The pathname :COMMON case mechanism provides a way around the problems of
1427     portably specifying string pathname components in the presence of operating
1428     systems with differing preferred case in their filesystem. An uppercase
1429     string "LISP" is mapped to the "customary case" (lowercase on unix.)
1430     Lowercase is also inverted: "readme" becomes "README". Mixed case is left
1431     alone. Note that this mechanism is explicitly enabled by supplying :CASE
1432     :COMMON to functions such as MAKE-PATHNAME. The default is the old
1433     behavior (:CASE :LOCAL).
1434 ram 1.2
1435 ram 1.8 Also, DIRECTORY now actually returns the TRUENAME of each file (as it was
1436     always supposed to do.) If a matched file is a symbolic link, the truename may
1437     be a file in some other directory that doesn't even match the pattern. The old
1438     behavior can be obtained by specifying :FOLLOW-LINKS NIL.
1439 ram 1.2
1440 ram 1.8 The new wildcard pathname mechanism has not yet been used to replace the old
1441     single-wildcard matching in Hemlock DIRED, etc.
1442 ram 1.2
1443 ram 1.8
1444     Debugger:
1445     -- Added Miles' changes to keep errors and warnings on one line if they fit.
1446     -- The debugger now starts up with the error frame as the current frame, so
1447     it is no longer necessary to manually skip over internal frames resulting
1448     from the error system invocation.
1449     -- Fixed some debugger bugs that appeared when debugging interpreted code.
1450     -- Added ``DESCRIBE'' debugger command.
1451     -- Merged Miles' changes that allow the use of restart names as debugger
1452     commands.
1453     -- Changed SHOW-RESTARTS to also display the restart name (but only if it's
1454     not shadowed by a higher priority restart). Changed the restart command
1455     to look for restarts by name if a symbol is typed.
1456     -- Bind *CURRENT-LEVEL* to 0, *PRINT-READABLY* to nil, and *READ-EVAL* to T
1457     when entering the debugger to make sure things print as expected.
1458 ram 1.2
1459 ram 1.8 The debugger programmer (DEBUG-INTERNALS) interface is now documented in the
1460     User's Manual. This interface allows the coding of debuggers and debugger
1461     extensions without requiring an intimate understanding of the compiler and
1462     run-time system. Be warned that DI features (such as breakpoints) not used by
1463     the current debugger may not work very well (wait for version 17.)
1464 ram 1.2
1465 ram 1.8 Debug internals changes:
1466     -- DI:DEBUG-FUNCTION-FUNCTION is now implemented.
1467     -- Added DI:FLUSH-FRAMES-ABOVE for cleaning up frames to be bound to
1469 ram 1.2
1470 ram 1.8
1471     Defstruct:
1472 ram 1.2
1473 ram 1.8 Various fixes and enhancements to defstruct slot parsing and inclusion.
1474     It now works to define structures such as:
1475     (defstruct super a)
1476     (defstruct (sub1 (:conc-name super)) one)
1477     (defstruct (sub2 (:conc-name super)) two)
1478     (super-a (make-sub1))
1479 ram 1.2
1480 ram 1.8 previously, a definition such as for SUB2 would define SUPER-A to be a
1481     SUB2-specific function, which could then no longer be used on other types. The
1482     spec doesn't clearly say that such a construct is legal, but its use seems
1483     fairly common.
1484 ram 1.2
1485 ram 1.8 Also, slot parsing is now more rigorous. Unrecognized slot options cause an
1486     error, as does a slot spec like: (defstruct foo (a :type t))
1487 ram 1.2
1488 ram 1.8 Fasl dumping of constant structures has been fixed to conform to X3J13. The
1489     main significance of this is that DEFSTRUCT structures are no longer dumpable
1490     by default. However, the generic function MAKE-LOAD-FORM isn't really used.
1491     Instead, a new defstruct option, :MAKE-LOAD-FORM-FUN, has been added that can
1492     be used to specify a function that acts like a MAKE-LOAD-FORM method. When we
1493     have a CLOS that supports STRUCTURE-CLASS, the default method for
1494     MAKE-LOAD-FORM will use this information instead of having the compiler use it
1495     directly. The old behavior can be enabled on a structure by structure basis by
1496     using the :MAKE-LOAD-FORM-FUN defstruct option:
1497     (defstruct (foo (:make-load-form-fun :just-dump-it-normally))
1498     ...)
1499 ram 1.2
1501 ram 1.8 Compiler:
1502 ram 1.1
1503 ram 1.8 Cleanups:
1504     -- Added the LOAD-TIME-VALUE support special form.
1505     -- Displaced or adjustable arrays and vectors with fill pointers can now be
1506     dumped in fasl files, but are converted to simple array with the same
1507     elements.
1508     -- Arrays of floats are left as arrays of floats instead of being
1509     converted into arrays of element-type T that just so happen to hold a
1510     bunch of floats.
1511     -- Changed IGNORE and IGNORABLE to recognize #'fn-name for declaring that
1512     local functions are not used. Exported IGNORABLE from LISP.
1513 ram 1.1
1514 ram 1.8 New optimizations:
1515     -- Iterations written using tail recursion are now optimized through a
1516     special-casing of local functions where all calls but one are
1517     tail-recursive self-calls. Such functions are compiled with no
1518     environment manipulation, resulting in the same code as explicit
1519     iteration.
1520     -- Loop rotation (Knuth "while" loop optimization) been added. This is the
1521     optimization that negates the loop exit test and places it at the end of
1522     the loop, and then jumps there at loop entry. Note that this is part of
1523     control optimization, and not simply a recoding of certain iteration
1524     macros. In fact, for historical reasons DO, etc. already had the exit
1525     test negated, but the compiler was cleverly un-negating the test.
1526     -- Flow analysis now recognizes function calls and special forms which do
1527     not yield any value because they unwind or signal an error. This results
1528     in improved code for error checks, since the compiler can get by with
1529     fewer unconditional branches. A function can be declared not to return by
1530     declaring its result type to be NIL (not to be confused with NULL). If a
1531     function declared NIL does return, an error will be signalled.
1532     -- Added derive-type methods for ASIN, ACOS, ACOSH, ATANH and SQRT which
1533     figure out whether the result type is real on the basis of the argument
1534     range. Also, the result of ATAN is always real, so we don't need a result
1535     type assertion.
1536     -- Added optimization which deletes MULTIPLE-VALUE-BINDs when all
1537     variables have been deleted.
1538     -- Eliminated some spurious checking of the result types of safe VOPs (such
1539     as the SPARC tadd for fixnum arithmetic.)
1540     -- Transform uses of the SEARCH generic sequence function on simple strings
1541     into a call to a more efficient string-specific function.
1542     -- Added multiplier recoding of (UNSIGNED-BYTE 32) multiplication. This
1543     converts 32 bit (or smaller) unsigned multiplication by any compile-time
1544     constant into a shift-add sequence. This is much faster when the constant
1545     is a near power of two or when general multiplication is slow (as on the
1546     SPARC.)
1547     -- Added comprehensive handling of arithmetic and logical identities when
1548     an arg is -1, 0 or +1.
1549     -- Added a RANDOM derive-type method: (random 13) is (integer 0 12).
1550 ram 1.1
1552     Enhancements:
1553 ram 1.8 -- Changed the compiler to temporarily increase *BYTES-CONSED-
1554     BETWEEN-GCS* by a factor of 4 during compilation of each top-level form,
1555     instead of turning off all garbage collection.
1556     -- Bind *PRINT-LINES* around compiler error output to
1558     -- Do not warn about undefined variables, functions or types when the
1559     INHIBIT-WARNINGS OPTIMIZE quality is 3.
1560     -- Some optimizations are now considered "important"; failure of important
1561     optimizations causes an efficiency note even when speed=inhibit-warnings
1562     (i.e. by default.)
1563     -- Print a error summary even when *COMPILE-VERBOSE* is false. (This is only
1564     printed when there are errors, so this doesn't seem a violation of the
1565     spirit of the spec.)
1566 ram 1.1
1567     Bug fixes:
1568 ram 1.8 -- Merged Miles' fix to disassembly of the MIPS coprocessor move instructions.
1569     -- Fixed spelling of "efficency" in exported variables such as
1571     -- Fixed some cases where incomplete optimization could happen.
1572     -- Fixed some arithmetic "identities" that failed to preserve the sign of
1573     -0.0.
1574     -- Fixed TYPES-INTERSECT to consider any supertype of T to definitely
1575     intersect with anything (even an unknown type.)
1576     -- Fixed a problem where inconsistent declarations could fail to be detected
1577     at compile time.
1578     -- Fixed the VALUES transform (which discards unused subforms) to work
1579     on (VALUES).
1580     -- More bug fixes to dead code deletion.
1581     -- Fixed a problem where a special binding would not be removed on exit from
1582     the scope if there was no code in the scope (e.g. it had all been
1583     deleted.)
1584     -- Fixed handling of named (DEFCONSTANT) constants so that EQ
1585     relationships are properly preserved.
1586 ram 1.1
1587 ram 1.8
1588     Extensions:
1589 ram 1.1
1590 ram 1.8 -- Export FEATUREP from EXT. This takes a feature expression and tests it
1591     against the value of *FEATURES*. Allow LISP:AND, LISP:OR, and LISP:NOT in
1592     features lists in addition to :AND, :OR, and :NOT. This makes featurep
1593     useful outside of #+ and #-.
1594     -- The encapsulation mechanism (similar to advise facilities) has been
1595     revamped to work on SETF function names as well as symbols.
1597     Returns whatever definition is stored for name, regardless of whether
1598     it is encapsulated. Unlike FDEFINITION, this does not strip off the
1599     encapsulation. This is SETF'able.
1601     Replaces the definition of name with a function that binds name's
1602     arguments a variable named argument-list, binds name's definition to a
1603     variable named basic-definition, and EVAL's body in that context. Type
1604     is whatever you would like to associate with this encapsulation for
1605     identification in case you need multiple encapsuations of the same
1606     name.
1608     Removes name's most recent encapsulation of the specified type.
1610     Returns t if name has an encapsulation of the given type, otherwise
1611     nil.
1613     A list of functions invoked by (SETF FDEFINITION) before storing the
1614     new value. Each hook function must take the function name and the
1615     new-value.
1616 ram 1.1
1617     Hemlock:
1618 ram 1.8 -- Fixed the :FILE branch of "Help on Parse" to trim leading directory
1619     components off the pathname if it wouldn't otherwise fit on the screen.
1620     -- Fixed GET-EDITOR-TTY-INPUT to not assume that UNIX-READ will always work.
1621     -- When we reallocate string table vectors to grow them, clear the old vector
1622     so that it won't hold onto garbage (in case the vector was in static space,
1623     but pointed to dynamic values.) This was a major cause of memory leakage
1624     in Hemlock.
1625     -- Added a (setf (ts-stream-char-pos stream) 0) to the accept-input function
1626     so that char-pos will be reset to zero whenever the user presses enter.
1627 ram 1.1
1628 ram 1.8 PCL:
1629     -- The version has been updated to "5/1/90 May Day PCL (REV 4b)".
1630     -- The Code walker now understands the real SYMBOL-MACROLET, and the PCL macro
1631     definition is no longer used.
1632     -- Fixed a bug in WALK-ARGLIST where it would ignore the rest of the current
1633     arglist if the current arg destructured. This was causing it to compile
1634     forms like:
1635     (macrolet ((foo ((a b) c) ...)) ...)
1636     as:
1637     (macrolet ((foo ((a b)) ...)) ...)
1638     note the loss of the arg c.
1639 ram 1.1
1640 ram 1.8
1641     System:
1642 ram 1.1
1643 ram 1.8 -- All the SAP-REF-<n> functions now take byte offsets. Previously, the
1644     16 and 32bit versions were scaled by the element size.
1645     -- Fixed UNIX-IOCTL to not flame out of the cmd is a ub-32 instead of a sb-32.
1647     -- Unix syscalls are now more restrictive in the kind of arguments that they
1648     accept. In particular, UNIX:UNIX-READ, etc., no longer automatically
1649     accept a vector (or string) argument. You must use VECTOR-SAP to convert
1650     the vector to a system area pointer. Note that WITHOUT-GCING should be
1651     wrapped around any syscall which is passed a pointer to the Lisp heap,
1652     since the object might otherwise move doing the syscall.
1653     -- Changed LOAD-FOREIGN to be exported from ALIEN. Changed it have keyword
1654     args instead of optionals. Deleted obsolete linker argument.

  ViewVC Help
Powered by ViewVC 1.1.5