0.8.2.52:
[sbcl.git] / NEWS
diff --git a/NEWS b/NEWS
index acf60de..7b8d526 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1709,30 +1709,298 @@ changes in sbcl-0.8alpha.0 relative to sbcl-0.7.14
     ** :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.
-  * minor incompatible change: the :NEGATIVE-ZERO-IS-NOT-ZERO feature
+  * 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).
-  * 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).
-  * compiler checks for duplicated variables in macro lambda lists.
+  * 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.
+  * 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.
+  * 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.
 
 planned incompatible changes in 0.8.x:
   * (not done yet, but planned:) When the profiling interface settles
-    down, maybe in 0.7.x, maybe later, it might impact TRACE. They both
-    encapsulate functions, and it's not clear yet how e.g. UNPROFILE
-    will interact with TRACE
-    and UNTRACE. (This shouldn't matter, though, unless you are
-    using profiling. If you never profile anything, TRACE should
-    continue to behave as before.)
+    down, it might impact TRACE. They both encapsulate functions, and
+    it's not clear yet how e.g. UNPROFILE will interact with TRACE
+    and UNTRACE. (This shouldn't matter, though, unless you are using
+    profiling. If you never profile anything, TRACE should continue to
+    behave as before.)
   * (not done yet, but planned:) Inlining can now be controlled the
     ANSI way, without MAYBE-INLINE, since the idiom
        (DECLAIM (INLINE FOO))