+ 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.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.10 relative to sbcl-0.7.9:
+ * Support for building SBCL for MIPS platforms running in
+ little-endian mode has now been checked in, and basic
+ functionality on said platforms verified.
+ * minor incompatible change: PCL now records the pathname of a file
+ in which methods and the like are defined, rather than its
+ truename.
+ * minor incompatible change: TRUENAME now considers the truename of
+ a file naming a directory to be the pathname with :DIRECTORY
+ component indicating that directory.
+ * minor incompatible change: a NAMED clause in the extended form of
+ LOOP no longer causes a BLOCK named NIL to surround the LOOP. The
+ reason for the previous behaviour is unclear.
+ * more systematization and improvement of CLOS and MOP conformance
+ in PCL (thanks to Gerd Moellman and Pierre Mai):
+ ** the standard ANSI CL generic function NO-NEXT-METHOD is now
+ implemented;
+ ** DEFINE-METHOD-COMBINATION no longer signals an error for
+ primary methods with no specializers;
+ ** the MOP generic function GENERIC-FUNCTION-DECLARATIONS is now
+ implemented;
+ ** the Readers for Class Metaobjects methods CLASS-DIRECT-SLOTS
+ and CLASS-DIRECT-DEFAULT-INITARGS have been implemented for
+ FORWARD-REFERENCED-CLASSes; error reporting on
+ CLASS-DEFAULT-INITARGS, CLASS-PRECEDENCE-LIST and CLASS-SLOTS
+ has been improved;
+ ** SXHASH on CLOS instances now uses a slot internal to the
+ instance to return different numbers on distinct instances,
+ while preserving the same return value through invocations of
+ CHANGE-CLASS;
+ ** DEFMETHOD signals errors when methods with longer incongruent
+ lambda lists are added to generic functions;
+ ** COMPUTE-CLASS-PRECEDENCE-LIST now has a method specialized on
+ CLASS, as specified in AMOP;
+ ** COMPUTE-SLOTS :AROUND now assigns locations sequentially based
+ on the order returned by the primary method for classes of
+ class STANDARD-CLASS;
+ ** DEFINE-METHOD-COMBINATION now works with the :ARGUMENTS option.
+ * fixed some bugs shown by Paul Dietz' test suite:
+ ** DOLIST puts its body in TAGBODY;
+ ** SET-EXCLUSIVE-OR sends arguments to :TEST function in the
+ correct order;
+ ** MULTIPLE-VALUE-SETQ evaluates side-effectful places before
+ value producing form;
+ ** if more variables are given to PROGV than values, extra
+ variables are bound and made to have no value;
+ ** NSUBSTITUTE on list arguments gets the right answer with
+ :FROM-END;
+ ** ELT signals an error of type TYPE-ERROR when the index argument
+ is not a valid sequence index;
+ ** LOOP signals (at macroexpansion time) an error of type
+ PROGRAM-ERROR when duplicate variable names are found;
+ ** LOOP supports DOWNTO and ABOVE properly; (thanks to Matthew Danish)
+ ** FUNCALL of special-operators now cause an error of type
+ UNDEFINED-FUNCTION;
+ ** PSETQ now works as required in the presence of side-effecting
+ symbol-macro places;
+ ** NCONC accepts any object as its last argument;
+ ** :COUNT argument to sequence functions may be BIGNUM; (thanks to
+ Gerd Moellman)
+ ** loop-for-as-package does not require a package to be explicitely
+ specified;
+ ** LOOP WITH now treats NIL in the d-var-spec correctly as an
+ ignored binding.
+ * fixed bug 166: compiler preserves "there is a way to go"
+ invariant when deleting code.
+ * fixed bug 172: macro lambda lists with required arguments after
+ &REST arguments now cause an error to be signalled. (thanks to
+ Matthew Danish)
+ * fixed Entomotomy PEEK-CHAR-WRONGLY-ECHOS-TO-ECHO-STREAM
+ bug. (thanks to Matthew Danish)
+ * fixed bug 225: STRING-STREAM is now a class. (reported by Gilbert
+ Baumann)
+ * fixed bug 136: CALL-NEXT-METHOD no longer gets confused when
+ arguments are lexically rebound. (thanks to Gerd Moellmann and
+ Pierre Mai)
+ * fixed bug 194: error messages are now more informative when there
+ is no primary method applicable in a call to a generic
+ function. (thanks to Gerd Moellmann)
+ * fixed bug in command line argument checking (thanks to Julian
+ Fondren)
+ * fixed bug in COUNT-IF, making it handle :FROM-END correctly
+ (thanks to Matthew Danish)
+ * incremented fasl file version number, because of the
+ SXHASH-related changes in the layout of CLOS data structures
+
+changes in sbcl-0.7.11 relative to sbcl-0.7.10:
+ * fixed bug 127: DEFSTRUCT now does not clobber old structure
+ accessors that are related by inheritance, as specified in the
+ :CONC-NAME section of the specification of DEFSTRUCT. (thanks to
+ Valtteri Vuorikoski)
+ * The compiler is now able to inline functions that were defined in
+ a complex lexical environment (e.g. inside a MACROLET).
+ * fixed bug in DESCRIBE, which now works on rank-0 arrays. (thanks
+ to Lutz Euler)
+ * Support for the upcoming FreeBSD-5.0 release has been included.
+ (thanks to Dag-Erling Smorgrav)
+ * fixed bug 219: DEFINE-COMPILER-MACRO no longer has compile-time
+ effect when it is not in a toplevel context.
+ * fixed bug 222: DEFMETHOD and SYMBOL-MACROLET interactions now
+ stand a better chance of being correct. (thanks to Gerd
+ Moellmann)
+ * fixed bug in COERCE, which now signals an error on coercing a
+ rational to a bounded real type which excludes the expected
+ answer.
+ * The compiler is now able to derive types more accurately from the
+ COERCE and COMPILE functions.
+ * fixed bug 223: functional binding is considered to be constant
+ only for symbols in the CL package.
+ * fixed bug 231: SETQ did not check the type of a variable being set
+ (reported by Robert E. Brown)
+ * A new optimization for MAKE-INSTANCE has been included, fixing
+ various bugs (including relating to :ALLOCATION :CLASS slots and
+ :DEFAULT-INITARGS over-eager evalueation). (thanks to Gerd
+ Moellmann)
+ * fixed some LOOP bugs revealed by Paul Dietz' test suite:
+ ** As required by ANSI, LOOP now disallows anonymous collection
+ clauses such as COLLECT I in conjunction with aggregate boolean
+ clauses such as THEREIS (= I 1);
+ ** LOOP now signals an error when any variable is reused in the
+ same loop (including the potentially useful construct analogous
+ to WITH A = 1 WITH A = (1+ A);
+ ** IT is only a special loop symbol within the first clause of a
+ conditional loop clause;
+ ** LOOP with a typed iteration variable over a hashtable now
+ signals a type error iff it should.
+ * fixed some other bugs revealed by Paul Dietz' test suite:
+ ** FILE-STREAM now names the class previously known as FD-STREAM;
+ ** in DEFSTRUCT, a bare :CONC-NAME (or a :CONC-NAME with no
+ argument) no longer signals an error;
+ ** likewise in DEFSTRUCT, :CONC-NAME NIL now respects the package
+ of the slot symbol, rather than using the current package
+ ((:CONC-NAME "") continues to intern the slot's name in the
+ current package);
+ * incremented fasl file version number, because of the incompatible
+ change to the DEFSTRUCT-DESCRIPTION structure, and again because
+ of the new implementation of DEFINE-COMPILER-MACRO.
+
+changes in sbcl-0.7.12 relative to sbcl-0.7.11:
+ * minor incompatible change: code processed by the "interpreter" or
+ EVAL now has a compilation optimization policy of (DEBUG 2)
+ (changed from (DEBUG 1)) to improve debuggability of interactive
+ development, and to allow the use of the debug RETURN command in
+ such code.
+ * an experimental implementation of the RETURN command for the
+ debugger has been included. (thanks to Frederik Kuivinen)
+ * fixed bug 62: constraints were not propagated into a loop.
+ * fixed bug in embedded calls of SORT (reported and investigated by
+ Wolfgang Jenkner).
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** printing and reading of arrays with some dimensions having
+ length 0 (thanks to Gerd Moellmann);
+ ** BOA constructor with &AUX argument without a default value does
+ not cause a type error;
+ ** CONSTANTP now returns true for all self-evaluating objects.
+
+changes in sbcl-0.7.13 relative to sbcl-0.7.12:
+ * incompatible packaging change: in line with Unix convention,
+ SBCL now looks for its core file in /usr/{local/,}lib/sbcl/sbcl.core
+ if it's not in $SBCL_HOME. It also sets SBCL_HOME to match.
+ * REQUIRE and PROVIDE are now optionally capable of doing something
+ useful. See the documentation string for REQUIRE.
+ * infrastructure for a managed SBCL contrib system: contributed
+ modules in this release include:
+ ** the ASDF system definition facility;
+ ** an interface to the BSD Sockets API;
+ ** an ACL-like convenience interface to the repl;
+ (thanks to Kevin Rosenberg)
+ ** an implementation of ROTATE-BYTE, with efficient implementation
+ on x86 hardware;
+ * fixed a bug in LOG, so that LOG of a rational argument near 1 now
+ gives a closer approximation to the right answer than previously.
+ (thanks to Raymond Toy)
+ * fixed bug 157: TYPEP, SUBTYPEP, UPGRADED-ARRAY-ELEMENT-TYPE and
+ UPGRADED-COMPLEX-PART-TYPE now take (ignored, in all situations)
+ optional environment arguments, as required by ANSI.
+ * fixed bugs in other functions taking environment objects, allowing
+ calls with an explicit NIL environment argument to be compiled
+ without error.
+ * fixed bug 228: primary return values from
+ FUNCTION-LAMBDA-EXPRESSION are either NIL or suitable for input to
+ COMPILE or FUNCTION.
+ * fixed a bug in DEFSTRUCT: predicates for :NAMED structures with
+ :TYPE will no longer signal errors on innocuous objects.
+ * fixed bug 231b: SETQ is better at respecting type declarations in
+ the lexical environment.
+ * fixed a bug in DEFCLASS: classes named by symbols with no or
+ unprintable packages can now be defined.
+ * fixed a bug in RESTART-BIND: The :TEST-FUNCTION option had been
+ carelessly renamed to :TEST-FUN. (thanks to Robert E. Brown)
+ * fixed compiler failure related to checking types of functions.
+ (reported by Robert E. Brown)
+ * the compiler is now much more consistent in its error-checking
+ treatment of bounding index arguments to sequence functions: in
+ (SAFETY 3) code, errors will be signalled in almost all cases if
+ invalid sequence bounding indices are passed to functions defined
+ by ANSI to operate on sequences.
+ * fixed a bug in the build procedure: documentation of SBCL-specific
+ packages is now preserved and available in the final Lisp image.
+ * lifted FDEFINITION lookup out of loops in the implementation of
+ many list operations. (thanks to Robert E. Brown)
+ * fixed a bug in the reader: the #n# reader macro now works for
+ objects of type STANDARD-OBJECT. (reported by Tony Martinez)
+ * the compiler is now aware that SYMBOL-FUNCTION returns a FUNCTION
+ and that READ-DELIMITED-LIST returns a LIST. (thanks to Robert
+ E. Brown and Tony Martinez respectively)
+ * PCL is now smarter about SLOT-VALUE, (SETF SLOT-VALUE) and
+ SLOT-BOUNDP: in particular, it is now able to optimize them much
+ better, and is now not vulnerable to having packages renamed.
+ Furthermore, a compliance bug has been fixed: SLOT-MISSING is now
+ always called when a slot is not present in an instance. (thanks
+ to Gerd Moellmann)
+ * fixed a bug related to CONCATENATED-STREAMs: PEEK-CHAR will no
+ longer signal an error on unreading a character following EOF on
+ the previous constituent stream. (thanks to Tony Martinez)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** ARRAY-IN-BOUNDS-P now allows arbitrary integers as arguments,
+ not just nonnegative fixnums;
+ ** the logical bit-array operators such as BIT-AND now accept an
+ explicit NIL for their "opt-arg" argument (to indicate a
+ freshly-consed result bit-array);
+ ** ELT now signals an error on an invalid sequence index in safe
+ code;
+ ** the type system is now cleverer about negations of numeric
+ types, and consequently understands the BIGNUM and RATIO types
+ better;
+ ** the type system is now cleverer about the interaction between
+ INTEGER and RATIO types: while bugs still remain, many more
+ cases are accurately computed;
+ ** in TYPECASE, OTHERWISE now only introduces an otherwise-clause
+ if it is in the last clause;
+ ** CONSTANTLY now correctly returns a side-effect-free function in
+ all cases;
+ ** DECLARE is no longer treated as a special-operator; in
+ particular, SPECIAL-OPERATOR-P no longer returns T for DECLARE;
+ * incremented fasl file version number due to the change in the
+ DEFSTRUCT-SLOT-DESCRIPTION structure.
+
+changes in sbcl-0.7.14 relative to sbcl-0.7.13:
+ * a better implementation of SXHASH on (simple) bit vectors,
+ measured both in execution speed and in distribution of results
+ over the positive fixnums, has been installed. Likewise, a better
+ implementation of EQUAL for simple bit vectors is now available.
+ * fixed CEILING optimization for a divisor of form 2^k.
+ * fixed bug 240 (emitting extra style warnings "using the lexical
+ binding of the symbol *XXX*" for &OPTIONAL arguments). (reported
+ by Antonio Martinez)
+ * fixed SXHASH, giving different results for NIL depending on type
+ declarations (SYMBOL or LIST). (thanks to Gerd Moellmann)
+ * fixed bug in DEFPARAMETER and DEFVAR: they could assign a lexical
+ variable. (found by Rolf Wester)
+ * SBCL does not ignore type declarations for special
+ variables. (reported by rif on c.l.l 2003-03-05)
+ * some bug fixes in contrib/sb-aclrepl/
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** a bug in the CONS type specifier, whereby the CAR and CDR
+ types got intertwined, has been fixed;
+ ** the type system is now able to reason about the interaction
+ between INTEGER and RATIO types more completely;
+ ** APPEND, [N]REVERSE and NRECONC check that those their
+ arguments, which must be proper lists, are really so;
+ ** An array specialized to be unable to hold elements has been
+ implemented, as required -- yes, really -- by ANSI;
+ ** GETF and GET-PROPERTIES throw a TYPE-ERROR, not a SIMPLE-ERROR,
+ on malformed property lists;
+
+changes in sbcl-0.8alpha.0 relative to sbcl-0.7.14
+ * experimental native threads support (on x86 Linux >=2.4 only).
+ This is not compiled in by default: you need to add :SB-THREAD to
+ the target features. See the "Beyond ANSI" chapter of the manual
+ for details.
+ * fix for longstanding nonANSIism: The old distinction between
+ CL:CLASS objects and SB-PCL:CLASS objects has been eliminated.
+ The return value from CL:FIND-CLASS is now a CLOS class, and
+ likewise that of CL:CLASS-OF; CL:BUILT-IN-CLASS,
+ CL:STRUCTURE-CLASS and CL:STANDARD-CLASS name CLOS classes.
+ * An interface to the MetaObject Protocol, as described in Kiczales,
+ des Rivieres and Bobrow's "The Art of the Metaobject Protocol",
+ MIT Press, 1991, is available from the SB-MOP package.
+ * incompatible change: the SB-PCL package should now be considered
+ a private implementation detail, and no longer a semi-private MOP
+ interface.
+ * minor incompatible change: due to rearrangement for threads, the
+ control stack and binding stack are now allocated at arbitrary
+ addresses instead of being hardcoded per-port. Users affected by
+ this probably have to be doing advanced things with shared
+ libraries, and will know who they are.
+ * minor incompatible change: Previously, all --eval forms used were
+ processed with READ before any of them were processed with EVAL.
+ Now each --eval form is processed with both READ and EVAL before
+ the next --eval form is processed. (Thus package operations like
+ sbcl --eval "(defpackage :foo)" --eval "(print 'foo::bar)" now
+ work as the user might reasonably expect.)
+ * minor incompatible change: *STANDARD-INPUT* is now only an
+ INPUT-STREAM, not a BIDIRECTIONAL-STREAM. (thanks to Antonio
+ Martinez)
+ * minor incompatible change: Y-OR-N-P is now character-oriented,
+ not line oriented. Also, YES-OR-NO-P now works without errors.
+ (thanks to Antonio Martinez)
+ * sb-aclrepl module improvements: an integrated inspector, added
+ repl features, and a bug fix to :trace command.
+ * Known functions, which cannot be open coded by the backend, are
+ considered to be able to check types of their arguments. (fixing
+ a bug report by Nathan J. Froyd)
+ * fixed a bug in computing method discriminating functions: It is
+ now possible to define methods specialized on classes which have
+ forward-referenced superclasses. (thanks to Gerd Moellmann)
+ * fixed evaluation order in optional entries (reported by Gilbert
+ Baumann)
+ * SB-MOP:ENSURE-CLASS-USING-CLASS now takes its arguments in the
+ specified-by-AMOP order of (CLASS NAME &REST ARGS &KEY).
+ * SB-MOP:COMPUTE-EFFECTIVE-SLOT-DEFINITION now takes the
+ required-by-AMOP NAME argument, as well as CLASS and
+ DIRECT-SLOT-DEFINITIONS. (thanks to Kevin Rosenberg)
+ * fixed bug 20: DEFMETHOD can define methods using names that are
+ not the proper names of classes to designate class specializers.
+ * bug fix: INTERACTIVE-STREAM-P now works on streams associated with
+ Unix file descriptors, instead of blowing up. (thanks to Antonio
+ Martinez)
+ * Garbage collection refactoring: user-visible change is that a
+ call to the GC function during WITHOUT-GCING will not do garbage
+ collection until the end of the WITHOUT-GCING. If you were doing
+ this you were probably losing anyway.
+ * fixed bug in MEMBER type: (MEMBER 0.0) is not the same as
+ (SINGLE-FLOAT 0.0 0.0), because of the existence of -0.0 which is
+ TYPEP the latter but not the former.
+ * The compiler issues a full WARNING for calls to undefined functions
+ with names from the CL package.
+ * MAP-INTO for a vector destination is open coded. (reported by
+ Brian Downing on c.l.l)
+ * bug fix: the long form of DEFINE-METHOD-COMBINATION now accepts a
+ documentation string.
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** COPY-ALIST now signals an error if its argument is a dotted
+ list.
+ ** Condition slots are now accessed more correctly in the presence
+ of multiple initargs for a given slot.
+ ** The USE-VALUE, CONTINUE and STORE-VALUE functions now correctly
+ exclude restarts of the same name associated with a different
+ condition.
+ ** DEFCLASS of forward-referenced classes with another
+ forward-referenced class in the superclasses list no longer
+ causes an error.
+ ** Condition slots are now initialized once each, not multiple
+ times. (thanks to Gerd Moellmann)
+ ** CONVERT-MORE-CALL failed on a lambda list (&KEY). (thanks to
+ Gerd Moellmann)
+ ** &WHOLE and &REST arguments in macro lambda lists are patterns.
+ ** NSET-EXCLUSIVE-OR does not return extra elements when its
+ arguments contain duplicated elements.
+ ** RESTART-CASE understands local macros.
+ ** RESTART-CASE associates exactly its own restarts with a condition.
+ ** ENDP in safe mode checks its argument to be of type LIST.
+ ** COPY-SYMBOL in a threaded build no longer fails when the symbol
+ in question is unbound.
+ ** Optimized MAKE-INSTANCE functions no longer cause internal
+ assertion failures in the presence of duplicate initargs.
+ ** SLOT-MAKUNBOUND returns the instance acted upon, not NIL.
+ ** Side-effectful :DEFAULT-INITARGS have their side-effects
+ propagated even in the ctor optimized implementation of
+ MAKE-INSTANCE.
+ ** :ALLOW-OTHER-KEYS NIL is now accepted in an initarg list.
+
+changes in sbcl-0.8.0 relative to sbcl-0.8alpha.0
+ * SBCL now builds using CLISP (version of late April 2003 from CVS) as
+ cross-compilation host. As a consequence, we can now bootstrap our
+ way up to SBCL starting with a bare gcc toolchain and human-readable
+ source code (first the source to CLISP, then the source to SBCL).
+ * A contributed module containing a partial implementation of the
+ simple-streams interface has been included. (thanks to Rudi
+ Schlatte)
+ * A contributed module implementing the RFC1321 Message Digest
+ Algorithm, known as MD5, has been included.
+ * minor incompatible change: The :NEGATIVE-ZERO-IS-NOT-ZERO feature
+ no longer has any effect, as the code controlled by this feature
+ has been deleted. (As far as we know, no-one has ever built using
+ this feature, and its semantics were confused in any case).
+ * minor incompatible change: As a consequence of making SLOT-EXISTS-P
+ work on conditions (as required by the ANSI specification),
+ SLOT-VALUE, (SETF SLOT-VALUE) and SLOT-BOUNDP likewise have the
+ expected behaviour on conditions. Users should note, however,
+ that such behaviour is not required by the ANSI specification,
+ and so use of this behaviour may render their code unportable.
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** the GENERIC-FUNCTION type is no longer disjoint from FUNCTION
+ types.
+ ** &ENVIRONMENT parameter in macro lambda list is bound first.
+ ** SXHASH on condition objects no longer returns NIL.
+ ** :ALLOCATION :CLASS slots are better treated; their values are
+ updated on class redefinition, and initforms inherited from
+ superclasses are applied.
+ ** REMOVE-METHOD returns its generic function argument even when
+ no method was removed.
+ ** SHARED-INITIALIZE now initializes the values of the requested
+ slots, including those with :ALLOCATION :CLASS.
+ ** ALLOCATE-INSTANCE now works on structure classes defined via
+ DEFSTRUCT (and not just by those from DEFCLASS :METACLASS
+ STRUCTURE-CLASS).
+ ** SLOT-EXISTS-P now works on conditions, as well as structures
+ and CLOS instances.
+ ** MAKE-LOAD-FORM now has the required methods on
+ STRUCTURE-OBJECT, CONDITION and STANDARD-OBJECT.
+ ** MAKE-LOAD-FORM-SAVING-SLOTS no longer returns a special
+ keyword, and now implements the SLOT-NAMES argument.
+ ** methods with &OPTIONAL arguments no longer allow too many
+ arguments to be passed in the call without error.
+ ** DEFGENERIC now checks that the :ARGUMENT-PRECEDENCE-ORDER
+ option is consistent with the required arguments of the generic
+ function lambda list.
+ * bug fix: REQUIRE accepts a string designator. (Thanks to
+ Antonio Martinez.)
+ * bug fix: SB-MOP:DIRECT-SLOT-DEFINITION-CLASS and
+ SB-MOP:EFFECTIVE-SLOT-DEFINITION-CLASS now have the
+ specified-by-AMOP lambda list of (CLASS &REST INITARGS).
+ * bug fix: The compiler now checks for duplicated variables in macro
+ lambda lists.
+ * bug fix: SETQ on globals returns the correct value.
+ * fixed bug 47.d: (DEFGENERIC IF (X)) now signals a PROGRAM-ERROR,
+ not a COMPILER-ERROR (followed by some other strange error on
+ choosing the CONTINUE restart).
+ * bug fix: make.sh and friends are now more consistent in the way that
+ they look for GNU "make".
+
+changes in sbcl-0.8.1 relative to sbcl-0.8.0:
+ * minor incompatible change: some nonsensical specialized lambda
+ lists (used in DEFMETHOD) which were previously ignored now signal
+ errors.
+ * minor incompatible change: the system is now aware of the types of
+ variables in the COMMON-LISP package, and will signal errors for
+ most violations of these type constraints (where previously they
+ were silently accepted).
+ * minor incompatible change: COMPILE-FILE now uses the freedom
+ afforded (ANSI 3.2.2.3) to use derived function types for
+ functions defined in the same file. This also permits the system
+ to warn on static type mismatches and function
+ redefinition. (Currently it does not work with high DEBUG level.)
+ * minor incompatible change: VALUES declaration is disabled.
+ * When issuing notes, the compiler now signals a condition of type
+ SB-EXT:COMPILER-NOTE, and provides an associated MUFFLE-WARNING
+ restart for use in user handlers. It is expected that the
+ COMPILER-NOTE condition will eventually become a condition
+ supertype to a hierarchy of note types, which will then be
+ handleable in a similar fashion. However, at the moment, no such
+ note subtypes yet exist. (SB-INT:SIMPLE-COMPILER-NOTE exists,
+ but it's an implementation detail, not a classification for the
+ purpose above.)
+ * Changes in type checking closed the following bugs:
+ ** type checking of unused values (192b, 194d, 203);
+ ** template selection based on unsafe type assertions (192c, 236);
+ ** type checking in branches (194bc).
+ * A short form of VALUES type specifier has ANSI meaning (it has
+ increased the number of situations when SBCL cannot perform type
+ checking).
+ * fixed bug in DEFSTRUCT: once again, naming structure slots with
+ keywords or constants is permissible.
+ * STREAM-READ-SEQUENCE and STREAM-WRITE-SEQUENCE now have methods
+ defined on the relevant FUNDAMENTAL-BINARY-{INPUT,OUTPUT}-STREAM
+ classes. (thanks to Antonio Martinez)
+ * improved ANSIness in DESCRIBE: The DESCRIBE function no longer
+ outputs FRESH-LINE or TERPRI, and no longer converts its stream
+ argument to a pretty-print stream. Instead, it leaves any such
+ operations to DESCRIBE-OBJECT methods.
+ * bug fix: APROPOS now respects the EXTERNAL-ONLY flag. (reported
+ by Teemu Kalvas)
+ * bug fix: NIL is now a valid destructuring argument in DEFMACRO
+ lambda lists. (thanks to David Lichteblau)
+ * bug fix: Defining a generic function with a :METHOD-CLASS being a
+ subclass of STANDARD-METHOD no longer causes stack exhaustion.
+ (thanks to Gerd Moellmann)
+ * fixed bug 246: increased compilation speed of long
+ MULTIPLE-VALUE-BIND (and likewise of NTH-VALUE with a constant
+ integer argument)
+ * a contributed module implementing COMPILER-LET and MACROEXPAND-ALL
+ has been included.
+ * DEFCONSTANT now throws a condition of type
+ SB-EXT:DEFCONSTANT-UNEQL if it is being asked to redefine a
+ constant to a non-EQL value; CONTINUE and ABORT restarts
+ respectively change and preserve the value.
+ * fixed bug 63: The code walker, part of the implementation of CLOS,
+ is now better at handling symbol macros.
+ * bug fix: There is no longer an internal implementation type named
+ CL:LENGTH. (reported by Raymond Toy)
+ * bug fix: In macro-like defining macros/special operators the
+ implicit block does not enclose the lambda list.
+ * fixed bugs 10 and 43: Bare VALUES, AND, OR and MEMBER symbols (not
+ enclosed in parentheses) are not suitable as type specifiers, and
+ their use properly signals an error now.
+ * bug fix: An argument count mismatch for a type specifier in code
+ being compiled no longer causes an unhandled error at compile
+ time, but signals a compile-time warning.
+ * fixed simple vector readable printing
+ * bug fix: DESCRIBE takes more care over whether the class
+ precedence list slot of a class is bound before accessing it.
+ (reported by Markus Krummenacker)
+ * bug fix: FORMATTER can successfully compile pretty-printer format
+ strings which use variants of the ~* directive inside.
+ * bug fix: SEARCH now applies its TEST predicate to the elements of
+ the arguments in the correct order. (thanks to Wolfhard Buss)
+ * fixed bug 235b: The compiler uses return types of MAPCAR and friends
+ in type inference. (thanks to Robert E. Brown)
+ * bug fix: Reading in symbols with an explicit package name of ""
+ (e.g. '||::FOO) now works correctly. (reported by Henrik Motakef)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** NIL is now allowed as a structure slot name.
+ ** Arbitrary numbers, not just REALs, are allowed in certain
+ circumstances in LOOP for-as-arithmetic clauses.
+ ** Multiple class redefinitions before slot access no longer
+ causes a type error.
+ ** (SETF FIND-CLASS) now accepts NIL as an argument to remove the
+ association between the name and a class.
+ ** Generic functions with non-standard method-combination and over
+ five methods all of which return constants no longer return NIL
+ after the first few invocations. (thanks to Gerd Moellmann)
+ ** CALL-NEXT-METHOD with no arguments now passes the original
+ values of the arguments, even in the presence of assignment.
+ ** Functions [N]SUBST*, LAST, NRECONC, [N]SUBLIS may return any
+ object.
+ ** DISASSEMBLE works with closures and funcallable instances.
+ ** ADD-METHOD now returns the generic function, not the new method.
+ ** FIND-METHOD signals an error if the lengths of the specializers
+ is incompatible with the generic function, even if the ERRORP
+ argument is true.
+ ** TYPE-OF returns recognizeable subtypes of all built-in-types of
+ which its argument is a member.
+ ** DEFCLASS only redefines the class named by its class-name
+ argument if that name is the proper name of the class;
+ otherwise, it creates a new class.
+ ** SLOT-UNBOUND now correctly initalizes the CELL-ERROR-NAME slot
+ of the UNBOUND-SLOT condition to the name of the slot.
+ ** (SETF (AREF bv 0) ...) did not work for bit vectors.
+ ** SLOT-UNBOUND and SLOT-MISSING now have their return values
+ treated by SLOT-BOUNDP, SLOT-VALUE, (SETF SLOT-VALUE) and
+ SLOT-MAKUNBOUND in the specified fashion.
+
+changes in sbcl-0.8.2 relative to sbcl-0.8.1:
+ * fixed bug 148: failure to inline-expand a local function left
+ garbage, confusing the compiler.
+ * fixed bugs 3cd: structure slot readers perform type check if the
+ slot can have an invalid value (i.e. it is either not initialized
+ or can be written with a less specific slot writer).
+ * bug fix: the compiler now traps array references to elements off
+ the end of an array; previously, the bounds checking in some
+ circumstances could go off-by-one.
+ * improved MACHINE-VERSION, especially on Linux (thanks to Lars
+ Brinkhoff)
+ * type declarations for array element types now obey the description
+ on the CLHS page "Declaration TYPE", as per discussions on
+ sbcl-help around 2003-05-08. This means that a declaration
+ (TYPE (ARRAY FOO) BAR) means that, within the scope of the
+ declaration, all references to BAR will be asserted or assumed
+ (with THE, so dependent on compiler policy) to involve objects of
+ type FOO. Note that no such declaration is implied in
+ (MAKE-ARRAY .. :ELEMENT-TYPE 'FOO).
+ * declared types of functions from the "Conditions"
+ chapter. (reported by Paul Dietz)
+ * bug fix: CERROR accepts a function as its first argument.
+ * bug fix: NTH an NTHCDR accept a bignum as index
+ arguments. (reported by Adam Warner)
+ * optimization: character compare routines now optimize comparing
+ against a constant character. (reported by Gilbert Baumann)
+ * bug fix: (SETF AREF) on byte-sized-element arrays with constant index
+ argument now works properly on the MIPS platform.
+ * fixed compiler failure on (TYPEP x '(NOT (MEMBER 0d0))).
+ * repeated evaluation of the same DEFSTRUCT, a slot of which is
+ declared to have a functional type, does not cause an error
+ anymore.
+ * fixed bug: sometimes MAKE-INSTANCE did not work with classes with
+ many :DEFAULT-INITARGS. (reported by Istvan Marko)
+ * fixed bug: if last continuation of a deleted block has a
+ destination, this destination should be deleted too. (reported by
+ ohler on #lisp)
+ * fixed a bug in the bootstrap process: the host compiler's values
+ of ARRAY-DIMENSION-LIMIT and ARRAY-TOTAL-SIZE-LIMIT no longer leak
+ into the newly-built SBCL. (reported by Eric Marsden on #lisp,
+ test case from Patrik Nordebo)
+ * improved the ability of the disassembler on the PPC platform to
+ provide helpful disassembly notes.
+ * SB-MOP:CLASS-PROTOTYPE on built-in-classes returns an instance of
+ the class in more cases than previously.
+ * bug fix: FILE-POSITION now understands :START and :END for
+ STRING-INPUT-STREAMs. (thanks to Nikodemus Siivola)
+ * bug fix: (SIGNED-BYTE 8) streams no longer return (UNSIGNED-BYTE
+ 8) data. (thanks to David Lichteblau)
+ * bug fix: it is possible to add a method to a generic function
+ without lambda list.
+ * bug fix: reader failed to signal END-OF-FILE inside an
+ object representation. (reported by Nikodemus Siivola)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** LAST and [N]BUTLAST should accept a bignum.
+ ** condition slot accessors are methods.
+ ** (VECTOR NIL) is a subtype of STRING.
+
+changes in sbcl-0.8.3 relative to sbcl-0.8.2:
+ * SBCL now builds and runs on MacOS X (version 10.2), or perhaps
+ more accurately, on the Darwin kernel running on PowerPC hardware.
+ (thanks to Brian Mastenbrook, Pierre Mai and Patrik Nordebo)
+ * Compiler code deletion notes now signal a condition of type
+ SB-EXT:CODE-DELETION-NOTE (a subtype of SB-EXT:COMPILER-NOTE) with
+ an associated MUFFLE-WARNING restart.
+ * The compiler now performs limited argument count validation of
+ constant format strings in FORMAT, and where appropriate in ERROR,
+ CERROR and WARN. (thanks to Gerd Moellmann)
+ * New ASDF-INSTALL contrib can be used for automatic download and
+ installation of third-party Lisp code from CCLAN or other sites
+ via CLiki.
+ * Threaded builds (:SB-THREAD) now support SB-THREAD:INTERRUPT-THREAD,
+ which forces another thread to execute a function supplied by the
+ caller.
+ * bug 75 fix: WITH-OUTPUT-TO-STRING (and MAKE-STRING-OUTPUT-STREAM)
+ now accept and act upon their :ELEMENT-TYPE keyword argument.
+ (reported by Martin Atzmueller, Edi Weitz)
+ * bug fix: FILE-POSITION now accepts position designators up to
+ ARRAY-DIMENSION-LIMIT or the extreme of the off_t range, whichever
+ is the greater. (thanks to Patrik Nordebo)
+ * bug fix: MAKE-ARRAY ignored :INITIAL-CONTENTS NIL. (reported by
+ Kalle Olavi Niemitalo)
+ * bug fix: the CLASS-PROTOTYPE of the GENERIC-FUNCTION class is now
+ printable. (reported by Eric Marsden)
+ * bug fix in sb-posix: mmap() now works on systems with a 64-bit
+ off_t, including Darwin and FreeBSD. (thanks to Andreas Fuchs)
+ * x86 bug fix in control stack exhaustion checking: now shows backtrace
+ * bug fix in WITH-TIMEOUT: now the body can have more than one form.
+ (thanks to Stig Sandoe)
+ * bug fix in READ-SEQUENCE: READ-SEQUENCE following PEEK-CHAR or
+ UNREAD-CHAR now correctly includes the unread character in the
+ target sequence. (thanks to Gerd Moellmann)
+ * bug fix in threaded builds: the system can now be suspended and
+ resumed by shell job control with minimal disruption.
+ * bug fixes in times and timezones >2038AD
+ * better handling of "where is GNU make?" problem in build scripts
+ (thanks to Nikodemus Siivola)
+ * new optimization: inside a named function any reference to a
+ function with the same name is considered to be a self-reference;
+ this behaviour is controlled with SB-C::RECOGNIZE-SELF-CALLS
+ optimization quality.
+ * new optimization on x86: logical functions and + now have
+ optimized (UNSIGNED-BYTE 32) versions, which are automatically
+ used when the result is truncated to 32 bits.
+ * VALUES declaration is partially enabled.
+ * fixes in SB-GROVEL (thanks to Andreas Fuchs)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** The system now obeys the constraint imposed by
+ UPGRADED-ARRAY-ELEMENT-TYPE that the upgraded array element
+ types form a lattice under type intersection.
+ ** FFLOOR, FTRUNCATE, FCEILING and FROUND work with integers.
+ ** ASSOC now ignores NIL elements in an alist.
+ ** CEILING now gives the right answer with MOST-NEGATIVE-FIXNUM
+ and (1+ MOST-POSITIVE-FIXNUM) answers.
+ ** The addition of a method with invalid qualifiers to a generic
+ function does not cause an error to be signalled immediately;
+ a warning is signalled, and the error is generated only on
+ calling the generic function.
+ * changed .fasl file version number, in part to add type codes for
+ new array subtypes UNSIGNED-BYTE 7, 15, 29, and 31 mandated by
+ obscure ANSI requirements
+
+changes in sbcl-0.8.4 relative to sbcl-0.8.3:
+ * incompatible change: The --disable-debugger command line
+ option now clobbers the debugger at a more fundamental
+ level, by redefining #'INVOKE-DEBUGGER instead of by
+ rebinding *DEBUGGER-HOOK*. The main difference is that BREAK
+ is specified by ANSI to ignore *DEBUGGER-HOOK* and
+ INVOKE-DEBUGGER regardless. Under the old system, BREAK would
+ enter the debugger REPL and then suffer recursive errors
+ because *DEBUG-IO* is also messed up in --disable-debugger mode;
+ while under the new system, BREAK in --disable-debugger mode
+ terminates the system just as an unhandled error would.
+ * fixed compiler performance when processing loops with a step >1;
+ * bug fix: DOCUMENTATION now retrieves generic function
+ documentation. Also, DOCUMENTATION and (SETF DOCUMENTATION)
+ support has been systematized, and now supports the methods
+ specified by ANSI, along with a default method and a method for
+ slot documentation. (reported by Nathan Froyd)
+ * bug fix: effective methods associated with a generic function are
+ no longer cached over a change of that generic function's method
+ combination. (reported by Andreas Fuchs)
+ * bug fix: RUN-PROGRAM now does not fail if some element in $PATH
+ names a non-existent directory. (thanks to Andreas Fuchs)
+ * bug fix: ROUND and TRUNCATE could, under certain circumstances on
+ the PPC platform, lead to stack corruption; this has been fixed.
+ (reported by Rainer Joswig)
+ * bug fix: ASH on an (UNSIGNED-BYTE 32) with a shift of -32 or lower
+ no longer ever returns 1 instead of 0. (thanks to Lars Brinkhoff)
+ * fixed bug 285: TRUNCATE on bignum arguments, and indeed bignum
+ arithmetic in general, is now much more reliable on the PPC
+ platform.
+ * bug fix: LOGCOUNT on (UNSIGNED-BYTE 64) objects on the Alpha
+ platform now returns the right answer.
+ * optimization: restored some effective method precomputation in
+ CLOS (turned off by an ANSI fix in sbcl-0.8.3); the amount of
+ precomputation is now tunable.
+ * optimization: compiler-internal data structure use has been
+ reviewed, and changes have been made that should improve the
+ performance of the compiler by about 20%.
+ * optimization: performance of FILL (and :INITIAL-ELEMENT) on
+ simple-base-strings and simple-bit-vectors is improved.
+ * optimization: the optimization of 32-bit logical and arithmetic
+ functions introduced in version 0.8.3 on the x86 has been
+ implemented on the mips, ppc and sparc platforms; an
+ implementation of the same facility, but for 64-bit arithmetic,
+ has been added for the alpha.
+ * microoptimization: the compiler is better able to make use of the
+ x86 LEA instruction for multiplication by constants.
+ * bug fix: in some situations compiler did not report usage of
+ generic arithmetic in (SPEED 3) policy.
+ * bug 145b fix: compiler used wrong type specifier while converting
+ MEMBER-types to numeric.
+ * bug fix: COMPILE-FILE must bind *READTABLE*. (reported by Doug
+ McNaught)
+ * bug fix: (SETF AREF) on byte-sized-element arrays with constant
+ index argument now works properly on the Alpha platform.
+ * bug fix: floating point exception treatment on the Alpha platform
+ is improved.
+ * bug fix: FILE-POSITION works much better on string input and
+ output streams. (thanks to Nikodemus Siivola)
+ * bug fix: many threading/garbage collection symptoms sorted.
+ SB-THREAD:INTERRUPT-THREAD now safe to call on a thread that
+ might be pseudo-atomic.
+ * internal change: Stopping for GC is now done with signals not
+ ptrace. GC is now done in whichever thread wanted it, instead of
+ in the parent.
+ * bug fix: GC hooks (missing since 0.8) reinstated, so finalizers
+ work again.
+ * bug fix: result form in DO is not contained in the implicit
+ TAGBODY.
+ * incompatible change: ICR structure is changed; the value part of
+ CONTINUATION is now called LVAR; corresponding functions are
+ renamed (e.g. SB-C::CONTINUATION-TYPE has become SB-C::LVAR-TYPE).
+ * added type deriver for ISQRT (thanks to Robert E. Brown).
+ * bug fix: better support for loading from the command line when an
+ initialization file sets (READTABLE-CASE *READTABLE*). (thanks
+ to Adam Warner)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** the RETURN clause in LOOP is now equivalent to DO (RETURN ...).
+ ** ROUND and FROUND now give the right answer when given very
+ small float arguments.
+ ** (FLOAT X) for X of type DOUBLE-FLOAT now returns X in all
+ circumstances.
+ ** optimizer for (EXPT X 0) did not work for X not of type FLOAT.
+ ** (GCD 0 <negative-integer>) returned <negative-integer>.
+ ** LCM should return a non-negative integer.
+ ** PARSE-INTEGER returned the index of a terminator instead of the
+ upper bounding index of a substring in case :JUNK-ALLOWED NIL.
+ ** PARSE-INTEGER returned an incorrect index being applied to a
+ displaced string.
+ ** LCM with two arguments of 0 returns 0 rather than signalling
+ DIVISION-BY-ZERO.
+ ** unsigned addition of a 32-bit constant with the high bit set no
+ longer causes an internal compiler error on the x86.
+ ** LOGBITP accepts a non-negative bignum as its INDEX argument.
+ ** compiler incorrectly derived types of DPB and DEPOSIT-FIELD
+ with negative last argument.
+ ** byte specifiers with zero size and position no longer cause
+ an error during type derivation.
+ ** bignum multiplication on the Alpha platform now returns the
+ right answer.
+ * porting: The system now builds on SuSE AMD64, although it still
+ generates a 32-bit binary.
+ * .fasl file incompatibility: The fasl file version number has
+ been incremented (because of the changes to internal compiler
+ data structures referred to above).
+
+changes in sbcl-0.8.5 relative to sbcl-0.8.4:
+ * New code in contrib/sb-introspect (still probably not entirely
+ stable yet) provides some support for smart Lisp development
+ environments like SLIME.
+ * The conditions signalled for errors occurring when loading .fasl
+ files have been systematized (inheriting from SB-EXT:INVALID-FASL)
+ in a way which should help ASDF recover gracefully.
+ * The REQUIRE/PROVIDE behavior of *MODULE-PROVIDER-FUNCTIONS*
+ stuff has been cleaned up. If you code contrib/ stuff, this might
+ affect you, and you can look at contrib/README, contrib/STANDARDS,
+ and/or the 0.8.4.27 diff to check.
+ * In full calls the compiler now does not generate checks for declared
+ argument types for all arguments.
+ * various threading fixes
+ ** and some experimental patches which didn't make it into
+ the main tree for this release, but which are shipped in
+ contrib/experimental-thread.patch as a possible fix for some
+ failures (deadlock, spinning...) in GC-intensive multithreaded
+ applications.
+ * fixed PPC build problem (source code incompatibility of different
+ library versions): added offsetof() hackery which attempts to divine
+ where glibc maintainers put uc_mcontext today
+ * fixed bug 282: compiler does not trust type assertions while passing
+ arguments to a full call.
+ * fixed bug 261: compiler allows NIL or "no value" to be accepted for
+ &OPTIONAL VALUES type parameter.
+ * fix bug 214: algorithm for noting rejected templates is now more
+ similar to that of template seletion. (also reported by rydis on
+ #lisp)
+ * fixed bug 141b: printing backquoted information readably and prettily
+ inserts a space where necessary.
+ * bug fix: obviously wrong type specifiers such as (FIXNUM 1) or
+ (CHARACTER 10) are now reported as errors, rather than propagated
+ as unknown types. (reported by piso on #lisp)
+ * bug fix: the :IF-EXISTS argument to OPEN now behaves correctly
+ with values NIL and :ERROR. (thanks to Milan Zamazal)
+ * fixed bug 191c: CLOS now does proper keyword argument checking as
+ described in CLHS 7.6.5 and 7.6.5.1.
+ * bug fix: LOOP forms using NIL as a for-as-arithmetic counter no
+ longer raise an error; further, using a list as a for-as-arithmetic
+ counter now raises a meaningful error.
+ * fixed bug 213a: even fairly unreasonable CONS type specifiers are
+ now understood by sequence creation functions such as MAKE-SEQUENCE
+ and COERCE.
+ * fixed bug 46k: READ-BYTE now signals an error when asked to read from
+ a STRING-INPUT-STREAM.
+ * compiler enhancement: SIGNUM is now better able to derive the type
+ of its result.
+ * type declarations inside WITH-SLOTS are checked. (reported by
+ salex on #lisp)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** incorrect optimization of TRUNCATE for a positive first
+ argument and negative second.
+ ** compiler failure in let-convertion during flushing dead code.
+ ** compiler failure while deriving type of TRUNCATE on an
+ interval, containing 0.
+ ** ASH of a negative bignum by a negative bignum count now returns
+ -1, not 0.
+ ** intersection of CONS types now canonicalizes properly, fixing
+ inconsistencies in SUBTYPEP.
+
+changes in sbcl-0.8.6 relative to sbcl-0.8.5:
+ * fixed a bootstrapping bug: the build process no longer assumes
+ that the various BOOLE-related constants have the same value in
+ host and target lisps. (noted by Paul Dietz' test suite on an
+ SBCL binary built from CLISP)
+ * The system can now be dynamically linked on the MIPS platform,
+ which enables dynamic loading of foreign code from Lisp. (thanks
+ to Ralf Baechle for discussions on the MIPS ABI)
+ * The system now records debugging information for its own source
+ files in a filesystem-position-independent manner, relative to
+ the "SYS" logical host.
+ * fixed a compiler bug: MV-LET convertion did not check references
+ to the "max args" entry point. (reported by Brian Downing)
+ * tweaked disassembly notes to be less confident about proclaiming
+ some instruction as an LRA. (thanks to Brian Downing)
+ * contrib update: SB-ACLREPL is now threadsafe; multiple listeners
+ now each have their own history, command character, and other
+ characteristics. (thanks to David Lichteblau)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** compiler failure in compiling LOGAND expressions including a
+ constant 0
+ ** Implementation of ASH-MOD32 on X86 and PPC did not work for the
+ shift greater than 32.
+ ** FLUSH-DEST did not mark blocks for type check regeneration.
+ ** HANDLER-CASE failed to accept declarations in handler clauses
+ in some circumstances.
+
+changes in sbcl-0.8.7 relative to sbcl-0.8.6:
+ * When built with the :SB-FUTEX feature, threaded builds now take
+ advantage of the "fast userspace mutex" facility in Linux kernel 2.6
+ for faster/more reliable mutex and condition variable support.
+ * Incompatible change (but one you probably shouldn't have been using
+ anyway): the interface and code for arbitrating between multiple
+ threads in the same user session has been redesigned.
+ * bug fix: GET-SETF-EXPANSION no longer throws an internal type
+ error when called without an explicit environment argument.
+ (thanks to Nikodemus Siivola)
+ * bug fix: buffered :DIRECTION :IO streams are less likely to become
+ confused about their position. (thanks to Adam Warner and Gerd
+ Moellmann)
+ * bug fix: Pretty printing backquoted forms with unquotations in the
+ argument list position of various code constructs such as LAMBDA
+ now works correctly. (reported by Paul Dietz)
+ * bug fix: Pretty printing unquotations no longer loses all
+ stream position information.
+ * optimization: performance of string output streams is now less
+ poor for multiple small sequence writes.
+ * optimization: performance of CSUBTYPEP in the presence of complex
+ expressions involving CONS and NOT many times has been improved.
+ (reported by Paul Dietz)
+ * ASDF-INSTALL bug fix: now parses *PROXY* properly. (thanks to
+ Sean Ross)
+ * SB-SIMPLE-STREAMS enhancement: simple-streams can now be used as
+ streams for the REPL, for the debugger, and so on. (thanks to
+ David Licteblau)
+ * DEFINE-CODITION is more efficient. (thanks to Brian Mastenbrook)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** the value of the :REHASH-THRESHOLD argument to MAKE-HASH-TABLE
+ is ignored if it is too small, rather than propagating through
+ to cause DIVIDE-BY-ZERO or FLOATING-POINT-OVERFLOW errors.
+ ** extremely complex negations of CONS types were not being
+ sufficiently canonicalized, leading to inconsistencies in
+ SUBTYPEP.
+ ** VALUES tranformer lost derived type.
+
+changes in sbcl-0.8.8 relative to sbcl-0.8.7:
+ * minor incompatible change: parsing of namestrings on a physical
+ (Unix) host has changed; numbers after the final #\. in a
+ namestring are no longer interpreted as a version field. This is
+ intented to be largely invisible to the user, except that the
+ meaning of the namestring "*.*.*" has changed: it now refers to a
+ pathname with :TYPE :WILD :NAME #<pattern "*.*">. This namestring
+ should usually be replaced by
+ (make-pathname :name :wild :type :wild :version :wild)
+ with the added benefit that this is more likely to be portable.
+ As a consequence of this change, the :IF-EXISTS :NEW-VERSION
+ option to OPEN now signals an error if the file being opened
+ exists; this may have an impact on existing code.
+ * fixed bug 190: RUN-PROGRAM should now work properly, respecting
+ signals received, on the PowerPC platforms (both Linux and
+ Darwin). (thanks to Pierre Mai for pointing out the location of
+ the error)
+ * several fixes on OS X: The system now builds and runs cleanly on
+ Panther (10.3), and works around sigreturn bug (no more SIGFPEs).
+ (thanks to Brian Mastenbrook)
+ * bug fix: DECODE-UNIVERSAL-TIME now accepts timezone arguments with
+ second-resolution: integer multiples of 1/3600 between -24 and 24.
+ (thanks to Vincent Arkesteijn)
+ * bug fix: functions =, /=, <, <=, >, >= did not check the argument
+ type when called with 1 argument; PEEK-CHAR checked type of
+ PEEK-TYPE only after having read first character from a
+ stream. (reported by Peter Graves)
+ * bug fix: the garbage collector now has much better locality
+ behaviour, and in particular no longer treats all memory as being
+ exhausted when many small objects point to each other in a deeply
+ recursive manner.
+ * bug fix: arrays specialized on (UNSIGNED-BYTE 15) are now
+ recognized as being TYPEP their class.
+ * bug fix: the PUSHNEW documentation string has been corrected.
+ (thanks to Vincent Arkesteijn)
+ * bug fix: defaulting of the value for the last of an atypically
+ large number of multiple values being bound was not being
+ performed correctly on the Alpha or PPC platforms
+ * optimization: implemented multiplication as a modular
+ (UNSIGNED-BYTE 32) operation on the x86 backend.
+ * optimization: SEARCH on simple-base-strings can now be open-coded.
+ (see also contrib/compiler-extras.lisp for inspiration for
+ teaching the compiler about the Boyer-Moore algorithm).
+ * value, returned by MAX (and MIN) called with several EQUALP, but
+ not EQL, arguments now does not depend on compiler settings.
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** in stack analysis liveness information is propagated from
+ non-local entry points.
+ ** pathwise CAST removing failed when the CAST node did not start
+ a block.
+ ** INPUT-STREAM-P, OUTPUT-STREAM-P, STREAM-ELEMENT-TYPE and
+ OPEN-STREAM-P signal a TYPE-ERROR if their argument is not a
+ stream.
+ ** LOAD-LOGICAL-PATHNAME-TRANSLATIONS returns NIL if the logical
+ host is already defined.
+ ** RENAME-FILE works on streams instead of signalling an internal
+ type error.
+ ** PEEK-CHAR uses the current readtable when determining whether
+ or not a character is whitespace.
+ ** MERGE-PATHNAMES handles the case when the pathname does not
+ specify a name while the default-pathname specifies a version.
+ ** Pathnames now stand a better chance of respecting print/read
+ consistency.
+ ** Attempting to use standardized file system operators with a
+ pathname with invalid :DIRECTORY components signals a
+ FILE-ERROR.
+ ** OPEN :DIRECTION :IO no longer fails to work on non-existent
+ files.
+ ** DIRECTORY on logical pathnames is more correct.
+ ** CLEAR-INPUT, CLEAR-OUTPUT, FINISH-OUTPUT and FORCE-OUTPUT
+ signal a TYPE-ERROR if their argument is not a stream.
+ ** READ-BYTE and WRITE-BYTE signal a TYPE-ERROR if their stream
+ designator argument does not designate a stream.
+ ** OPEN-STREAM-P and INPUT-STREAM-P on synonym streams work by
+ examining the synonym.
+ ** STREAM-ELEMENT-TYPE and FRESH-LINE on broadcast-streams now
+ work as specified.
+ ** OPEN and WITH-OPEN-STREAM allow opening streams with
+ element-type larger than ([UN]SIGNED-BYTE 32).
+
+changes in sbcl-0.8.9 relative to sbcl-0.8.8:
+ * deprecation of old extension: *DEBUG-PRINT-LEVEL* and
+ *DEBUG-PRINT-LENGTH* are now deprecated in favor of the new, more
+ general SB-DEBUG:*DEBUG-PRINT-VARIABLE-ALIST* mechanism. (This
+ should matter to you only if you rebind the printer control
+ variables and then find you want different bindings in the
+ debugger than in the ordinary execution of your program.)
+ * The runtime build system has been tweaked to support building
+ (on SPARC/SunOS) using a C compiler which invokes Sun's own
+ assembler and linker. (thanks to Nikodemus Siivola)
+ * Unbound, undefined, undeclared variables now trigger full
+ WARNINGs, not just STYLE-WARNINGs, on the assumption that this is
+ more often programmer error than deliberate exploitation of undefined
+ behaviour.
+ * optimization: the hash algorithm for strings has changed to one
+ that is less vulnerable to spurious collisions. (thanks to Juho
+ Snellman)
+ * optimization: VECTOR-POP, VECTOR-PUSH-EXTEND and REPLACE do less
+ needless bounds checking. (thanks to Juho Snellman)
+ * optimization: implemented multiplication as a modular
+ (UNSIGNED-BYTE 32) operation on the PPC backend.
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** ADJUST-ARRAY now copies the datum in a zero rank array if
+ required.
+ ** ADJUST-ARRAY no longer adjusts non-adjustable arrays.
+ ** MAKE-STRING-INPUT-STREAM accepts NIL as a value for :END.
+ ** MAKE-STRING-INPUT-STREAM functions correctly for strings with
+ element-type NIL.
+ ** CLEAR-INPUT accepts NIL and T for its (optional) stream
+ argument.
+ ** Ratios can now be printed correctly with *PRINT-BASE* bound to
+ 2, 8 or 16.
+ ** ECHO-STREAMs no longer attempt to echo the end of file value to
+ their output stream on EOF from read.
+ ** CONCATENATED-STREAM-STREAMS discards constituent streams which
+ have been read to end-of-file.
+ ** CLOSE works as expected on the null CONCATENATED-STREAM, and on
+ STRING-STREAMS.
+ ** Printing symbols with *PRINT-CASE* :CAPITALIZE respects the
+ description of determination of which consecutive characters
+ constitute a word.
+ ** Printing the "Space" character with escaping on now yields "#\\ ",
+ rather than "#\\Space", as mandated by ANSI 22.1.3.2.
+ ** Reading floating-point numbers with *READ-BASE* set to a number
+ less than 10 works correctly.
+ ** Reading floating-point numbers with *READ-BASE* set to a number
+ more than 10 works correctly.
+ ** Printing with *PRINT-READABLY* targets the standard readtable, not
+ the readtable currently in effect.
+
+changes in sbcl-0.8.10 relative to sbcl-0.8.9:
+ * Support for the forthcoming 2.0 version of the NetBSD kernel
+ running on x86 hardware has been added. (thanks to Perry
+ E. Metzger most immediately, and others for their past work)
+ * SBCL now runs on OpenBSD 3.4. (Thanks to Scott Parish; 3.4 is the
+ current release version; SBCL's OpenBSD support had been broken
+ since about the time of OpenBSD's switch to ELF binary format.)
+ * [placeholder for DX summary]
+ ** user code with &REST lists declared dynamic-extent, under high
+ speed or space and low safety and debug optimization policy.
+ * The manual has been converted to Texinfo format and the debugger
+ chapter from the cmucl manual has been added.
+ * A facility has been added to extract documentation strings from
+ sbcl and store them as Texinfo-formatted snippets for inclusion in
+ the manual (via Texinfo's @include directive)
+ * bug fix: compiler emitted division in optimized DEREF. (thanks for
+ the test case to Dave Roberts)
+ * bug fix: multidimensional simple arrays loaded from FASLs had fill
+ pointers. (reported by Sean Ross)
+ * bug fix: PROFILE output is printed nicely even for large numerical
+ values. (thanks to Zach Beane)
+ * bug fix: streams with element-type (SIGNED-BYTE <N>) for <N>
+ greater than 32 handle EOF correctly.
+ * bug fix: on X86 an immediate argument of the IMUL instruction is
+ correctly printed in disassembly. (thanks to Lutz Euler)
+ * bug fix: class slots in redefined classes preserve their old
+ values. (thanks to Bruno Haible and Nikodemus Siivola)
+ * bug fix: compilation of funcalls of CXX+R (e.g. CDDR) now
+ succeeds. (reported by Marco Baringer)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** READ-SEQUENCE now works on ECHO-STREAMs.
+ ** RATIONALIZE works more according to its specification. (thanks
+ to Bruno Haible)
+
+changes in sbcl-0.8.11 relative to sbcl-0.8.10:
+ * fixed bug 320: Shared to local slot value transfers in class
+ redefinitions now happen corrently from superclasses as
+ well. (reported by Bruno Haible)
+ * fixed bug 316: SHIFTF now accepts VALUES forms. (reported by Bruno
+ Haible)
+ * fixed bug 322: DEFSTRUCT :TYPE LIST type predicates now handle
+ improper lists correctly. (reported by Bruno Haible)
+ * fixed bug 313: source-transform for <fun-name> was erroneously
+ applied to a call of a value of a variable with name <fun-name>.
+ (reported by Antonio Menezes Leitao)
+ * fixed bug 307: The obsolete instance protocol ensures that
+ subclasses are properly obsoleted. (thanks to Nikodemus Siivola)
+ * on X86 fixed bug 298, revealed by Paul F. Dietz' test suite: SBCL
+ can remove dead unknown-values globs from the middle of the stack.
+ * added a new restart to *BREAK-ON-SIGNALS* handling to make it
+ easier to resume long computations after using *BREAK-ON-SIGNALS*
+ to diagnose and fix failures. (thanks to Nikodemus Siivola)
+ * fixed bug reported by PFD in lisppaste #747 (and Bruno Haible from
+ CLISP test suite): WRITE-TO-STRING is not constant-foldable.
+ * fixed bugs in COMPLEX type specifier: UPGRADED-COMPLEX-PART-TYPE
+ is now consistent with (COMPLEX <x>); bugs in treatment of COMPLEX
+ MEMBER and UNION types have likewise been fixed. (thanks to Bruno
+ Haible)
+ * fixed a (fairly theoretical) bug in string printing: if
+ *PRINT-READABLY* is true, signal PRINT-NOT-READABLE if the string
+ does not have array-element-type equal to the most general string
+ type.
+ * fixed bug: SET-PPRINT-DISPATCH does not immediately resolve
+ function name. (thanks to Nikodemus Siivola)
+ * fixed bug: compile-time format string checker failed on
+ non-closed ~{. (reported by Thomas F Burdick)
+ * fixed bug: as reported by Kalle Olavi Niemitalo on #lisp IRC,
+ don't warn on legal loop code involving more than one aggregate
+ boolean. (thanks to Nikodemus Siivola)
+ * optimization: rearranged the expansion of various defining macros
+ so that each expands into only one top-level form in a
+ :LOAD-TOPLEVEL context; this appears to decrease fasl sizes by
+ approximately 10%.
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** FILE-POSITION works as specified on BROADCAST-STREAMs.
+ ** CAST optimizer forgot to flush argument derived type.
+ ** print/read consistency on floats is now orders of magnitude
+ more likely. (thanks also to Bruno Haible for a similar report
+ and discussions)
+ ** removed stack cleaning in the cleanup part of UNWIND-PROTECT.
+ ** IMAGPART is specified (infelicitously) to return (* 0 <thing>)
+ for objects of type REAL. Make it so.
+ ** SXHASH is specified (infelicitously) to respect similarity,
+ which means that (SXHASH 0.0) must equal (SXHASH -0.0). Make
+ it so. (thanks to Markus Ziegler)