+changes in sbcl-0.7.9 relative to sbcl-0.7.8:
+ * minor incompatible change: The runtime (the Unix executable named
+ "sbcl") is now much pickier about the .core files it will load.
+ Essentially it now requires .core files to descend from the same
+ build (not just the same sources or LISP-IMPLEMENTATION-VERSION)
+ as the runtime does. (The intent is to prevent the crashes which
+ can occur, and which can even be reported as mysterious failures,
+ when people patch the sources or change the build parameters
+ without changing LISP-IMPLEMENTATION-VERSION, then mix and match
+ sbcl and .core files.)
+ * fixed bug: VALUES-LIST is no longer optimized away.
+ * fixed bug 142: The FFI conversion of C string values to Lisp
+ string values no longer conses excessively. (thanks to Nathan
+ Froyd porting Raymond Toy's fix to CMU CL)
+ * began to systematize and improve MOP conformance in PCL (thanks to
+ Nathan Froyd, Gerd Moellman and Pierre Mai):
+ ** SLOT-DEFINITION-ALLOCATION now returns :CLASS, not the class
+ itself;
+ ** GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER is now implemented;
+ ** FINALIZE-INHERITANCE is now called on class finalization;
+ ** DOCUMENTATION and (SETF DOCUMENTATION) now have the correct
+ argument precedence order.
+ * fixed bug 202: The compiler no longer fails on functions whose
+ derived types contradict their declared type.
+ * DEFMACRO is implemented via EVAL-WHEN instead of IR1 translation,
+ so it can be non-toplevel.
+ * The fasl file version number has changed (because of the new
+ implementation of DEFMACRO).
+ * (mostly) fixed bugs 46b and 46c: sequence functions now check, in
+ safe code, that any length requirement by their type-specifier
+ argument is valid. The exceptions to this are described in bug
+ 213.
+ * fixed bugs 46h and 46i: TWO-WAY- and CONCATENATED-STREAM creation
+ functions now check the types of their inputs as required by ANSI.
+ * fixed bug 48c: SYMBOL-MACROLET signals PROGRAM-ERROR when an
+ introduced symbol is DECLAREd to be SPECIAL.
+ * fixed reading of (COMPLEX DOUBLE-FLOAT) literals from fasl files
+ * fixed bug: :COUNT argument to sequence functions may be negative
+ * fixed bug: body of DO-SYMBOLS may contain declarations
+ * fixed bug: PUSHNEW now evaluates its arguments from left to right
+ (reported by Paul F. Dietz, fixed by Gerd Moellman)
+ * fixed bug: PUSH, PUSHNEW and POP now evaluate a place given by a
+ symbol macro only once
+ * fixed printing of call frame when argument list is unavailable
+ * fixed bug: :ALLOW-OTHER-KEYS is an allowed keyword name
+ * compiler no longer signals WARNING on unknown keyword
+ :ALLOW-OTHER-KEYS
+
+changes in sbcl-0.7.8 relative to sbcl-0.7.7:
+ * A beta-quality port to the mips architecture running Linux,
+ based on the old CMUCL backend, has been made. It has been tested
+ on a big-endian kernel, and works sufficiently well to be able to
+ rebuild itself; it has not been tested in little-endian mode.
+ * fixed an inconsistency between gencgc.c and purify.c which made
+ dumping/loading .core files unreliable
+ * fixed bug 120a: The compiler now deals correctly with IFs where
+ the consequent is the same as the alternative, instead of
+ misderiving the return type. (thanks to Alexey Dejneka)
+ * fixed bug 113: Logical pathnames are now dumpable (the logical
+ host is resolved at load-time, throwing an error if it is not
+ found).
+ * fixed bug 174: FORMAT's error message is slightly clearer when a
+ non-printing character is used in a format directive.
+ * fixed several bugs in compiler checking of type declarations, i.e.
+ violations of the Python "declarations are assertions" principle
+ (thanks to Alexey Dejneka)
+ * fixed several bugs in PCL's error checking (thanks to Gerd
+ Moellmann)
+ * fixed bug: printing of FILE-ERROR (thanks to Antonio
+ Martinez-Shotton)
+ * fixed bug in compilation of functions as first class values
+ (thanks to Antonio Martinez-Shotton)
+ * The compiler's handling TYPE-ERRORs which it can prove will
+ inevitably happen at runtime has been cleaned up and corrected
+ in several ways. (thanks to Alexey Dejneka)
+ * improved argument type checking for various basic arithmetic
+ operations (MAX, +, LOGXOR, etc.) which have had so much TLC
+ lavished on them in the past that they can be compiled in many
+ ways in different special cases
+ * fixed bug 181: compiler checks validity of user supplied type
+ specifiers
+ * cleaned up code flushing in optimization: Function calls which
+ should signal errors for safety purposes (e.g. which ANSI says
+ should signal errors when their arguments are of incorrect type)
+ are no longer optimized away.
+ * added new extension: SB-DEBUG:BACKTRACE-AS-LIST
+ * incremented fasl file version number, because changes in the
+ implementation of sequence functions like COERCE caused
+ internal utility functions like COERCE-TO-SIMPLE-VECTOR (used
+ in old inline expansions) to become undefined. (Actually these
+ changes were later undone, so we might very well be binary
+ compatible with 0.7.7 after all, but leaving the version number
+ incremented seemed like the simplest and most conservative
+ thing to do.)
+
+changes in sbcl-0.7.7 relative to sbcl-0.7.6:
+ * An alpha-quality port to the parisc architecture running Linux,
+ based on the old CMUCL backend, has been made. This, even more so
+ than the other backends, should be considered still a work in
+ progress; known problems include that the Linux kernel in 64-bit
+ mode does not propagate the correct sigcontext structure to
+ userspace, and consequently SBCL on a parisc64 kernel will not
+ work yet.
+ * fixed bug 189: The compiler now respects NOTINLINE declarations for
+ functions declared in FLET and LABELS. (I.e. "LET conversion" is
+ suppressed.) Also now that the compiler is looking at declarations
+ in the environment, it checks optimization declarations as well,
+ and suppresses inlining when (> DEBUG SPEED).
+ * More fixes have been made to treatment of floating point exception
+ treatment and other Unix signals. In particular, floating point
+ exceptions no longer cause Bus errors on the SPARC/Linux platform.
+ * The detection and handling of control stack exhaustion (infinite
+ or very deeply nested recursion) has changed. Stack exhaustion
+ detection is now done by write-protecting pages at the OS level
+ and applies at all optimization settings; when found, a
+ SB-KERNEL:CONTROL-STACK-EXHAUSTED condition (subclass of
+ STORAGE-CONDITION) is signalled, so stack exhaustion can no longer
+ be caught using IGNORE-ERRORS.
+ * Bugs 65, 70, and 109 fixed: The compiler now preserves invariants
+ correctly when transforming recursive LABELS functions to LETs.
+ (thanks to Alexey Dejneka)
+ * Bug 48a./b. fixed: SYMBOL-MACROLET now refuses to bind symbols
+ that are names of constants or global variables.
+ * Bug fix: DEFINE-ALIEN-ROUTINE now declaims the correct FTYPE for
+ alien routines with docstrings.
+ * Bug 184 fixed: Division of ratios by the integer 0 now signals an
+ error of type DIVISION-BY-ZERO. (thanks to Wolfhard Buss and
+ Raymond Toy)
+ * Bug fix: Errors in PARSE-INTEGER are now of type PARSE-ERROR.
+ (thanks to Eric Marsden)
+ * Bug fix: COERCE to (COMPLEX FLOAT) of rationals now returns an
+ object of type (COMPLEX FLOAT). (thanks to Wolfhard Buss)
+ * Bug fix: The SPARC backend can now compile functions involving
+ LOGAND and stack-allocated arguments. (thanks to Raymond Toy)
+ * Bug fix: We no longer segfault on passing a non-FILE-STREAM stream
+ to a functions expecting a PATHNAME-DESIGNATOR.
+ * Bug fix: DEFGENERIC now enforces the ANSI restrictions on its
+ lambda lists. (thanks to Alexey Dejneka)
+ * Bug fix: changed encoding of PCL's internal MAKE-INSTANCE
+ functions so that EXPORTing the name of the class doesn't cause
+ MAKE-INSTANCE functions from earlier DEFCLASSes to get lost (thanks
+ to Antonio Martinez for reporting this)
+ * Bug 192 fixed: The internal primitive DATA-VECTOR-REF can now be
+ constant-folded without failing an assertion. (thanks to Einar
+ Floystad Dorum for reporting this)
+ * Bugs 123 and 165 fixed: array specializations on as-yet-undefined
+ types are now dealt with more correctly by the compiler.
+ * Minor incompatible change: COMPILE-FILE-PATHNAME now merges its
+ OUTPUT-FILE argument with its INPUT-FILE argument, resulting in
+ behaviour analogous to RENAME-FILE. This puts its behaviour more
+ in line with ANSI's wording on COMPILE-FILE-PATHNAME. (thanks to
+ Marco Antinotti)
+ * The fasl file version number has changed again. (because of the
+ bug fix involving the names of PCL MAKE-INSTANCE functions)
+
+changes in sbcl-0.7.6 relative to sbcl-0.7.5:
+ * bug fix: Floating point exceptions are treated much more
+ consistently on the x86/Linux and PPC/Linux platforms.
+ * Array initialization with :INITIAL-ELEMENT is now much faster for
+ cases when the compiler cannot open code the array creation, but
+ does know what the UPGRADED-ARRAY-ELEMENT-TYPE will be. General
+ array accesses have also seen a speed increase.
+ * bug fix: LOAD :IF-DOES-NOT-EXIST NIL now works when file type is
+ specified. (This was at the root of some bad interactions between
+ SBCL and ILISP: thanks to Gregory Wright for diagnosing this and
+ reporting the bug.)
+ * bug fix: Internal error arguments for undefined functions are now
+ computed correctly on the PPC/Linux platform.
+ * bug fix: Bad &REST syntax is now checked correctly. (thanks to
+ Raymond Toy's patch for CMU CL)
+ * Support for the Solaris 9 operating environment has been included
+ (thanks to Daniel Merritt)
+ * A very ugly but hopefully complete draft of the missing FFI chapter
+ of the manual has been created by reformatting the corresponding
+ CMU CL manual chapter into (currently very ugly and incoherent)
+ DocBook and bringing it up to date for SBCL behavior. Thus, the
+ manual is now essentially complete, at least by my extreme
+ once-and-only-once standards, whereby it's acceptable to refer to
+ the doc strings of SB-EXT functions as the primary documentation.
+ * The fasl file version number has changed again, due to cleanup of
+ (user-invisible) bitrotted stuff. (E.g. *!INITIAL-FDEFN-OBJECTS*
+ is no longer a static symbol.)
+
+changes in sbcl-0.7.5 relative to sbcl-0.7.4:
+ * SBCL now builds with OpenMCL (version 0.12) as the
+ cross-compilation host; also, more progress has been made toward
+ bootstrapping under CLISP.
+ * SBCL now runs on the Tru64 (aka OSF/1) operating system on the
+ Alpha architecture.
+ * bug 158 fixed: The compiler can now deal with integer loop
+ increments different from 1; fixing this turned out also to fix
+ bug 164.
+ * bug 169 fixed: no more bogus warnings about using lexical bindings
+ despite the presence of perfectly good SPECIAL declarations (thanks
+ to David Lichteblau)
+ * bug 175 fixed: CHANGE-CLASS is now more ANSI-conforming,
+ accepting initargs. (thanks to Espen Johnsen and Pierre Mai)
+ * bug 179 fixed: DIRECTORY can now deal with filenames with pattern
+ characters in them.
+ * bug 180 fixed: Method combination specifications no longer ignore
+ the :MOST-SPECIFIC-LAST option. (thanks to Pierre Mai)
+ * bug fix: Structure type predicate functions now check their argument
+ count as they should.
+ * bug fix: Classes with :METACLASS STRUCTURE-CLASS now print
+ correctly. (thanks to Pierre Mai)
+ * minor incompatible change: The --noprogrammer option is deprecated
+ in favor of the new --disable-debugger option, which is very similar.
+ (The major difference is that it takes effect at a slightly different
+ time at startup, causing handling of errors in --sysinit and
+ --userinit files will be affected differently.) The
+ SB-EXT:DISABLE-DEBUGGER and SB-EXT:ENABLE-DEBUGGER functions have
+ been added to allow this functionality to be controlled from ordinary
+ Lisp code. (ENABLE-DEBUGGER should help people like the Debian
+ maintainers, who might want to run non-interactive scripts to
+ build SBCL cores which will later be used interactively.)
+ * minor incompatible change: The LOAD function no longer, when given
+ a wild pathname to load, loads all files matching that pathname.
+ Instead, an error of type FILE-ERROR is signalled.
+
+changes in sbcl-0.7.4 relative to sbcl-0.7.3:
+ * bug 147 fixed: The compiler preserves its block link/count
+ invariants more correctly now so that it doesn't crash. (thanks
+ to Alexey Dejneka)
+ * Dynamic loading of object files in OpenBSD is now supported. (thanks
+ to Pierre Mai)
+ * COMPILE now works correctly on macros. (thanks to Matthias Hoelzl)
+ * GET-MACRO-CHARACTER and SET-MACRO-CHARACTER now represent
+ no-value-for-this-character as NIL (as specified by ANSI).
+ * HOST-NAMESTRING on physical pathnames now returns a string that is
+ valid as a host argument to MERGE-PATHNAMES and to MAKE-PATHNAME.
+ (thanks to Christophe Rhodes)
+ * The Alpha port handles icache flushing more correctly. (thanks to
+ Dan Barlow)
+ * More progress has been made toward bootstrapping under CLISP. (thanks
+ to Christophe Rhodes)
+ * The fasl file format has changed again, because dynamic loading
+ on OpenBSD (which has non-ELF object files) motivated some cleanups
+ in the way that foreign symbols are transformed and passed around.
+ * minor incompatible change: The ASCII RUBOUT character, (CHAR-CODE 127),
+ is no longer treated as whitespace by the reader, but instead as
+ an ordinary character. Thus e.g. (READ-FROM-STRING "A\7fB") returns
+ |A\7fB|, instead of A as it used to.
+
+changes in sbcl-0.7.3 relative to sbcl-0.7.2:
+ * ANSI's DEFINE-SYMBOL-MACRO is now supported. (thanks to Nathan
+ Froyd porting CMU CL code originally by Douglas Thomas Crosher)
+ * SBCL now runs on the PPC archtiecture under Linux. It actually did
+ this as of 0.7.1.45, but was left out of the previous news section
+ (thanks to Dan Barlow)
+ * SBCL now runs on the Solaris operating system on SPARC architectures
+ (thanks to Christophe Rhodes's port of the CMUCL runtime)
+ * cleanups to the runtime on SPARC, both Linux and Solaris, and for
+ gcc>=3 (thanks to Nathan Froyd and Ingvar Mattsson)
+ * SPARC backend cleanups, allowing builds of cores optimized for V8
+ and V9 SPARCS, and also emission of code targeted to a particular
+ backend chosen at runtime (thanks to Christophe Rhodes and Raymond
+ Toy)
+ * SBCL is closer to bootstrapping under CLISP, thanks to various
+ fixes by Christophe Rhodes.
+ * The fasl file format has changed again, to allow the compiler's
+ INFO database to support symbol macros.
+ * The user manual (in doc/) is formatted into HTML more nicely.
+ (thanks to coreythomas)
+ * The system is smarter about SUBTYPEP relationships, especially
+ those involving NOT types (including types such as ATOM which are
+ represented internally using NOT types). Thus SUBTYPEP is less
+ likely to return (VALUES NIL NIL) in general, and in particular
+ bugs 58 and (the remaining bits of) bug 50 are fixed. (thanks to
+ Christophe Rhodes)
+ * The fasl file format has changed again, because the internal
+ representation of types now includes a new slot to support the new
+ SUBTYPEP-of-NOT-types logic.
+ * (not a change in the main branch of SBCL, but a related prototype
+ which can hopefully be merged into the main branch of SBCL in the
+ future:) Brian Spilsbury has produced a Unicode-enabled variant of
+ sbcl-0.7.0, available as a patch against sbcl-0.7.0 at
+ <http://designix.com.au/brian/SBCL/sbcl-0.7.0-unicode.p0.gz>.
+ * Bug 151 fixed: GET-DISPATCH-MACRO-CHAR now returns NIL for undefined
+ dispatch macro character combinations. (thanks to Alexey Dejneka)
+ * Bugfix in PARSE-NAMESTRING: we now correctly parse unix namestrings
+ that superficially look like logical namestrings correctly.
+ * USER-HOMEDIR-PATHNAME now returns a (physical) pathname that SBCL
+ can deal with.
+ * Bugfix in DEFSTRUCT: BOA constructor lambda lists now accept (name
+ default supplied-p) for &optional and &key arguments. (thanks to
+ Martin Atzmueller)
+
+changes in sbcl-0.7.2 relative to sbcl-0.7.1:
+ * incompatible change: The compiler is now less aggressive about
+ tail call optimization, doing it only when (> SPACE DEBUG) or
+ (> SPEED DEBUG). (This is an incompatible change because there are
+ programs which relied on the old CMU-CL-style behavior to optimize
+ away their unbounded recursion which will now die of stack overflow.)
+ * minor incompatible change: The default BYTES-CONSED-BETWEEN-GCS
+ for non-GENCGC systems has been increased to 20M (since that
+ seems much closer to the likely performance optimum for modern
+ systems than the old 4M value was)
+ * minor incompatible change: new larger values for *DEBUG-PRINT-LENGTH*
+ and *DEBUG-PRINT-LEVEL*
+ * SBCL runs on SPARC systems now. (thanks to Christophe Rhodes' port
+ of CMU CL's support for SPARC, and various endianness and other
+ SBCL portability fixes due to Christophe Rhodes and Dan Barlow)
+ * new syntactic sugar for the Unix command line: --load foo.bar is now
+ an alternate notation for --eval '(load "foo.bar")'.
+ * bug fixes:
+ ** The system now detects stack overflow and handles it gracefully,
+ at least for (OR (> SAFETY (MAX SPEED SPACE)) (= SAFETY 3))
+ optimization settings. (This is a good thing in general, and
+ its introduction in this version should be particularly timely
+ for anyone whose code fails because of suppression of tail
+ recursion!)
+ ** The system now hunts for the C variable "environ" in a more
+ devious way, to avoid segfaults when the C library version differs
+ between compile time and run time. (thanks to Christophe Rhodes)
+ ** INTEGER-valued CATCH tags now work. (thanks to Alexey Dejneka,
+ and also to Christophe Rhodes for porting the fix to non-X86 CPUs)
+ ** The compiler no longer issues bogus style warnings for undefined
+ classes in the same source file as the DEFCLASSes which defined
+ them. (thanks to Stig E Sandoe for reporting and Martin Atzmueller
+ for fixing this)
+ ** fixes in CONDITION class precedence list for undefined function
+ errors (thanks to Alexei Dejneka)
+ ** *DEFAULT-PATHNAME-DEFAULTS* is used more consistently and
+ correctly. (thanks to Dan Barlow)
+ ** portability fixes aiming at bootstrapping under CLISP (thanks
+ to Dave McDonald and Christophe Rhodes)
+ ** FORMAT fixes (thanks to Robert Strandh and Dan Barlow)
+ ** fixes in type translation and and type inference (thanks to
+ Christophe Rhodes)
+ ** fixes to optimizer internal errors (thanks to Alexei Dejneka)
+ ** various fixes in the new ports (thanks to Dan Barlow)
+ * several changes related to debugging:
+ ** suppression of tail recursion, as noted above
+ ** stack overflow detection, as noted above
+ ** The default implementation of TRACE has changed. :ENCAPSULATE T
+ is now the default. (For some time encapsulation has been more
+ reliable than the breakpoint-based :ENCAPSULATE NIL
+ implementation, at least on X86 systems; and I just noticed that
+ encapsulation also seems closer to the spirit of the ANSI
+ specification.)
+
+changes in sbcl-0.7.1 relative to sbcl-0.7.0:
+* mostly bug fixes:
+ ** SB-ALIEN:LOAD-FOREIGN and SB-ALIEN:LOAD-1-FOREIGN are set
+ up properly again. (There was a packaging bug in 0.7.0 which
+ left their definitions in SB-SYS::LOAD-FOREIGN and
+ SB-SYS::LOAD-1-FOREIGN. LOAD-FOREIGN and LOAD-1-FOREIGN are
+ vital for most things which interface to C-level interfaces,
+ like extensions working with sockets or databases or
+ Perl-compatible regexes or whatever, and the need to fix
+ this bug is the main reason that 0.7.1 was released so
+ soon after 0.7.0.)
+ ** DEFGENERIC is now choosier about the methods it redefines, so that
+ reLOADing a previously-LOADed file containing DEFGENERICs does
+ the right thing now. Thus, the Lispy edit/reLOAD-a-little/test
+ cycle now works as it should. (thanks to Alexey Dejneka)
+ ** Bug 106 (types (COMPLEX FOO) where FOO is an obscure type) was
+ fixed by Christophe Rhodes. (He actually submitted this patch
+ months ago, and I delayed until after 0.7.0.)
+ ** Bug 111 (internal compiler confusion about runtime checks on
+ FUNCTION types) was fixed by Alexey Dejneka.
+* Some internal cleanups (getting rid of variables which aren't
+ needed now that the byte interpreter is gone) caused the fasl
+ file format number to change again.
+
+changes in sbcl-0.7.0 relative to sbcl-0.6.13:
+* major incompatible change: The default fasl file extension, i.e. the
+ default extension for files produced by COMPILE-FILE, has changed
+ to ".fasl", for all architectures. (No longer ".x86f" and ".axpf".)
+* compiler changes:
+ ** There are many changes in the implementation of the compiler.
+ SBCL is now essentially a compiler-only implementation of ANSI
+ Common Lisp. EVAL still "interprets" a few special cases, but
+ almost all the interesting cases are handled by creating
+ a LAMBDA expression, calling COMPILE on it, then calling
+ FUNCALL on the result.
+ ** The EVAL-WHEN code has been rewritten to be ANSI-compliant, and
+ various related bugs (IR1-1, IR1-2, IR1-3, IR1-3a) have gone away.
+ Since the code is newer, there might still be some new bugs
+ (though not as many as before Martin Atzmueller's fixes:-). But
+ the new code is substantially simpler and clearer, and hopefully
+ any remaining bugs will be simpler, less fundamental, and more
+ fixable then the bugs in the old code.
+ ** The revised compiler is still a little unsteady on its feet.
+ In particular,
+ *** The debugging information it produces (particularly the names
+ of FUNCTION objects) is sometimes much less useful than what
+ the old compiler produced.
+ *** The support for inlining FOO when you (DECLAIM (INLINE FOO))
+ then do (DEFUN FOO ..) in a non-null lexical environment (e.g.
+ within a MACROLET) has been temporarily weakened.
+ ** There are new compiler optimizations for various functions:
+ *** the sequence functions FIND, POSITION, FIND-IF, POSITION-IF,
+ FIND-IF-NOT, POSITION-IF-NOT, and FILL
+ *** the math functions TRUNCATE, FLOOR, and CEILING
+ *** the function-of-all-trades COERCE
+ Mostly these should be transparent, but there's one
+ potentially-annoying problem (bug 117): when the compiler
+ inline-expands a function and does type analysis on the result,
+ it can create control paths which have type mismatches, and
+ when it can't prove that those control paths aren't taken,
+ it will issue WARNINGs about the type mismatches. This is
+ a particular problem in practice for the new sequence functions.
+ It's not clear how this should be fixed, and for now, a
+ workaround is given in the entry for 117 in the BUGS file.
+ ** (Because of the interaction between the two previous items --
+ occasional inlining problems and new inline expansions -- some
+ of the new sequence function optimizations won't really kick in
+ completely until debugging information, and then inlining, are
+ straightened out in some future version.)
+* minor incompatible changes:
+ ** As part of a bug fix by Christophe Rhodes to DIRECTORY behavior,
+ DIRECTORY no longer implicitly promotes NIL slots of its
+ pathname argument to :WILD. In particular, when you ask for the
+ contents of a directory (which you used to be able to do without
+ explicit wildcards, e.g. (DIRECTORY "/tmp/")) you now need to use
+ explicit wildcards, e.g. (DIRECTORY "/tmp/*.*").
+ ** changes in behavior that ANSI explicitly defines to be
+ implementation dependent:
+ *** The new compiler-only implementation still conforms with ANSI,
+ but acts a little different than before. Besides the obvious
+ changes in performance tradeoffs (that the cost per form passed
+ to EVAL has gone up, and the cost per form executed by EVAL
+ has gone down), the behavior of the system changes a little
+ because there are no longer any interpreted function objects.
+ COMPILED-FUNCTION-P is now synonymous with FUNCTIONP, and
+ e.g. doing COMPILE on the output of interactive DEFUN is
+ now a no-op.
+ *** The value of INTERNAL-TIME-UNITS-PER-SECOND has been increased
+ from 100 to 1000.
+ *** The default for the USE list in MAKE-PACKAGE and DEFPACKAGE
+ has changed from (:CL) to NIL.
+ *** The CHAR-NAME of unprintable ASCII characters which, unlike
+ e.g. #\Newline and #\Tab, don't have names specified in the
+ ANSI Common Lisp standard, is now based on their ASCII symbolic
+ names (#\Nul, #\Soh, #\Stx, etc.) The old CMU-CL-style names
+ (#\Null, #\^a, #\^b, etc.) are still accepted by NAME-CHAR, but
+ are no longer used for output.
+ ** changes in internal implementation constants:
+ *** The default value of *BYTES-CONSED-BETWEEN-GCS* has doubled, to
+ 4 million. (If your application spends a lot of time GCing and
+ you have a lot of RAM, you might want to experiment with
+ increasing it even more.)
+ ** The SB-C-CALL package has been merged into the SB-ALIEN package.
+ However, almost all old code should still continue to work without
+ immediate update, as SB-C-CALL is now a (deprecated) nickname
+ for SB-ALIEN.
+ ** Old operator names in the style DEF-FOO are now deprecated in
+ favor of new corresponding names DEFINE-FOO, for consistency with
+ the naming convention used in the ANSI standard (DEFSTRUCT, DEFVAR,
+ DEFINE-CONDITION, DEFINE-MODIFY-MACRO..). This mostly affects
+ internal symbols, but a few supported extensions like
+ SB-ALIEN:DEF-ALIEN-FUNCTION are also affected. (So e.g.
+ DEF-ALIEN-FUNCTION becomes DEFINE-ALIEN-FUNCTION.)
+ ** The debugger prompt sequence now goes "5]", "5[2]", "5[3]",
+ etc. as you get deeper into recursive calls to the debugger
+ command loop, instead of the old "5]", "5]]", "5]]]"
+ sequence. (I was motivated to do this when squabbles between
+ ILISP and SBCL left me very deeply nested in the debugger. In the
+ short term, this change will probably provoke more ILISP/SBCL
+ squabbles, but hopefully it will be an improvement in the long run.)
+ ** SB-ALIEN:DEFINE-ALIEN-FUNCTION (also known by the old deprecated
+ name DEF-ALIEN-FUNCTION) now does DECLAIM FTYPE for the defined
+ function, since declaiming return types involving aliens is
+ (1) annoyingly messy to do by hand and (2) vital to efficient
+ compilation of code which calls such functions.
+ ** SB-ALIEN:LOAD-FOREIGN and SB-ALIEN:LOAD-1-FOREIGN are no
+ longer reexported by the SB-EXT package. They're solely useful
+ for alien code, so it seems more logical that you should get
+ them from the SB-ALIEN package, not in SB-EXT.
+ ** :SB-CONSTRAIN-FLOAT-TYPE, :SB-PROPAGATE-FLOAT-TYPE, and
+ :SB-PROPAGATE-FUN-TYPE are no longer considered to be optional
+ features. Instead, the code that they used to control is always
+ built into the system.
+* many other bug fixes
+ ** DEFSTRUCT and DEFCLASS have been substantially updated to take
+ advantage of the new EVAL-WHEN stuff and to clean them up in
+ general, and they are now more ANSI-compliant in a number of
+ ways. Martin Atzmueller is responsible for a lot of this.
+ ** Besides the cleanups discussed above, Martin Atzmueller fixed
+ several other bugs:
+ *** fixes in READ-SEQUENCE and WRITE-SEQUENCE
+ *** correct ERROR type for various file operations
+ *** some fixes for Lisp streams
+ *** DEFMETHOD syntax checking
+ *** changing old weird representation of debug information as
+ strings (which, among their other deficiencies, don't transform
+ correctly when you rename packages, and don't change their
+ print representation when you change things like *PACKAGE*
+ and *PRINT-LENGTH*) to symbols and lists of symbols
+ He also made several improvements and fixed several bugs in DESCRIBE.
+ ** Alexey Dejneka fixed many bugs, including classic bugs and bugs he
+ discovered himself:
+ *** misbehavior of WRITE-STRING/WRITE-LINE
+ *** LOOP over keys of a hash table, LOOP bugs 49b and 81 and 103,
+ and several other LOOP problems as well
+ *** DIRECTORY when similar filenames are present
+ *** DEFGENERIC with :METHOD options
+ *** bug 126, in (MAKE-STRING N :INITIAL-ELEMENT #\SPACE))
+ *** bug in the optimization of ARRAY-ELEMENT-TYPE
+ *** argument ordering in FIND with :TEST option
+ *** mishandled package designator argument in APROPOS-LIST
+ *** various problems in the backquote readmacro
+ *** a bug in APROPOS
+ *** probably some others that I'm not describing very well here,
+ since the CVS log documents them by reference to sbcl-devel
+ messages, and the SourceForge archives aren't working well.:-(
+ ** Dan Barlow improved the Alpha port (and is making progress on the
+ PPC port, for those of you who think different).
+ ** Besides the DIRECTORY fixes and changes mentioned elsewhere,
+ Christophe Rhodes cleaned up the system self-test scripts (in tests/*),
+ contributed the optimization of FIND-IF-NOT and POSITION-IF-NOT, and
+ continues to work on the SPARC port (for those of you in a position
+ to look down upon our little PC-compatible boxes from a great height).
+ ** PPRINT-LOGICAL-BLOCK now copies the *PRINT-LINES* value on entry
+ and uses that copy, rather than the current dynamic value, when
+ it's trying to decide whether to truncate output. Thus e.g.
+ (let ((*print-lines* 50))
+ (pprint-logical-block (stream nil)
+ (dotimes (i 10)
+ (let ((*print-lines* 8))
+ (print (aref possiblybigthings i) stream)))))
+ should now truncate the logical block only at 50 lines, instead of
+ often truncating it at 8 lines, as it did before.
+* The doc/cmucl/ directory, containing old CMU CL documentation
+ from the time of the fork, is no longer part of the base system.
+ SourceForge has shut down its anonymous FTP service, and with it
+ my original plan for distributing the old CMU CL documentation
+ there. For now, if you need these files you can download an old
+ SBCL source release and extract them from it.
+* The fasl file version number changed again, for dozens of reasons,
+ some of which are apparent above.
+
+changes in sbcl-0.6.13 relative to sbcl-0.6.12:
+* a port to the Compaq/DEC Alpha CPU, thanks to Dan Barlow
+* Martin Atzmueller ported Tim Moore's marvellous CMU CL DISASSEMBLE
+ patch, so that DISASSEMBLE output is much nicer.
+* The code in the SB-PROFILE package now seems reasonably stable.
+ I still haven't decided what the final interface should look like
+ (I'd like PROFILE to interact cleanly with TRACE, since both
+ facilities use function encapsulation) but if you have a need
+ for profiling now, you can probably use it successfully with
+ the current CMU-CL-style interface.
+* Pathnames and *DEFAULT-DIRECTORY-DEFAULTS* are much more
+ ANSI-compliant, thanks to various fixes and tests from Dan Barlow.
+ Also, at Dan Barlow's suggestion, TRUENAME on a dangling symbolic
+ link now returns the dangling link itself, and for similar
+ reasons, TRUENAME on a cyclic symbolic link returns the cyclic
+ link itself. (In these cases the old code signalled an error and
+ looped endlessly, respectively.) Thus, DIRECTORY now works even
+ in the presence of dangling and cyclic symbolic links.
+* Compiler trace output (the :TRACE-FILE option to COMPILE-FILE)
+ is now a supported extension again, since the consensus on
+ sbcl-devel was that it can be useful for ordinary development
+ work, not just for debugging SBCL itself.
+* The default for SB-EXT:*DERIVE-FUNCTION-TYPES* has changed to
+ NIL, i.e. ANSI behavior, i.e. the compiler now recognizes
+ that currently-defined functions might be redefined later with
+ different return types.
+* Hash tables can be printed readably, as inspired by CMU CL code
+ of Eric Marsden and SBCL code of Martin Atzmueller.
+* better error handling in CLOS method combination, thanks to
+ Martin Atzmueller porting Pierre Mai's CMU CL patches
+* more overflow fixes for >16Mbyte I/O buffers
+* A bug in READ has been fixed, so that now a single Ctrl-D
+ character suffices to cause end-of-file on character streams.
+ In particular, now you only need one Ctrl-D at the command
+ line (not two) to exit SBCL.
+* fixed bug 26: ARRAY-DISPLACEMENT now returns (VALUES NIL 0) for
+ undisplaced arrays.
+* fixed bug 107 (reported as a CMU CL bug by Erik Naggum on
+ comp.lang.lisp 2001-06-11): (WRITE #*101 :RADIX T :BASE 36) now
+ does the right thing.
+* The implementation of some type tests, especially for CONDITION
+ types, is now tidier and maybe faster, due to CMU CL code
+ originally by Douglas Crosher, ported by Martin Atzmueller.
+* Some math functions have been fixed, and there are new
+ optimizers for deriving the types of COERCE and ARRAY-ELEMENT-TYPE,
+ thanks to Raymond Toy's work on CMU CL, ported by Martin Atzmueller.
+* (There are also some new optimizers in contrib/*-extras.lisp. Those
+ aren't built into sbcl-0.6.13, but are a sneak preview of what's
+ likely to be built into sbcl-0.7.0.)
+* A bug in COPY-READTABLE was fixed. (Joao Cachopo's patch to CMU
+ CL, ported to SBCL by Martin Atzmueller)
+* DESCRIBE now gives more information in some cases. (Pierre Mai's
+ patch to CMU CL, ported to SBCL by Martin Atzmueller)
+* Martin Atzmueller and Bill Newman fixed some bugs in INSPECT.
+* There's a new slam.sh hack to shorten the edit/compile/debug
+ cycle for low-level changes to SBCL itself, and a new
+ :SB-AFTER-XC-CORE target feature to control the generation of
+ the after-xc.core file needed by slam.sh.
+* minor incompatible change: The ENTRY-POINTS &KEY argument to
+ COMPILE-FILE is no longer supported, so that now every function
+ gets an entry point, so that block compilation looks a little
+ more like the plain vanilla ANSI section 3.2.2.3 scheme.
+* minor incompatible change: SB-EXT:GET-BYTES-CONSED now
+ returns the number of bytes consed since the system started,
+ rather than the number consed since the first time the function
+ was called. (The new definition parallels ANSI functions like
+ CL:GET-INTERNAL-RUN-TIME.)
+* minor incompatible change: The old CMU-CL-style DIRECTORY options,
+ i.e. :ALL, :FOLLOW-LINKS, and :CHECK-FOR-SUBDIRS, are no longer
+ supported. Now DIRECTORY always does the abstract Common-Lisp-y
+ thing, i.e. :ALL T :FOLLOW-LINKS T :CHECK-FOR-SUBDIRS T.
+* Fasl file version numbers are now independent of the target CPU,
+ since historically most system changes which required version
+ number changes have affected all CPUs equally. Similarly,
+ the byte fasl file version is now equal to the ordinary
+ fasl file version.