0.8.0.58:
[sbcl.git] / NEWS
diff --git a/NEWS b/NEWS
index 515f424..98e5991 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1598,6 +1598,7 @@ changes in sbcl-0.7.14 relative to sbcl-0.7.13:
     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;
@@ -1610,14 +1611,237 @@ changes in sbcl-0.7.14 relative to sbcl-0.7.13:
     ** GETF and GET-PROPERTIES throw a TYPE-ERROR, not a SIMPLE-ERROR,
        on malformed property lists;
 
-planned incompatible changes in 0.7.x:
+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.
+  * 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.
+  * 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)
+  * increased compilation speed of long MULTIPLE-VALUES-BIND.
+  * 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)
+  * 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
+       six 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.
+
+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))