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.
- * changes in type checking closed the following bugs:
+ 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).
- * VALUES declaration is disabled.
- * a short form of VALUES type specifier has ANSI meaning.
+ * 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
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
+ * 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
+ 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)
- * increased compilation speed of long MULTIPLE-VALUES-BIND.
+ * 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 better at handling symbol macros.
- * bug fix: there is no longer a type named LENGTH. (reported by
- Raymond Toy)
+ 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
+ ** Arbitrary numbers, not just REALs, are allowed in certain
circumstances in LOOP for-as-arithmetic clauses.
- ** multiple class redefinitions before slot access no longer
+ ** 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
- six methods all of which return constants no longer return NIL
- after the first few invocations. (thanks to Gerd Moellmann)
+ ** 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
+ ** 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.
+ ** 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.
** 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:
+ * bug fix: WITH-OUTPUT-TO-STRING (and MAKE-STRING-OUTPUT-STREAM) now
+ accept and act upon their :ELEMENT-TYPE keyword argument.
+ (reported by 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)
planned incompatible changes in 0.8.x:
* (not done yet, but planned:) When the profiling interface settles