0.8.7.37:
[sbcl.git] / NEWS
diff --git a/NEWS b/NEWS
index 69147bb..45facf6 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2108,11 +2108,30 @@ changes in sbcl-0.8.4 relative to sbcl-0.8.3:
     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
+  * New code in contrib/sb-introspect (still probably not entirely
+    stable yet) provides some support for smart Lisp development 
+    environments like SLIME.
+  * The conditions signalled for errors occurring when loading .fasl
+    files have been systematized (inheriting from SB-EXT:INVALID-FASL)
+    in a way which should help ASDF recover gracefully.
+  * The REQUIRE/PROVIDE behavior of *MODULE-PROVIDER-FUNCTIONS* 
+    stuff has been cleaned up. If you code contrib/ stuff, this might 
+    affect you, and you can look at contrib/README, contrib/STANDARDS, 
+    and/or the 0.8.4.27 diff to check.
+  * In full calls the compiler now does not generate checks for declared
     argument types for all arguments.
-  * fix bug 282: compiler does not trust type assertions while passing
+  * various threading fixes
+    ** and some experimental patches which didn't make it into 
+       the main tree for this release, but which are shipped in 
+       contrib/experimental-thread.patch as a possible fix for some
+       failures (deadlock, spinning...) in GC-intensive multithreaded
+       applications.
+  * fixed PPC build problem (source code incompatibility of different 
+    library versions): added offsetof() hackery which attempts to divine 
+    where glibc maintainers put uc_mcontext today 
+  * fixed 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
+  * fixed 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
@@ -2126,6 +2145,14 @@ changes in sbcl-0.8.5 relative to sbcl-0.8.4:
     with values NIL and :ERROR.  (thanks to Milan Zamazal)
   * fixed bug 191c: CLOS now does proper keyword argument checking as
     described in CLHS 7.6.5 and 7.6.5.1.
+  * bug fix: LOOP forms using NIL as a for-as-arithmetic counter no
+    longer raise an error; further, using a list as a for-as-arithmetic
+    counter now raises a meaningful error.
+  * fixed bug 213a: even fairly unreasonable CONS type specifiers are
+    now understood by sequence creation functions such as MAKE-SEQUENCE
+    and COERCE.
+  * fixed bug 46k: READ-BYTE now signals an error when asked to read from
+    a STRING-INPUT-STREAM.
   * compiler enhancement: SIGNUM is now better able to derive the type
     of its result.
   * type declarations inside WITH-SLOTS are checked.  (reported by
@@ -2141,6 +2168,133 @@ changes in sbcl-0.8.5 relative to sbcl-0.8.4:
     ** intersection of CONS types now canonicalizes properly, fixing
        inconsistencies in SUBTYPEP.
 
+changes in sbcl-0.8.6 relative to sbcl-0.8.5:
+  * fixed a bootstrapping bug: the build process no longer assumes
+    that the various BOOLE-related constants have the same value in
+    host and target lisps.  (noted by Paul Dietz' test suite on an
+    SBCL binary built from CLISP)
+  * The system can now be dynamically linked on the MIPS platform,
+    which enables dynamic loading of foreign code from Lisp.  (thanks
+    to Ralf Baechle for discussions on the MIPS ABI)
+  * The system now records debugging information for its own source
+    files in a filesystem-position-independent manner, relative to 
+    the "SYS" logical host.
+  * fixed a compiler bug: MV-LET convertion did not check references
+    to the "max args" entry point.  (reported by Brian Downing)
+  * tweaked disassembly notes to be less confident about proclaiming
+    some instruction as an LRA.  (thanks to Brian Downing)
+  * contrib update: SB-ACLREPL is now threadsafe; multiple listeners
+    now each have their own history, command character, and other
+    characteristics.  (thanks to David Lichteblau)
+  * fixed some bugs revealed by Paul Dietz' test suite:
+    ** compiler failure in compiling LOGAND expressions including a
+       constant 0
+    ** Implementation of ASH-MOD32 on X86 and PPC did not work for the
+       shift greater than 32.
+    ** FLUSH-DEST did not mark blocks for type check regeneration.
+    ** HANDLER-CASE failed to accept declarations in handler clauses
+       in some circumstances.
+
+changes in sbcl-0.8.7 relative to sbcl-0.8.6:
+  * When built with the :SB-FUTEX feature, threaded builds now take 
+    advantage of the "fast userspace mutex" facility in Linux kernel 2.6
+    for faster/more reliable mutex and condition variable support.
+  * Incompatible change (but one you probably shouldn't have been using
+    anyway): the interface and code for arbitrating between multiple
+    threads in the same user session has been redesigned.
+  * bug fix: GET-SETF-EXPANSION no longer throws an internal type
+    error when called without an explicit environment argument.
+    (thanks to Nikodemus Siivola)
+  * bug fix: buffered :DIRECTION :IO streams are less likely to become
+    confused about their position.  (thanks to Adam Warner and Gerd 
+    Moellmann)
+  * bug fix: Pretty printing backquoted forms with unquotations in the
+    argument list position of various code constructs such as LAMBDA
+    now works correctly.  (reported by Paul Dietz)
+  * bug fix: Pretty printing unquotations no longer loses all
+    stream position information.
+  * optimization: performance of string output streams is now less
+    poor for multiple small sequence writes.
+  * optimization: performance of CSUBTYPEP in the presence of complex
+    expressions involving CONS and NOT many times has been improved.
+    (reported by Paul Dietz)
+  * ASDF-INSTALL bug fix: now parses *PROXY* properly.  (thanks to
+    Sean Ross)
+  * SB-SIMPLE-STREAMS enhancement: simple-streams can now be used as
+    streams for the REPL, for the debugger, and so on.  (thanks to
+    David Licteblau)
+  * DEFINE-CODITION is more efficient.  (thanks to Brian Mastenbrook)
+  * fixed some bugs revealed by Paul Dietz' test suite:
+    ** the value of the :REHASH-THRESHOLD argument to MAKE-HASH-TABLE
+       is ignored if it is too small, rather than propagating through
+       to cause DIVIDE-BY-ZERO or FLOATING-POINT-OVERFLOW errors.
+    ** extremely complex negations of CONS types were not being
+       sufficiently canonicalized, leading to inconsistencies in
+       SUBTYPEP.
+    ** VALUES tranformer lost derived type.
+
+changes in sbcl-0.8.8 relative to sbcl-0.8.7:
+  * minor incompatible change: parsing of namestrings on a physical
+    (Unix) host has changed; numbers after the final #\. in a
+    namestring are no longer interpreted as a version field.  This is
+    intented to be largely invisible to the user, except that the
+    meaning of the namestring "*.*.*" has changed: it now refers to a
+    pathname with :TYPE :WILD :NAME #<pattern "*.*">.  This namestring
+    should usually be replaced by 
+      (make-pathname :name :wild :type :wild :version :wild)
+    with the added benefit that this is more likely to be portable.
+    As a consequence of this change, the :IF-EXISTS :NEW-VERSION
+    option to OPEN now signals an error if the file being opened
+    exists; this may have an impact on existing code.
+  * bug fix: DECODE-UNIVERSAL-TIME now accepts timezone arguments with
+    second-resolution: integer multiples of 1/3600 between -24 and 24.
+    (thanks to Vincent Arkesteijn)
+  * bug fix: functions =, /=, <, <=, >, >= did not check the argument
+    type when called with 1 argument; PEEK-CHAR checked type of
+    PEEK-TYPE only after having read first character from a
+    stream.  (reported by Peter Graves)
+  * bug fix: the garbage collector now has much better locality
+    behaviour, and in particular no longer treats all memory as being
+    exhausted when many small objects point to each other in a deeply
+    recursive manner.
+  * bug fix: arrays specialized on (UNSIGNED-BYTE 15) are now
+    recognized as being TYPEP their class.
+  * optimization: implemented multiplication as a modular
+    (UNSIGNED-BYTE 32) operation on the x86 backend.
+  * optimization: SEARCH on simple-base-strings can now be open-coded.
+    (see also contrib/compiler-extras.lisp for inspiration for
+    teaching the compiler about the Boyer-Moore algorithm).
+  * value, returned by MAX (and MIN) called with several EQUALP, but
+    not EQL, arguments now does not depend on compiler settings.
+  * fixed some bugs revealed by Paul Dietz' test suite:
+    ** in stack analysis liveness information is propagated from
+       non-local entry points.
+    ** pathwise CAST removing failed when the CAST node did not start
+       a block.
+    ** INPUT-STREAM-P, OUTPUT-STREAM-P, STREAM-ELEMENT-TYPE and
+       OPEN-STREAM-P signal a TYPE-ERROR if their argument is not a
+       stream.
+    ** LOAD-LOGICAL-PATHNAME-TRANSLATIONS returns NIL if the logical
+       host is already defined.
+    ** RENAME-FILE works on streams instead of signalling an internal
+       type error.
+    ** PEEK-CHAR uses the current readtable when determining whether
+       or not a character is whitespace.
+    ** MERGE-PATHNAMES handles the case when the pathname does not
+       specify a name while the default-pathname specifies a version.
+    ** Pathnames now stand a better chance of respecting print/read
+       consistency.
+    ** Attempting to use standardized file system operators with a
+       pathname with invalid :DIRECTORY components signals a
+       FILE-ERROR.
+    ** OPEN :DIRECTION :IO no longer fails to work on non-existent
+       files.
+    ** DIRECTORY on logical pathnames is more correct.
+    ** CLEAR-INPUT, CLEAR-OUTPUT, FINISH-OUTPUT and FORCE-OUTPUT
+       signal a TYPE-ERROR if their argument is not a stream.
+    ** READ-BYTE and WRITE-BYTE signal a TYPE-ERROR if their stream
+       designator argument does not designate a stream.
+
 planned incompatible changes in 0.8.x:
   * (not done yet, but planned:) When the profiling interface settles
     down, it might impact TRACE. They both encapsulate functions, and