ViewVC logotype

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

Parent Directory Parent Directory | Revision Log Revision Log

Revision 1.11 - (hide annotations)
Thu Dec 17 19:29:30 1992 UTC (21 years, 4 months ago) by ram
Branch: MAIN
Changes since 1.10: +94 -0 lines
File MIME type: text/plain
Lock status: Locked ram
Add notes for 16f.
1 ram 1.11 Release notes for CMU Common Lisp 16f, 11 December 92
3     The changes between 16e and 16f are almost exclusively bug-fixes. When we
4     announce a version 17 beta, 16f will probably become the default release
5     (replacing 15e). The PCL has been upgraded from "March 92 (2a)" to
6     "March 92 (2c)", which provides some bug-fixes; also, all of the patches in
7     the March-92-PCL-bugs file have been applied.
9     Enhancements:
10     -- PROVIDE & REQUIRE are now back in the system, since proposed ANSI CL has
11     reinstated them as deprecated features. See the doc strings for these
12     functions and EXT:DEFMODULE.
13     -- The SPARC dynamic heap size limit has been doubled from 64meg to 128meg.
15     Pretty printer:
16     -- Fixed a bug in pprint-let that caused to to barf on (let (nil) ...).
17     -- Fixed pprint-lambda-list to print a space before the dot when the tail of
18     the lambda list is shared. In other words, print (foo . #1=(bar baz))
19     instead of (foo. #1=(bar baz)).
20     -- Added an additional use of ~^ in pprint-flet so that (flet (nil) ...)
21     doesn't flame out.
22     -- Make pretty printer properly process pprint tabs when output is forced.
23     -- In format pprint logical blocks, fixed ~^ to act like
24     PPRINT-EXIT-IF-LIST-EXHAUSTED instead of blowing out to some containing
25     directive.
27     Compiler:
28     -- Fixed compiler internal error with dead-code deletion of top-level code.
29     -- Bind *gensym-counter* instead of setting it so that compiling doesn't
30     globally reset the gensym counter.
31     -- Fixed problem with interpreted LOAD-TIME-VALUE causing undefined function
32     VALUE-CELL-REF errors.
33     -- Preserve the arglist in interpreted functions for DESCRIBE, etc.
34     -- Gag bound-but-not-referenced warnings when the EXT:INHIBIT-WARNINGS
35     optimize quality is 3.
36     -- Fixed a problem with register allocation conflict analysis which appeared
37     when a function was called with ~>= 50 arguments.
38     -- Fixed bug with optimization of tail local calls.
39     -- Fixed interpreted PROCLAIM/DECLAIM to ignore
40     START-BLOCK, END-BLOCK and declared DECLARATION declarations.
41     Changed the unrecognized proclamation error to be a warning.
42     -- Fixed float heap allocation to not wedge when the store causes a trap
43     (SPARC only.)
45     Trace:
46     -- Added pretty-printer directives so that arg lists and results print better.
47     -- Fixed UNTRACE not to flame out when untracing untraced functions.
48     -- Fixed bug with redefining function traced with encapsulation (e.g.
49     interpreted functions.
51     Misc bug fixes:
52     -- Fixed I/O timeout handling (e.g. for CLX) to correctly borrow from the
53     timeout seconds when computing the new value for the timeout microseconds.
54     -- Restored proper (prompt) handling of queued CLX events in SERVE-EVENT
55     -- Alien enums always take up an int to be compatable with C. Also,
56     sort the from-alist so that enum aliens are unparsed in a canonical
57     format.
58     -- When doing macro destructuring, check to see if some part of a lambda-list
59     is a LIST before checking to see if it is a SYMBOL, because we want NIL to
60     act like the empty list, and not an attempt to bind NIL.
61     -- Fixed PACKAGE-ERROR to have a PACKAGE slot instead of a PATHNAME slot.
62     -- Changed DOLIST not to introduce the spurious let around the result form
63     when there is no result form. Also, just read the var in the spurious
64     let, instead of using IGNORABLE, since the var might be special.
65     -- In complex DEFSETF, don't bother creating temp vars for constants. This
66     is necessary so that keywords stay keywords, and are not changed to
67     gensyms.
69     Enhancements:
70     -- Changed the backquote expanded functions (backq-list, ...) from being
71     inline functions to compiler-macros, since although the optimizer does
72     eventually get the right code, it has to work awful hard. Changed BREAK
73     to accept a condition as well as a format string.
75     been forgotten before. Added code to CONNECT-TO-UNIX-SOCKET so that Unix
76     domain sockets are available for connecting to other processes.
77     -- Removed sys:*task-data* and sys:*task-notify* because they aren't used
78     even under Mach.
82 ram 1.10 Release notes for CMU Common Lisp 16e, 5 August 92
84     16e is primarily a bug-fix release. The main changes from 16d are:
85     -- CLOS support is from March 92 PCL (2a). This is a new version of PCL
86     developed by Richard Harris which incorporates many bug-fixes and ANSI
87     compliance cleanups. He has also back-merged the CMU changes into his
88     sources so that we can release future PCLs without time-consuming merging.
89 ram 1.11 On the downside, there are a couple of new bugs (discrimination on
90     pcl::structure-object doesn't always work; generic functions which contain
91     methods which discriminate on both null and list sometimes do not work).
92     Patches for these bugs are available in March-92-PCL-bugs in the CMU CL
93     release area and by anonymous ftp from host parcftp.xerox.com
94     (, in the directory pub/pcl/.
95 ram 1.10 -- TRACE has been reimplemented, has a new syntax and new features.
96     -- The hardcopy and info documentation has been updated. Note that it
97     describes some debugger capabilities (breakpoints) which won't appear
98     until version 17.
100     The fasl file format is the same as for 16d, but some code may need to be
101     recompiled. In particular, the expansion of PPRINT-LOGICAL-BLOCK has changed.
104     March 92 PCL highlights: (see notes.text in the sources for details)
105     -- This version of PCL is much closer than previous versions of PCL to the
106     metaobject protocol specified in "The Art of the Metaobject Protocol",
107     chapters 5 and 6, by Gregor Kiczales, Jim des Riveres, and Daniel G.
108     Bobrow.
109     -- You can use structure-class as a metaclass to create new classes.
110     Classes created this way create and evaluate defstruct forms which
111     have generated symbols for the structure accessors and constructor.
112     -- Various optimization of instance variable access, both inside and outside
113     of methods.
114     -- More work (lookups and precompilation) is done at compile and load time,
115     rather than run-time.
118     New TRACE:
120     Trace has been substantially rewritten, and has a new syntax as well as new
121     functionality:
122     -- Tracing of compiled functions is now implemented using breakpoints.
123     Breakpoints destructively modify the code object, causing all calls to the
124     function to be trapped, instead of only those calls that indirect through
125     the symbol. This makes TRACE more useful for debugging programs that use
126     data structures containing function values, since you can now trace
127     anonymous functions and macros. Also, the breakpoint stops the function
128     after the arguments have been parsed, so arguments can accessed by name in
129     the debugger or in TRACE options.
130     -- Depending on the ENCAPSULATE option and DEBUG:*TRACE-ENCAPSULATE-DEFAULT*,
131     encapsulation may be used instead. This is the default for closures,
132     generic functions and interpreted functions.
133     -- TRACE options are no longer set off by extra parens, and you can specify
134     global trace options which affect all functions traced by a particular
135     call to TRACE.
136     -- Conditional breakpoints now work much better than before.
137     -- *DEBUG-PRINT-LEVEL*, -LENGTH* are used instead of a separate
138     *TRACE-PRINT-LEVEL*, etc.
140     Here is the documentation string (see also the hardcopy/info documentation):
141     TRACE {Option Global-Value}* {Name {Option Value}*}*
142     TRACE is a debugging tool that prints information when specified functions
143     are called. In its simplest form:
144     (trace Name-1 Name-2 ...)
146     TRACE causes a printout on *TRACE-OUTPUT* each time that one of the named
147     functions is entered or returns (the Names are not evaluated.) The output
148     is indented according to the number of pending traced calls, and this trace
149     depth is printed at the beginning of each line of output.
151     Options allow modification of the default behavior. Each option is a pair
152     of an option keyword and a value form. Options may be interspersed with
153     function names. Options only affect tracing of the function whose name they
154     appear immediately after. Global options are specified before the first
155     name, and affect all functions traced by a given use of TRACE.
157     The following options are defined:
159     :CONDITION Form
161     :CONDITION-ALL Form
162     If :CONDITION is specified, then TRACE does nothing unless Form
163     evaluates to true at the time of the call. :CONDITION-AFTER is
164     similar, but suppresses the initial printout, and is tested when the
165     function returns. :CONDITION-ALL tries both before and after.
167     :WHEREIN Names
168     If specified, Names is a function name or list of names. TRACE does
169     nothing unless a call to one of those functions encloses the call to
170     this function (i.e. it would appear in a backtrace.) Anonymous
171     functions have string names like "DEFUN FOO".
173     :BREAK Form
174     :BREAK-AFTER Form
175     :BREAK-ALL Form
176     If specified, and Form evaluates to true, then the debugger is invoked
177     at the start of the function, at the end of the function, or both,
178     according to the respective option.
180     :PRINT Form
181     :PRINT-AFTER Form
182     :PRINT-ALL Form
183     In addition to the usual prinout, he result of evaluating Form is
184     printed at the start of the function, at the end of the function, or
185     both, according to the respective option. Multiple print options cause
186     multiple values to be printed.
188     :FUNCTION Function-Form
189     This is a not really an option, but rather another way of specifying
190     what function to trace. The Function-Form is evaluated immediately,
191     and the resulting function is traced.
194     If T, the tracing is done via encapsulation (redefining the function
195     name) rather than by modifying the function. :DEFAULT is the default,
196     and means to use encapsulation for interpreted functions and funcallable
197     instances, breakpoints otherwise. When encapsulation is used, forms are
198     *not* evaluated in the function's lexical environment, but DEBUG:ARG can
199     still be used.
201     :CONDITION, :BREAK and :PRINT forms are evaluated in the lexical environment
202     of the called function; DEBUG:VAR and DEBUG:ARG can be used. The -AFTER and
203     -ALL forms are evaluated in the null environment.
206     Assorted bug fixes and enhancements:
208     System code:
209     -- Changed default base file name for LOAD-FOREIGN to be argv[0] rather than
210     being hard-wired to "lisp".
211     -- Fixed a bad declaration which caused garbage collection to fail if more
212     than MOST-POSITIVE-FIXNUM bytes had been consed since process creation.
213     -- Changed GET-INTERNAL-RUN-TIME to use UNIX-FAST-GETRUSAGE to avoid
214     number-consing and generic arithmetic. Also, rearranged the computation
215     so that the time is correctly computed for up to 457 days, instead of only
216     71 minutes.
217     -- Merged Miles' fix to MAKE-PATHNAME so that it knows the difference between
218     an arg being NIL and being unsupplied.
219     -- Some partial fixes to circular printing (the #1=#1# bug).
220     PPRINT-LOGICAL-BLOCK no longer checks the list argument for CAR
221     circularity, now that OUTPUT-OBJECT does it for us.
222     -- Fixed reader dispatch macro characters to be case-insensitive, and to
223     disallow digits as sub-characters.
224     -- Changed #A reader to allow arbitrary sequences instead of just lists.
225     -- RUN-PROGRAM now gives a proper error message when "fork" fails (i.e. too
226 ram 1.11 many processes.)
227     -- Fixed a bug in initialization of saved cores which caused the old
228     environment to be left on the end of EXT:*ENVIRONMENT-LIST*. One symptom
229     was that RUN-PROGRAM would run programs with strange environment values
230     based on those in effect at the time the core was saved. In particular,
231     Lisp subprocesses (i.e. Hemlock slaves) might get the wrong value of
232     CMUCLLIB, which caused the slave to die before connecting.
233 ram 1.10 -- SYSTEM:SERVE-EVENT (and XLIB:EVENT-CASE, etc.) now correctly handle
234     non-integer timeouts. Added declarations to improve the efficiency of
235     event handling.
236     -- Fixed some bugs in UNIX-SELECT which could cause Lisp to hang when more
237     than 32 files were open. Also, improved efficiency in this case.
238     -- Merged Olssons fix to WITH-ENABLED-INTERRUPTS to not try to change
239     interrupt characters anymore.
240     -- A number of bug-fixes for breakpoint support in compiled code (but there
241     are still problems with arbitrary breakpoints.)
242     -- Fixed DI:FRAME-CATCHES
244     CLX:
245     -- Fixed the implementation-dependent pixarray copying routines (for
246     GET-IMAGE, etc.) so that they don't occasionally trash memory, and are
247     actually faster.
248     -- Fixed the definition of the ANGLE type (used by DRAW-ARC, etc.) to work
249     regardless of the kind of real number (single or double float, rational,
250     etc.)
251     -- Fixed several places in image operations where values that could really
252     be negative were declared to be non-negative.
254     Compiler:
255     -- Fixed a bug which caused an internal error whenever a call to random
256     was compiled and the argument type wasn't known to be either a float or
257     an integer.
258     -- Fixed a bug which caused an internal compiler error when a value that
259     wasn't used had an unproven type assertion.
260     -- Fixed some more dead-code deletion bugs.
261     -- Fixed a problem with the new "assignment" optimization of local function
262     call where the compiler could get assertion failures such as tail-sets not
263     being equal.
264     -- Fixed a few places where reoptimization wasn't being triggered when it
265     should have been.
266     -- You can now have a TAGBODY with more than one tag that is non-locally
267     exited to. Evidently this never worked...
268     -- Some changes in debug-info format related to breakpoint support.
270     Misc:
271     -- Fixed some Hemlock Dired commands to know that PATHNAME-DIRECTORY is
272     now a list, not a vector.
273     -- Fixed the bin/sample-wrapper script to use "$@" instead of $* so that
274     arguments are properly passed through.
277 ram 1.9 Release notes for CMU Common Lisp 16d, 30 May 92
278 ram 1.5
279 ram 1.8 16d is our first version 16 general release, and incorporates many changes not
280     present in the 15 series. It is currently fairly close to our current
281     internal development (alpha) systems, and is thus less stable. The major
282     changes are:
283     New Aliens
284     New pathnames
285     New pretty printer
286     New format
287     R5.0 CLX.
288     5/1/90 May Day PCL (REV 4b)
289     Revised manual
290 ram 1.5
291 ram 1.8 The fasl file format is nominally compatible with version 15, but the pathname
292     change affects any pathname constants in fasl files, which includes the
293     defined-from information present in every fasl file. It is probably a good
294     idea to recompile everything.
295 ram 1.7
296 ram 1.8 CLX and Hemlock are now optional. When CMU CL is installed, the maintainer can
297     elect not to load CLX and Hemlock -- this saves 7 megabytes of disk and
298     improves memory usage somewhat. See the installation section of the README
299     file for details.
300 ram 1.5
301 ram 1.8 The ``CMU Common Lisp User's Manual'' has been updated to be more helpful for
302     non-CMU users. The new manual also documents the new Alien facility for
303     foreign function calls and data structure access. The manual is now formatted
304     with Mike Clarkson's LaTeXinfo package, so a consistent version of the
305     documentation is available online in Gnu info format. See `doc/cmu-user.ps'
306     and `doc/cmu-user.info'.
308 ram 1.5
309 ram 1.8 General system code:
310 ram 1.3
311 ram 1.8 ANSI cleanups:
312     -- ANSI Compiler macros are now implemented: see COMPILER-MACRO-FUNCTION,
314     -- Fixed things that invoke *MACROEXPAND-HOOK* to coerce it to a function
315     before calling it.
316     -- Fixed MACRO-FUNCTION to take an environment argument.
317     -- SYMBOL-MACROLET now accepts declarations.
318     -- SHADOW now accepts strings in addition to symbols.
320     -- IGNORABLE is now in the LISP package instead of the EXT package.
321     -- ADJUST-ARRAY has been updated to allow adjusting of arrays which were
322     not created with :adjustable non-nil to be adjusted to new dimensions.
323     -- ADJUSTABLE-ARRAY-P has been updated correspondingly. It returns T if
324     adjust ADJUST-ARRAY would return an EQ array.
325     -- The BASE-CHARACTER type has been renamed to BASE-CHAR.
326     -- The REAL type and REALP function are now implemented.
327     -- Changed the default structure printer to print slot names as keywords
328     instead of unqualified symbols.
329 ram 1.3
330 ram 1.8 Enhancements:
331     -- Added MAYBE-INLINE declaration for GET, PUT, etc., so that these
332     functions can be inline expanded according to the compilation policy.
333     -- Added some type declarations so that GET-INTERNAL-REAL-TIME doesn't cons.
334     -- Process the command line before printing the herald so that we can eval
335     some form and quit without printing anything.
336     -- SET now protects against setting T, NIL, and keywords. (SETF
337     SYMBOL-FUNCTION) now expands into FSET, which protects against defining
338     NIL.
339     -- Substantially rearranged function describing to make it more consistent,
340     and added support for describing interpreted functions.
341     -- PURIFY is now called multiple times during system building to improve
342     locality.
343     -- (EVAL-WHEN (EVAL) ...) is now actually eval'ed.
344 ram 1.3
345     Bug fixes:
346 ram 1.8 -- Fixed bug in NTH-VALUE where it expanded into bogus code unless ``n'' was
347     a constant integer.
348     -- Fixed FMAKUNBOUND to return the symbol instead of T.
349     -- Allocate memory as executable so that the OS knows to maintain cache
350     consistency.
351     -- Changed DESCRIBE to allow T or NIL as the stream argument.
352 ram 1.3
353 ram 1.8 Load enhancements and cleanups:
354     -- The initial value of *LOAD-VERBOSE* is now T. Additionally, LOAD no
355     longer always binds *LOAD-VERBOSE* and *LOAD-PRINT*. Now it only
356     binds them when :VERBOSE or :PRINT are explicity supplied. Therefore, you
357     can set either of these in your init file and it will take effect.
358     -- Normally when *LOAD-VERBOSE* is T, only the file name is printed.
359     Formerly, the loaded stream was always printed, whereas now a stream is
360     printed only when the stream is not a file stream.
361     -- Added ANSI features *LOAD-TRUENAME*, *LOAD-PATHNAME* and *LOAD-PRINT*.
362     -- As per ANSI, bind *READTABLE* to itself to make assignments file-local.
363     -- Added new variables EXT:*SOURCE-FILE-TYPES* and EXT:*OBJECT-FILE-TYPES*.
364     When no file type is specified, LOAD tries the types in these lists to
365     locate the source and object files. LOAD now recognizes source types "l",
366     "cl" and "lsp" in addition to "lisp".
367     -- The compiler OPTIMIZE policy is now bound during load, so proclamations in
368     a file don't leave the global policy clobbered when the load is finished.
369     -- Changed the :IF-SOURCE-NEWER option to signal an error and use restarts,
370     rather than PROMPT-FOR-Y-OR-N. Fixed the load source case to actually
371     load the source, rather than loading the object as a source file...
372     -- Changed load to deal with source files having NIL type more reasonably.
373     -- If a wild pathname is given to LOAD, all files matched will be loaded.
374     -- Proceeding from nonexistent file errors has been improved. It is no longer
375     assumed that missing files are always source files. Added condition
376     restarts for missing files.
377     -- Improved formatting of error and warning messages.
378 ram 1.3
380 ram 1.8 Garbage collection:
381     -- Changed the minimal ROOM output to include all easily computed information
382     including whether GC is disabled. The verbose ROOM now conses less.
383     -- Removed the :ENABLE-GC SAVE-LISP option, as it's no longer needed.
384     Garbage collection is now correctly enabled in cores which have been saved
385     and then restarted.
386     -- Added EXT:BYTES-CONSED-BETWEEN-GCS, a function that returns (and sets when
387     used with setf) *BYTES-CONSED-BETWEEN-GCS*. Additionally, it changes
388     *GC-TRIGGER* immediately to reflect the new values of *bytes-consed...*.
389     -- TIME now displays the GC run-time.
390     -- Added EXT:*GC-RUN-TIME* with accumulates the INTERNAL-RUN-TIME spent doing
391     garbage collection. Added declarations to make EXT:GET-BYTES-CONSED more
392     efficient.
393     -- The top-level REP loop now zeros the unused non-zero portion of the
394     control stack to discourage spurious garbage retention.
395     -- The garbage collector now closes open file streams when it reclaims them.
396 ram 1.3
398 ram 1.8 Packages:
399     -- The LISP and USER packages have been renamed to COMMON-LISP and
400     COMMON-LISP-USER. LISP and USER are nicknames, so they can still be used.
401     -- The LISP package namespace has been cleaned up somewhat. For example,
402     *DESCRIBE-PRINT-LEVEL* is no longer exported from LISP.
403     -- The Mach/Unix division in the package system has been clarified a great
404     deal. Unix specific features have been moved from the MACH package to the
405     UNIX package. Mach specific features have been left in (or moved to) the
406     MACH package. For example, all standard Unix syscalls are related
407     definitions are un UNIX, whereas vm_statistics remains in MACH and GR-CALL
408     has been moved to MACH.
409 ram 1.3
410 ram 1.8 SETF cleanups:
411     -- Changed GET-SETF-METHOD-MULTIPLE-VALUE to try to macroexpand-1 the form
412     when it's an atom in case it's a symbol-macro as per the X3J13 cleanup
414     symbol macros where the macroexpansion has side effects.
415     -- Fixed SETF of GETF to evaluate the various parts in the correct order as
418     Extend the semantics of the macros SETF, PSETF, SHIFTF, ROTATEF, and
419     ASSERT to allow "places" whose SETF methods have more than one "store
420     variable". In such cases, the macros accept as many values from the
421     newvalue form as there are store variables. As usual, extra values
422     are ignored and missing values default to NIL.
423     -- Extended the long form of DEFSETF to allow the specification of more
424     than one "store variable", with the obvious semantics.
425     -- GET-SETF-METHOD signals an error if there would be more than one
426     store-variable.
427 ram 1.3
428 ram 1.8
429     Printer:
430 ram 1.3
431 ram 1.8 Almost all of the printing code has been rewritten/restructured to support
432     all of the printing features added to the language. Some highlights:
433     -- *PRINT-READABLY* is now supported.
434     -- *PRINT-CIRCLE* works irrespective of *PRINT-PRETTY*. Note: the default
435     structure printer currently does not work when *PRINT-CIRCLE* is true: you
436     get #1=#1#.
437     -- *PRINT-LEVEL* abbreviation now works automatically inside structure
438     printers.
439     -- XP has been replaced with a native pretty printer that is fully
440     integrated with the rest of the system. This Supports the ANSI
441     pretty-printing interface instead of the old Waters XP interface. Existing
442     uses of the old interface will need to be updated to use the new names.
443     -- The pretty-printer now unparses backquote forms on printing. To retain
444     this information, the backqoute read macro no longer expands into LIST,
445     CONS, etc. Internal functions are used instead.
447     been added.
448     -- All new format. Supports the FORMATTER macro and all the pretty-printing
449     directives. FORMAT has extended to accept a function as the format control
450     (as an alternative to a string.)
451     -- Added support for READTABLE-CASE in symbol printing. Printing when
452     *PRINT-CASE* is :CAPITALIZE and *PRINT-ESCAPE* is NIL is now slightly
453     different than before. Added some missing array type declarations in
454     symbol printing.
455 ram 1.3
456     Bug fixes:
457 ram 1.8 -- Fixed a bug which caused some float printing format directives to
458     infinitely loop when a fixed-width field overflowed.
459     -- Specify stream when printing unbound marker.
460     -- Fixed FORMAT to override printer control variables when printing float
461     exponents so that they are always printed in decimal, etc.
462 ram 1.3
463 ram 1.8
464     Reader:
465 ram 1.3
466 ram 1.8 ANSI Cleanups:
467     -- *READ-EVAL* is now supported. If a #. is encountered while *READ-EVAL*
468     is NIL (default T), an error is signaled. This intended to allow
469     ``secure'' READ-based command interfaces to be written.
470     -- READTABLE-CASE is now supported.
471     -- The reader now signals the correct type of error when things go wrong
472     instead of always signaling a simple-error.
473     -- Changed the return value of SET-SYNTAX-FROM-CHAR from NIL to T as per X3J13
474     cleanup RETURN-VALUES-UNSPECIFIED:SPECIFY. [Hard to believe nobody has
475     complained about not conforming to this one.]
476 ram 1.3
477     Bug fixes:
478 ram 1.8 -- Fixes to several bugs with respect to #+, #-. In particular, stacked
479     conditionals like "#+foo #-bar baz" now work
480     -- #n= and #n# now detect more error conditions and work on structures.
481     -- # is now a non-terminating macro character, so foo#bar is read as a
482     symbol.
483     -- Added Ted's changes to make INTERNAL-READ-EXTENDED-TOKEN work when there
484     are `|' escapes. The main significance of this is that #+nil '|foo;bar|
485     and #:|foobar| now work properly. Also changed this function to recognize
486     unquoted colons so that #:foo:bar will error, but not #:foo\:bar.
487 ram 1.3
488 ram 1.8 Enhancement:
489     -- Export new variable *ignore-extra-close-parentheses* if true (the default),
490     extra close parens are only a warning, not an error. Previously unmatched
491     close parens were quietly ignored.
492 ram 1.3
494 ram 1.8 Pathnames:
495 ram 1.2
496 ram 1.8 This release supports all the new CltL2 pathname features except for logical
497     pathnames. Following is an overview of the new pathname support.
498 ram 1.2
499 ram 1.8 Programs that actually conform to the CLtL1 pathname spec will have very few
500     problems. However, the CLtL1 spec was extremely vague, and CMU CL did not
501     make use of much of the allowed flexibility, so many technically non-portable
502     programs previously worked under CMU CL.
503 ram 1.2
504 ram 1.8 The main incompatible changes from CLtL1 to CLtL2:
505     -- Symbols are no longer acceptable filenames.
506     -- PATHNAME-HOST may be any object.
507     -- :UNSPECIFIC is now a legal pathname component.
508     -- MERGE-PATHNAMES now recognizes relative pathnames and treats them
509     specially.
510 ram 1.2
511 ram 1.8 The format of directories is now specified (to be a list in a certain format.)
512     This required an incompatible change from the previous practice of using a
513     vector PATHNAME-DIRECTORY and using "DEFAULT" or :ABSOLUTE in the
514     PATHNAME-DEVICE to indicate relative and absolute pathnames.
515 ram 1.2
516 ram 1.8 In a related change, the CMU SEARCH-LIST extension was changed so that the
517     search-list now appears in the PATHNAME-DIRECTORY as:
518     (:ABSOLUTE #<Search-list "name"> ...)
519 ram 1.2
520 ram 1.8 Other changes to search-lists:
521     -- (SETF SEARCH-LIST) now accepts a string or pathname, and converts it into
522     a one-element list.
523     -- Search-list elements are now canonicalized to pathnames rather than to
524     strings.
525     -- Instead of returning NIL, SEARCH-LIST now signals an error when it is
526     called on an undefined search list.
527     -- SEARCH-LIST-DEFINED-P is a predicate that tells if the search list is
528     currently defined.
529 ram 1.2
530 ram 1.8 New features which are now supported:
531     -- Wildcard pathnames are now fully supported. In addition to allowing :WILD
532     in any pathname component, "extended wildcards" such as "foo*.*" are also
533     supported. A consequence of this is that PATTERN objects may appear in
534     wildcard pathname components instead of strings. See PATHNAME-MATCH-P and
536     -- As a CMU CL extension, a wildcard pathname may be used as the argument to
537     any filesystem interface (like OPEN) as long as it matches only one file.
538     -- The pathname :COMMON case mechanism provides a way around the problems of
539     portably specifying string pathname components in the presence of operating
540     systems with differing preferred case in their filesystem. An uppercase
541     string "LISP" is mapped to the "customary case" (lowercase on unix.)
542     Lowercase is also inverted: "readme" becomes "README". Mixed case is left
543     alone. Note that this mechanism is explicitly enabled by supplying :CASE
544     :COMMON to functions such as MAKE-PATHNAME. The default is the old
545     behavior (:CASE :LOCAL).
546 ram 1.2
547 ram 1.8 Also, DIRECTORY now actually returns the TRUENAME of each file (as it was
548     always supposed to do.) If a matched file is a symbolic link, the truename may
549     be a file in some other directory that doesn't even match the pattern. The old
550     behavior can be obtained by specifying :FOLLOW-LINKS NIL.
551 ram 1.2
552 ram 1.8 The new wildcard pathname mechanism has not yet been used to replace the old
553     single-wildcard matching in Hemlock DIRED, etc.
554 ram 1.2
555 ram 1.8
556     Debugger:
557     -- Added Miles' changes to keep errors and warnings on one line if they fit.
558     -- The debugger now starts up with the error frame as the current frame, so
559     it is no longer necessary to manually skip over internal frames resulting
560     from the error system invocation.
561     -- Fixed some debugger bugs that appeared when debugging interpreted code.
562     -- Added ``DESCRIBE'' debugger command.
563     -- Merged Miles' changes that allow the use of restart names as debugger
564     commands.
565     -- Changed SHOW-RESTARTS to also display the restart name (but only if it's
566     not shadowed by a higher priority restart). Changed the restart command
567     to look for restarts by name if a symbol is typed.
568     -- Bind *CURRENT-LEVEL* to 0, *PRINT-READABLY* to nil, and *READ-EVAL* to T
569     when entering the debugger to make sure things print as expected.
570 ram 1.2
571 ram 1.8 The debugger programmer (DEBUG-INTERNALS) interface is now documented in the
572     User's Manual. This interface allows the coding of debuggers and debugger
573     extensions without requiring an intimate understanding of the compiler and
574     run-time system. Be warned that DI features (such as breakpoints) not used by
575     the current debugger may not work very well (wait for version 17.)
576 ram 1.2
577 ram 1.8 Debug internals changes:
578     -- DI:DEBUG-FUNCTION-FUNCTION is now implemented.
579     -- Added DI:FLUSH-FRAMES-ABOVE for cleaning up frames to be bound to
581 ram 1.2
582 ram 1.8
583     Defstruct:
584 ram 1.2
585 ram 1.8 Various fixes and enhancements to defstruct slot parsing and inclusion.
586     It now works to define structures such as:
587     (defstruct super a)
588     (defstruct (sub1 (:conc-name super)) one)
589     (defstruct (sub2 (:conc-name super)) two)
590     (super-a (make-sub1))
591 ram 1.2
592 ram 1.8 previously, a definition such as for SUB2 would define SUPER-A to be a
593     SUB2-specific function, which could then no longer be used on other types. The
594     spec doesn't clearly say that such a construct is legal, but its use seems
595     fairly common.
596 ram 1.2
597 ram 1.8 Also, slot parsing is now more rigorous. Unrecognized slot options cause an
598     error, as does a slot spec like: (defstruct foo (a :type t))
599 ram 1.2
600 ram 1.8 Fasl dumping of constant structures has been fixed to conform to X3J13. The
601     main significance of this is that DEFSTRUCT structures are no longer dumpable
602     by default. However, the generic function MAKE-LOAD-FORM isn't really used.
603     Instead, a new defstruct option, :MAKE-LOAD-FORM-FUN, has been added that can
604     be used to specify a function that acts like a MAKE-LOAD-FORM method. When we
605     have a CLOS that supports STRUCTURE-CLASS, the default method for
606     MAKE-LOAD-FORM will use this information instead of having the compiler use it
607     directly. The old behavior can be enabled on a structure by structure basis by
608     using the :MAKE-LOAD-FORM-FUN defstruct option:
609     (defstruct (foo (:make-load-form-fun :just-dump-it-normally))
610     ...)
611 ram 1.2
613 ram 1.8 Compiler:
614 ram 1.1
615 ram 1.8 Cleanups:
616     -- Added the LOAD-TIME-VALUE support special form.
617     -- Displaced or adjustable arrays and vectors with fill pointers can now be
618     dumped in fasl files, but are converted to simple array with the same
619     elements.
620     -- Arrays of floats are left as arrays of floats instead of being
621     converted into arrays of element-type T that just so happen to hold a
622     bunch of floats.
623     -- Changed IGNORE and IGNORABLE to recognize #'fn-name for declaring that
624     local functions are not used. Exported IGNORABLE from LISP.
625 ram 1.1
626 ram 1.8 New optimizations:
627     -- Iterations written using tail recursion are now optimized through a
628     special-casing of local functions where all calls but one are
629     tail-recursive self-calls. Such functions are compiled with no
630     environment manipulation, resulting in the same code as explicit
631     iteration.
632     -- Loop rotation (Knuth "while" loop optimization) been added. This is the
633     optimization that negates the loop exit test and places it at the end of
634     the loop, and then jumps there at loop entry. Note that this is part of
635     control optimization, and not simply a recoding of certain iteration
636     macros. In fact, for historical reasons DO, etc. already had the exit
637     test negated, but the compiler was cleverly un-negating the test.
638     -- Flow analysis now recognizes function calls and special forms which do
639     not yield any value because they unwind or signal an error. This results
640     in improved code for error checks, since the compiler can get by with
641     fewer unconditional branches. A function can be declared not to return by
642     declaring its result type to be NIL (not to be confused with NULL). If a
643     function declared NIL does return, an error will be signalled.
644     -- Added derive-type methods for ASIN, ACOS, ACOSH, ATANH and SQRT which
645     figure out whether the result type is real on the basis of the argument
646     range. Also, the result of ATAN is always real, so we don't need a result
647     type assertion.
648     -- Added optimization which deletes MULTIPLE-VALUE-BINDs when all
649     variables have been deleted.
650     -- Eliminated some spurious checking of the result types of safe VOPs (such
651     as the SPARC tadd for fixnum arithmetic.)
652     -- Transform uses of the SEARCH generic sequence function on simple strings
653     into a call to a more efficient string-specific function.
654     -- Added multiplier recoding of (UNSIGNED-BYTE 32) multiplication. This
655     converts 32 bit (or smaller) unsigned multiplication by any compile-time
656     constant into a shift-add sequence. This is much faster when the constant
657     is a near power of two or when general multiplication is slow (as on the
658     SPARC.)
659     -- Added comprehensive handling of arithmetic and logical identities when
660     an arg is -1, 0 or +1.
661     -- Added a RANDOM derive-type method: (random 13) is (integer 0 12).
662 ram 1.1
664     Enhancements:
665 ram 1.8 -- Changed the compiler to temporarily increase *BYTES-CONSED-
666     BETWEEN-GCS* by a factor of 4 during compilation of each top-level form,
667     instead of turning off all garbage collection.
668     -- Bind *PRINT-LINES* around compiler error output to
670     -- Do not warn about undefined variables, functions or types when the
671     INHIBIT-WARNINGS OPTIMIZE quality is 3.
672     -- Some optimizations are now considered "important"; failure of important
673     optimizations causes an efficiency note even when speed=inhibit-warnings
674     (i.e. by default.)
675     -- Print a error summary even when *COMPILE-VERBOSE* is false. (This is only
676     printed when there are errors, so this doesn't seem a violation of the
677     spirit of the spec.)
678 ram 1.1
679     Bug fixes:
680 ram 1.8 -- Merged Miles' fix to disassembly of the MIPS coprocessor move instructions.
681     -- Fixed spelling of "efficency" in exported variables such as
683     -- Fixed some cases where incomplete optimization could happen.
684     -- Fixed some arithmetic "identities" that failed to preserve the sign of
685     -0.0.
686     -- Fixed TYPES-INTERSECT to consider any supertype of T to definitely
687     intersect with anything (even an unknown type.)
688     -- Fixed a problem where inconsistent declarations could fail to be detected
689     at compile time.
690     -- Fixed the VALUES transform (which discards unused subforms) to work
691     on (VALUES).
692     -- More bug fixes to dead code deletion.
693     -- Fixed a problem where a special binding would not be removed on exit from
694     the scope if there was no code in the scope (e.g. it had all been
695     deleted.)
696     -- Fixed handling of named (DEFCONSTANT) constants so that EQ
697     relationships are properly preserved.
698 ram 1.1
699 ram 1.8
700     Extensions:
701 ram 1.1
702 ram 1.8 -- Export FEATUREP from EXT. This takes a feature expression and tests it
703     against the value of *FEATURES*. Allow LISP:AND, LISP:OR, and LISP:NOT in
704     features lists in addition to :AND, :OR, and :NOT. This makes featurep
705     useful outside of #+ and #-.
706     -- The encapsulation mechanism (similar to advise facilities) has been
707     revamped to work on SETF function names as well as symbols.
709     Returns whatever definition is stored for name, regardless of whether
710     it is encapsulated. Unlike FDEFINITION, this does not strip off the
711     encapsulation. This is SETF'able.
713     Replaces the definition of name with a function that binds name's
714     arguments a variable named argument-list, binds name's definition to a
715     variable named basic-definition, and EVAL's body in that context. Type
716     is whatever you would like to associate with this encapsulation for
717     identification in case you need multiple encapsuations of the same
718     name.
720     Removes name's most recent encapsulation of the specified type.
722     Returns t if name has an encapsulation of the given type, otherwise
723     nil.
725     A list of functions invoked by (SETF FDEFINITION) before storing the
726     new value. Each hook function must take the function name and the
727     new-value.
728 ram 1.1
729     Hemlock:
730 ram 1.8 -- Fixed the :FILE branch of "Help on Parse" to trim leading directory
731     components off the pathname if it wouldn't otherwise fit on the screen.
732     -- Fixed GET-EDITOR-TTY-INPUT to not assume that UNIX-READ will always work.
733     -- When we reallocate string table vectors to grow them, clear the old vector
734     so that it won't hold onto garbage (in case the vector was in static space,
735     but pointed to dynamic values.) This was a major cause of memory leakage
736     in Hemlock.
737     -- Added a (setf (ts-stream-char-pos stream) 0) to the accept-input function
738     so that char-pos will be reset to zero whenever the user presses enter.
739 ram 1.1
740 ram 1.8 PCL:
741     -- The version has been updated to "5/1/90 May Day PCL (REV 4b)".
742     -- The Code walker now understands the real SYMBOL-MACROLET, and the PCL macro
743     definition is no longer used.
744     -- Fixed a bug in WALK-ARGLIST where it would ignore the rest of the current
745     arglist if the current arg destructured. This was causing it to compile
746     forms like:
747     (macrolet ((foo ((a b) c) ...)) ...)
748     as:
749     (macrolet ((foo ((a b)) ...)) ...)
750     note the loss of the arg c.
751 ram 1.1
752 ram 1.8
753     System:
754 ram 1.1
755 ram 1.8 -- All the SAP-REF-<n> functions now take byte offsets. Previously, the
756     16 and 32bit versions were scaled by the element size.
757     -- Fixed UNIX-IOCTL to not flame out of the cmd is a ub-32 instead of a sb-32.
759     -- Unix syscalls are now more restrictive in the kind of arguments that they
760     accept. In particular, UNIX:UNIX-READ, etc., no longer automatically
761     accept a vector (or string) argument. You must use VECTOR-SAP to convert
762     the vector to a system area pointer. Note that WITHOUT-GCING should be
763     wrapped around any syscall which is passed a pointer to the Lisp heap,
764     since the object might otherwise move doing the syscall.
765     -- Changed LOAD-FOREIGN to be exported from ALIEN. Changed it have keyword
766     args instead of optionals. Deleted obsolete linker argument.

  ViewVC Help
Powered by ViewVC 1.1.5