0.7.10.11:
[sbcl.git] / NEWS
diff --git a/NEWS b/NEWS
index 08d6990..e67a79c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1108,25 +1108,364 @@ changes in sbcl-0.7.4 relative to sbcl-0.7.3:
     to Alexey Dejneka)
   * Dynamic loading of object files in OpenBSD is now supported. (thanks
     to Pierre Mai)
+  * COMPILE now works correctly on macros. (thanks to Matthias Hoelzl)
+  * GET-MACRO-CHARACTER and SET-MACRO-CHARACTER now represent
+    no-value-for-this-character as NIL (as specified by ANSI).
+  * HOST-NAMESTRING on physical pathnames now returns a string that is
+    valid as a host argument to MERGE-PATHNAMES and to MAKE-PATHNAME.
+    (thanks to Christophe Rhodes)
+  * The Alpha port handles icache flushing more correctly. (thanks to
+    Dan Barlow)
+  * More progress has been made toward bootstrapping under CLISP. (thanks
+    to Christophe Rhodes)
   * The fasl file format has changed again, because dynamic loading
     on OpenBSD (which has non-ELF object files) motivated some cleanups
     in the way that foreign symbols are transformed and passed around.
-  * HOST-NAMESTRING on physical pathnames now returns a string that is
-    valid as a host argument to MERGE-PATHNAMES and to MAKE-PATHNAME.
+  * minor incompatible change: The ASCII RUBOUT character, (CHAR-CODE 127),
+    is no longer treated as whitespace by the reader, but instead as
+    an ordinary character. Thus e.g. (READ-FROM-STRING "A\7fB") returns
+    |A\7fB|, instead of A as it used to.
+
+changes in sbcl-0.7.5 relative to sbcl-0.7.4:
+  * SBCL now builds with OpenMCL (version 0.12) as the
+    cross-compilation host; also, more progress has been made toward
+    bootstrapping under CLISP.
+  * SBCL now runs on the Tru64 (aka OSF/1) operating system on the
+    Alpha architecture.
+  * bug 158 fixed: The compiler can now deal with integer loop
+    increments different from 1; fixing this turned out also to fix
+    bug 164.
+  * bug 169 fixed: no more bogus warnings about using lexical bindings
+    despite the presence of perfectly good SPECIAL declarations (thanks
+    to David Lichteblau)
+  * bug 175 fixed: CHANGE-CLASS is now more ANSI-conforming,
+    accepting initargs. (thanks to Espen Johnsen and Pierre Mai)
+  * bug 179 fixed: DIRECTORY can now deal with filenames with pattern
+    characters in them.
+  * bug 180 fixed: Method combination specifications no longer ignore
+    the :MOST-SPECIFIC-LAST option. (thanks to Pierre Mai)
+  * bug fix: Structure type predicate functions now check their argument
+    count as they should.
+  * bug fix: Classes with :METACLASS STRUCTURE-CLASS now print
+    correctly. (thanks to Pierre Mai)
+  * minor incompatible change: The --noprogrammer option is deprecated
+    in favor of the new --disable-debugger option, which is very similar.
+    (The major difference is that it takes effect at a slightly different
+    time at startup, causing handling of errors in --sysinit and
+    --userinit files will be affected differently.) The
+    SB-EXT:DISABLE-DEBUGGER and SB-EXT:ENABLE-DEBUGGER functions have
+    been added to allow this functionality to be controlled from ordinary
+    Lisp code. (ENABLE-DEBUGGER should help people like the Debian
+    maintainers, who might want to run non-interactive scripts to
+    build SBCL cores which will later be used interactively.)
+  * minor incompatible change: The LOAD function no longer, when given
+    a wild pathname to load, loads all files matching that pathname.
+    Instead, an error of type FILE-ERROR is signalled.
+
+changes in sbcl-0.7.6 relative to sbcl-0.7.5:
+  * bug fix: Floating point exceptions are treated much more
+    consistently on the x86/Linux and PPC/Linux platforms.
+  * Array initialization with :INITIAL-ELEMENT is now much faster for
+    cases when the compiler cannot open code the array creation, but
+    does know what the UPGRADED-ARRAY-ELEMENT-TYPE will be. General
+    array accesses have also seen a speed increase.
+  * bug fix: LOAD :IF-DOES-NOT-EXIST NIL now works when file type is
+    specified. (This was at the root of some bad interactions between
+    SBCL and ILISP: thanks to Gregory Wright for diagnosing this and
+    reporting the bug.)
+  * bug fix: Internal error arguments for undefined functions are now
+    computed correctly on the PPC/Linux platform.
+  * bug fix: Bad &REST syntax is now checked correctly. (thanks to 
+    Raymond Toy's patch for CMU CL)
+  * Support for the Solaris 9 operating environment has been included
+    (thanks to Daniel Merritt)
+  * A very ugly but hopefully complete draft of the missing FFI chapter
+    of the manual has been created by reformatting the corresponding
+    CMU CL manual chapter into (currently very ugly and incoherent)
+    DocBook and bringing it up to date for SBCL behavior. Thus, the
+    manual is now essentially complete, at least by my extreme
+    once-and-only-once standards, whereby it's acceptable to refer to
+    the doc strings of SB-EXT functions as the primary documentation.
+  * The fasl file version number has changed again, due to cleanup of
+    (user-invisible) bitrotted stuff. (E.g. *!INITIAL-FDEFN-OBJECTS*
+    is no longer a static symbol.)
+
+changes in sbcl-0.7.7 relative to sbcl-0.7.6:
+  * An alpha-quality port to the parisc architecture running Linux,
+    based on the old CMUCL backend, has been made.  This, even more so
+    than the other backends, should be considered still a work in
+    progress; known problems include that the Linux kernel in 64-bit
+    mode does not propagate the correct sigcontext structure to
+    userspace, and consequently SBCL on a parisc64 kernel will not
+    work yet.
+  * fixed bug 189: The compiler now respects NOTINLINE declarations for
+    functions declared in FLET and LABELS. (I.e. "LET conversion" is
+    suppressed.) Also now that the compiler is looking at declarations
+    in the environment, it checks optimization declarations as well,
+    and suppresses inlining when (> DEBUG SPEED).
+  * More fixes have been made to treatment of floating point exception
+    treatment and other Unix signals.  In particular, floating point
+    exceptions no longer cause Bus errors on the SPARC/Linux platform.
+  * The detection and handling of control stack exhaustion (infinite
+    or very deeply nested recursion) has changed.  Stack exhaustion
+    detection is now done by write-protecting pages at the OS level
+    and applies at all optimization settings; when found, a
+    SB-KERNEL:CONTROL-STACK-EXHAUSTED condition (subclass of
+    STORAGE-CONDITION) is signalled, so stack exhaustion can no longer
+    be caught using IGNORE-ERRORS.
+  * Bugs 65, 70, and 109 fixed: The compiler now preserves invariants
+    correctly when transforming recursive LABELS functions to LETs.
+    (thanks to Alexey Dejneka)
+  * Bug 48a./b. fixed: SYMBOL-MACROLET now refuses to bind symbols
+    that are names of constants or global variables.
+  * Bug fix: DEFINE-ALIEN-ROUTINE now declaims the correct FTYPE for
+    alien routines with docstrings.
+  * Bug 184 fixed: Division of ratios by the integer 0 now signals an
+    error of type DIVISION-BY-ZERO. (thanks to Wolfhard Buss and
+    Raymond Toy)
+  * Bug fix: Errors in PARSE-INTEGER are now of type PARSE-ERROR.
+    (thanks to Eric Marsden)
+  * Bug fix: COERCE to (COMPLEX FLOAT) of rationals now returns an
+    object of type (COMPLEX FLOAT). (thanks to Wolfhard Buss)
+  * Bug fix: The SPARC backend can now compile functions involving
+    LOGAND and stack-allocated arguments. (thanks to Raymond Toy)
+  * Bug fix: We no longer segfault on passing a non-FILE-STREAM stream
+    to a functions expecting a PATHNAME-DESIGNATOR.
+  * Bug fix: DEFGENERIC now enforces the ANSI restrictions on its
+    lambda lists. (thanks to Alexey Dejneka)
+  * Bug fix: changed encoding of PCL's internal MAKE-INSTANCE
+    functions so that EXPORTing the name of the class doesn't cause
+    MAKE-INSTANCE functions from earlier DEFCLASSes to get lost (thanks
+    to Antonio Martinez for reporting this)
+  * Bug 192 fixed: The internal primitive DATA-VECTOR-REF can now be
+    constant-folded without failing an assertion. (thanks to Einar
+    Floystad Dorum for reporting this)
+  * Bugs 123 and 165 fixed: array specializations on as-yet-undefined
+    types are now dealt with more correctly by the compiler.
+  * Minor incompatible change: COMPILE-FILE-PATHNAME now merges its
+    OUTPUT-FILE argument with its INPUT-FILE argument, resulting in
+    behaviour analogous to RENAME-FILE.  This puts its behaviour more
+    in line with ANSI's wording on COMPILE-FILE-PATHNAME. (thanks to
+    Marco Antinotti)
+  * The fasl file version number has changed again. (because of the
+    bug fix involving the names of PCL MAKE-INSTANCE functions)
+
+changes in sbcl-0.7.8 relative to sbcl-0.7.7:
+  * A beta-quality port to the mips architecture running Linux,
+    based on the old CMUCL backend, has been made.  It has been tested
+    on a big-endian kernel, and works sufficiently well to be able to
+    rebuild itself; it has not been tested in little-endian mode.
+  * fixed an inconsistency between gencgc.c and purify.c which made
+    dumping/loading .core files unreliable
+  * fixed bug 120a: The compiler now deals correctly with IFs where
+    the consequent is the same as the alternative, instead of
+    misderiving the return type. (thanks to Alexey Dejneka)
+  * fixed bug 113: Logical pathnames are now dumpable (the logical
+    host is resolved at load-time, throwing an error if it is not
+    found).
+  * fixed bug 174: FORMAT's error message is slightly clearer when a
+    non-printing character is used in a format directive.
+  * fixed several bugs in compiler checking of type declarations, i.e.
+    violations of the Python "declarations are assertions" principle
+    (thanks to Alexey Dejneka)
+  * fixed several bugs in PCL's error checking (thanks to Gerd
+    Moellmann)
+  * fixed bug: printing of FILE-ERROR (thanks to Antonio
+    Martinez-Shotton)
+  * fixed bug in compilation of functions as first class values
+    (thanks to Antonio Martinez-Shotton)
+  * The compiler's handling TYPE-ERRORs which it can prove will
+    inevitably happen at runtime has been cleaned up and corrected
+    in several ways. (thanks to Alexey Dejneka)
+  * improved argument type checking for various basic arithmetic
+    operations (MAX, +, LOGXOR, etc.) which have had so much TLC
+    lavished on them in the past that they can be compiled in many
+    ways in different special cases
+  * fixed bug 181: compiler checks validity of user supplied type
+    specifiers
+  * cleaned up code flushing in optimization: Function calls which
+    should signal errors for safety purposes (e.g. which ANSI says
+    should signal errors when their arguments are of incorrect type)
+    are no longer optimized away.
+  * added new extension: SB-DEBUG:BACKTRACE-AS-LIST
+  * incremented fasl file version number, because changes in the
+    implementation of sequence functions like COERCE caused 
+    internal utility functions like COERCE-TO-SIMPLE-VECTOR (used
+    in old inline expansions) to become undefined. (Actually these
+    changes were later undone, so we might very well be binary
+    compatible with 0.7.7 after all, but leaving the version number
+    incremented seemed like the simplest and most conservative
+    thing to do.)
+
+changes in sbcl-0.7.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)
+  * fixed some more 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;
+  * incremented fasl file version number, because of the incompatible
+    change to the DEFSTRUCT-DESCRIPTION structure.
 
 planned incompatible changes in 0.7.x:
-* 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.)
-* Inlining can now be controlled the ANSI way, without
-  MAYBE-INLINE, since the idiom
+  * (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.)
+  * (not done yet, but planned:) Inlining can now be controlled the
+    ANSI way, without MAYBE-INLINE, since the idiom
        (DECLAIM (INLINE FOO))
        (DEFUN FOO (..) ..)
        (DECLAIM (NOTINLINE FOO))
        (DEFUN BAR (..) (FOO ..))
        (DEFUN BLETCH (..) (DECLARE (INLINE FOO)) (FOO ..))
-  now does what ANSI says it should. The CMU-CL-style 
-  SB-EXT:MAYBE-INLINE declaration is now deprecated and ignored.
+    now does what ANSI says it should. The CMU-CL-style 
+    SB-EXT:MAYBE-INLINE declaration is now deprecated and ignored.