0.8.4.14:
[sbcl.git] / NEWS
diff --git a/NEWS b/NEWS
index 9effeae..eea0087 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1781,12 +1781,21 @@ changes in sbcl-0.8.1 relative to sbcl-0.8.0:
     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.)
-  * changes in type checking closed the following bugs:
+  * 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 (it has
+  * 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
@@ -1798,63 +1807,63 @@ changes in sbcl-0.8.1 relative to sbcl-0.8.0:
     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)
   * fixed bug 246: increased compilation speed of long
     MULTIPLE-VALUE-BIND (and likewise of NTH-VALUE with a constant
-    integer argument).
+    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)
-  * bug fix: in macro-like defining macros/special operators the
-    implicit block does not enclose lambda list.
-  * fixed bugs 10 and 43: VALUES, AND, OR and MEMBER are not suitable as 
-    atomic type specifiers, and their use properly signals an error now.
-  * bug fix: an argument count mismatch for a type specifier in code
+    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.
+  * 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: 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 corectly.  (reported by Henrik Motakef)
+    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
+    ** 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)
+       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.
@@ -1865,6 +1874,266 @@ changes in sbcl-0.8.1 relative to sbcl-0.8.0:
        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:
+  * in full calls compiler does not generate checks for declared
+    argument types for all arguments.
+  * fix bug 282: compiler does not trust type assertions while passing
+    arguments to a full call.
+  * fix 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)
+  * compiler enhancement: SIGNUM is now better able to derive the type
+    of its result.
+  * 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.
 
 planned incompatible changes in 0.8.x:
   * (not done yet, but planned:) When the profiling interface settles