Release notes for CMU Common Lisp 17e, 11 March 94
17e is primarily a bug-fix release. This release is also available on
Hewlett-Packard 700-series workstations running HP/UX version 9.x.
The main missing feature on HP/UX is LOAD-FOREIGN.
BASIC COMMON LISP SUPPORT CODE:
The function EXT:PURIFY is now exported. This was formerly only
documented as usable via the :PURIFY argument to SAVE-LISP. Great
improvements in GC runtime and memory use can be obtained when PURIFY is
called after loading in large amounts of code or creating large
datastructures that are unlikely to become garbage.
EXT:PURIFY (and thus (EXT:SAVE-LISP ... :PURIFY T) now compact the
hashtables representing the global namespace. Formerly this feature was
undocumented and only used during the initial system build.
There is now a "runtime" version of the Lisp image which omits the
compiler and loads some other code byte compiled, giving a 60% size
reduction. See README file, "Runtime distribution" section.
Changed the byte-function and byte-closure funcallable-instances to use
&more args instead of a &rest arg (eliminating the main source of
grautitous consing in byte code.)
Allow pretty-printer to work without compiler loaded.
Improved (and thus changed) the SXHASH of lists and other composite
Added to FEATURES all of the ANSI CL features that seemed plausible.
Any non-ANSI compliance is now a bug, not a feature...
Picked up Miles' changes to apropos and apropos-list that allows one to
supply NIL for the package, meaning all packages.
In SIGNAL, bind break-on-signals to NIL even before doing the type test
so that we don't wedge the error system if the type is malformed or
Fix arg ordering for GETF in new condition support. Default the name
slot in DEFMACRO-LAMBDA-LIST-BIND-ERRORS to NIL (instead of leaving it
In READ-N-BYTES, only signal EOF when we read and got 0 bytes, not
whenever read returns less than we wanted. Also, fix the case of small
reads with an empty buffer not to leave garbled buffer pointers if we have
to do more than one read. These bugs mostly affect the X interface and
its users (Garnet was having problems.)
Changed YES-OR-NO-P and Y-OR-N-P to force output.
Fixed COUNT :TEST-NOT to actually negate the test.
Fixed COERCE to call type-expand so that people can coerce to deftypes.
Rename STEP to DEBUG::SET-STEP-BREAKPOINT because step is supposed to be
the exported step macro, not some internal routine.
Fixed DEFPACKAGE to combine multiple use, export, and import options
correctly. Fixed the warning about no longer using some packages to
Fixed GCD to correctly handle MOST-NEGATIVE-FIXNUM.
Flush Hemlock font change hack in default site-init.lisp, since it was
Add some hacks for coercing lisp:class objects to pcl:class.
Export MAKE-LOAD-FORM-SAVING-SLOTS, not MAKE-LOAD-FORM-DUMPING-SLOTS.
Fix some problems with the LISP:CLASS class-precedence-list suddenly
becoming empty when a class is redefined.
Fixed SIMPLE-STRING to list STRING in the inherits list.
Fix to update-instance-for-different-class.
Added a type inference method for LOG's result type.
Added support for "more args" which are like rest args, but don't cons.
This is used for calling into annd out of byte-compiled core and in the
Increase inline-expansion-limit from 50 to 200. Change "inline
expansion count exceeded" warning to be a note. Don't inline expand in
Allow stream arg to compile-file.
Changed assert-definition-type to quietly ignore non function-types.
Allow stream arg to compile-file.
Deleted incorrect type declaration in process-1-ftype-proclamation.
Deleted test for function-type-p around call to assert-definition-type,
since this is now folded into the function. Previously several calls
weren't doing this necessary check.
Fix a problem where spurious argument types could be inferred for optional
arguments in byte-compiled code (caused yes-or-no-p to fail.)
Fixed an internal error related to tail local calls.
Fixed assertion failure about COMPONENT-NEW-FUNCTIONS with some inline
Fixed (TYPEP X '(REAL ...)) to actually test against REAL, not NUMBER.
Fixed a problem where top-level MULTIPLE-VALUE-CALL forms could cause an
Don't try to compile flow-graph components that are unreachable. This
avoids some internal errors when unreachable local functions are
Fix problem with byte-compiling PROGV getting an internal compiler error.
Added an executable-only optional to EXT:UNIX-NAMESTRING so that we can
expand path:foo into the first executable in the path named foo, not just
the first file
Changed RUN-PROGRAM to only try to run executables, and to flame out if it
can't be found in path:.
Profile: use &more instead of &rest to avoid consing the &rest arg list.
Fixed PROFILE:REPORT-TIME to not choke if any of the function names are
not symbols (e.g. setf functions).
[NOTE: Motif server doesn't work on HP yet.]
Added an optional STYLE arg to the graphical inspector to make the
function consistent with its doc string (as well as the old inspector).
Tried to make starting the Motif server more robust, or at least give some
intelligible error message.
Added some extra protection against recursive invocation of the windowing
Don't try to invoke motif debugger if we didn't succeed in opening a
Print warning in status hook when server dies.
Made server fflush after all output so that we see output when it is run
on a pipe.
Add window-buffer-hook for echo area buffer to make absolutely sure we
can't change the eacho area window to point to another buffer.
Give a sensible error message if we can't find the slave utility (e.g.
lisp) to run.
Restored the behavior of scribe-file to cd to the directory of the .mss
file before running scribe.
Change default fonts to be courier, flushing all mention of 8x13.
Remove font-setting in default site-init file, since it was causing
Add FILE-POSITION method for region streams so that the compiler's read
error recovery works for "Editor Compile Defun", etc.
When reading a file, set BUFFER-WRITABLE to T before doing anything so
that we don't get spurious read-only errors.