A more efficient algorithm for remove-duplicates on lists when there
[sbcl.git] / NEWS
diff --git a/NEWS b/NEWS
index f2d24a2..dee4379 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,247 @@
+;;;; -*- coding: utf-8; -*-
+changes in sbcl-0.9.4 relative to sbcl-0.9.3:
+  * optimizations: REMOVE-DUPLICATES now runs in linear time on
+    lists in some cases.  This partially fixes bug 384.
+
+changes in sbcl-0.9.3 relative to sbcl-0.9.2:
+  * New feature: Experimental support for bivalent streams: streams
+    opened with :element-type :default now allow character and binary
+    (unsigned-byte 8) I/O
+  * Support for the koi8-r external format.  (thanks to Ivan Boldyrev)
+  * Bug fix: OPEN no longer fails when *PRINT-READABLY* is T. (thanks
+    to Zach Beane)
+  * bug fix: no more highly sporadic "couldn't check whether ~S is
+    readable" when reading a stream and an interrupt hits in the middle
+    of a select system call
+  * compiler better recognizes complex arrays (reported by Eduardo
+    Muñoz)
+  * bug fix: out-of-line SB-SYS:FOREIGN-SYMBOL-ADDRESS did not work
+    for variables on SBCL built with linkage-tables. (reported by Luis
+    Oliveira)
+  * various error reporting improvements.
+  * optimizations: LOGNOR on fixnums is improved in the MIPS backend.
+    (Thanks to Thiemo Seufer)
+  * bug fix: nested reader invokations work correctly
+  * bug fix: it is possible to have simultaneous references to foreign
+    code and foreign data with the same name.
+  * threads
+    ** added x86-64 support
+    ** incompatible change: the threading api now works with thread
+       objects instead of thread ids
+    ** bug fix: threads are protected from signals and interruption when
+       starting up or going down
+    ** bug fix: a race where an exiting thread could lose its stack to gc
+    ** bug fix: don't halt on infinite error in threads if possible
+    ** fixed numerous gc deadlocks introduced in the pthread merge
+    ** bug fix: fixed thread safety issues in read and print
+    ** bug fix: debugger doesn't hang on session lock if interrupted at
+       an inappropriate moment
+    ** bug fix: run-program is now thread safe(r)
+    ** bug fix: inner with-recursive-lock no longer releases the mutex
+  * fixed a bug in (DECODE-UNIVERSAL-TIME 0) (reported by Paul Dietz)
+  * fixed some bugs revealed by Paul Dietz' test suite:
+    ** TYPE-ERRORs from signalled by COERCE now have DATUM and
+       EXPECTED-TYPE slots filled.
+    ** MULTIPLE-VALUE-SETQ always returns the primary value of the
+       values form.
+    ** MAKE-CONDITION accepts classes as type-designators.
+    ** COMPILE may never return NIL.
+    ** ENCODE-UNIVERSAL-TIME now guards against times out of Unix's
+       range before calling Unix time functions
+
+changes in sbcl-0.9.2 relative to sbcl-0.9.1:
+  * numerous signal handling fixes to increase stability
+  * Support for EUC-JP external format.  (thanks to NIIMI Satoshi)
+  * minor incompatible change: we now correctly canonize default
+    initargs, making them be a list of (INITARG INITFORM INITFUNCTION)
+    as per the MOP, rather than the historical (INITARG INITFUNCTION
+    INITFORM).  (reported by Bruno Haible)
+  * new feature: WITH-COMPILATION-UNIT now accepts a non-standard
+    :SOURCE-PLIST option. See (DOCUMENTATION #'WITH-COMPILATION-UNIT T)
+    for more information.
+  * TRUENAME and PROBE-FILE now correctly resolve symlinks even if the
+    pathname is a directory pathname.
+  * SB-SPROF now works (more) reliably on non-GENCGC platforms.
+  * dynamic space size on PPC has been increased to 768Mb. (thanks to
+    Cyrus Harmon)
+  * SB-MOP:ENSURE-CLASS-USING-CLASS now accepts a class as the
+    :METACLASS argument in addition to a class name.  (reported by
+    Bruno Haible for CMUCL, patch for CMUCL by Gerd Moellmann)
+  * RESTART-CASE can now be wrapped around CALL-METHOD forms.
+    (reported by Bruno Haible; patch from Gerd Moellmann)
+  * bug fix: sbcl runtime can now be compiled with gcc4 (thanks to 
+    Sascha Wilde)
+  * bug fix: more cleanups to the floating point exception handling on
+    x86-64 (thanks to James Knight)
+  * bug fix: the compiler does not try to constant fold calls of
+    COERCE and BIT-* functions when they return freshly constructed
+    objects. (reported by Nikodemus Siivola and Paul Dietz)
+  * optimization: improved the MIPS versions of generic (in the
+    generic sense) arithmetic routines.  (thanks to Thiemo Seufer)
+  * optimization: direct conversion of (unsigned-byte 32) to floats on
+    the PowerPC platform.
+  * optimization: structure instances with raw slots now use less
+    memory, and probably show better memory locality.  (thanks to
+    David Lichteblau)
+  * optimization: DYNAMIC-EXTENT declarations for lists and closures
+    are treated as requests for stack allocation on the x86-64,
+    Alpha-32, PPC and SPARC platforms.
+  * contrib improvement: it's harder to cause SOCKET-CLOSE to close()
+    the wrong file descriptor; implementation of SOCKET-OPEN-P.
+    (thanks to Tony Martinez)
+  * threads
+    ** gcing a dead thread can no longer lead to lockups
+    ** threads block signals until they are set up properly
+    ** errno is no longer shared by threads
+    ** interrupt-thread restores the eflags register on x86
+    ** fixed some lockups due to gc/thread interaction
+  * fixed some bugs revealed by Paul Dietz' test suite:
+    ** invalid dotted lists no longer raise a read error when 
+       *READ-SUPPRESS* is T
+    ** signal an error if a symbol that names a declaration is used
+       as the name of a type, or vice versa
+    ** allow using the (declare (typespec var*)) abbreviation for 
+       (declare (type typespec var*)) with all type specifiers
+    ** circularity detection works properly with PPRINT-LOGICAL-BLOCK
+    ** always return NIL from PPRINT-POP when OBJECT is NIL
+    ** don't signal errors when pretty-printing malformed LABELS, 
+       FLET or MACROLET forms
+    ** declarations in a DOLIST body are also in scope for the 
+       DOLIST return-form
+    ** COMPILE-FILE accepts all pathname designators as INPUT-FILE
+       and OUTPUT-FILE
+    ** the ELEMENT-TYPE keyword argument to WITH-OUTPUT-STREAM is 
+       always evaluated
+
+changes in sbcl-0.9.1 relative to sbcl-0.9.0:
+  * fixed cross-compiler leakages that prevented building a 32-bit
+    target with a 64-bit host compiler.
+  * fixed a bug in CLOSE :ABORT T: no longer attempts to remove files
+    opened with :IF-EXISTS :OVERWRITE.
+  * fixed bug 281: error for an invalid qualifier in a short-form method
+    combination method is not signalled until the faulty method is called.
+  * bug fix: iteration variable type inferrer failed to deal with open
+    intervals. (reported by Alan Shields)
+  * bug fix: dynamically loading (via LOAD-SHARED-OBJECT or similar)
+    "frameworks" on Mac OS X no longer causes an EXC_BAD_ACCESS if two
+    or more runtime options were provided to the sbcl binary.
+  * compiled code is not steppable if COMPILATION-SPEED >= DEBUG.
+  * contrib improvement: implement SB-POSIX:MKSTEMP (Yannick Gingras)
+  * optimization: there's now a fast-path for fixnum arguments in the
+    generic subtraction routines on x86/x86-64. (Thanks to Lutz Euler)
+  * optimization: the code generated on x86-64 is more compact thanks
+    to not outputting unneccessary prefix bytes. (Thanks to Lutz Euler)
+  * bug fix: floating-point exception handling now partly works on
+    x86-64.  (Thanks to James Knight)
+  * improvement to the MIPS backend from Thiemo Seufer: C-style
+    64-bit long long arguments and return values to alien functions
+    are now supported.
+  * fixed some bugs revealed by Paul Dietz' test suite:
+    ** the type-error signalled from WARN has a filled-in DATUM slot.
+    ** the type-error required when a stream is not associated with
+       a file has the stream as its datum.
+    ** type-errors on single-floats on x86-64 no longer have 
+       :INVALID-OBJECT as the datum
+    ** the type-errors signalled for invalid function names now have
+       a correct expected type
+    ** (SETF (DOCUMENTATION ... 'STRUCTURE)) no longer signals an error
+       for structures defined with a :TYPE. Documentation strings for
+       typed structures are no longer immediately discarded
+    ** FILE-STRING-LENGTH and STREAM-EXTERNAL-FORMAT now work on 
+       broadcast streams and synonym streams. FILE-LENGTH now also works
+       on broadcast streams.
+
+changes in sbcl-0.9.0 relative to sbcl-0.8.21:
+  * incompatible change: the --noprogrammer option, deprecated since
+    version 0.7.5, has been removed.  Please use the equivalent
+    --disable-debugger option instead.
+  * incompatible change: finalizers and *AFTER-GC-HOOKS* are now run with
+    interrupts enabled.
+  * incompatible change: support for *BEFORE-GC-HOOKS* (that have been
+    inoperational for a while now) has been completely removed.
+  * null lexical environments are now printed as #<NULL-LEXENV>, 
+    significantly reducing the amount of clutter in typical backtraces.
+  * documentation on weak pointers, finalization, and after GC hooks
+    has been added to the manual.
+  * optimization: REPLACE on declared (UNSIGNED-BYTE 8) vectors, as well
+    as other specialized array types, is much faster.  SUBSEQ and
+    COPY-SEQ on such arrays have also been sped up.
+  * optimization: EQL is now more efficient when at least other argument 
+    is known to be of type (OR FIXNUM (NOT NUMBER)).
+  * fixed bug: the runtime is now less vulnerable to changes in the
+    size of the SBCL object on OS X, and virtual memory is reserved for
+    all spaces that need to be at a fixed address.
+  * fixed bug: finalizers are now thread-safe. (thanks to Gabor Mellis)
+  * fixed bug: finalizers and after GC hooks that cause consing are now
+    safe.
+  * fixed bug: compiler error messages and summaries are now printed to 
+    *ERROR-OUTPUT*, not *STANDARD-OUTPUT*.
+  * fixed inference of the upper bound of an iteration variable.
+    (reported by Rajat Datta).
+  * fixed bug 211e: calling local functions with duplicated constant
+    keyword argument no longer causes a bogus style warning about an
+    unused variable.
+  * fixed bug 305: INLINE/NOTINLINE declaration no longer causes local
+    ftype declaration to be disregarded. (reported by Dave Roberts)
+  * fixed bug 373: caused by erronous compilation of references to alien
+    variables in the runtime on ppc/darwin.
+  * fixed bug 376: CONJUGATE type deriver.
+  * fixed infinite looping of ALIEN-FUNCALL, compiled with high DEBUG.
+    (reported by Baughn on #lisp)
+  * a cross-compiler bug on non-x86 platforms has been identified and
+    fixed.  (thanks to Bruno Haible)
+  * improvements to the MIPS runtime code for increased stability.
+    (thanks to Thiemo Seufer)
+  * increased the maximimum compact environment size to allow
+    purify on images with large amounts of functions. (thanks to Cyrus Harmon)
+  * partial workaround for bug 135: don't name the function we're
+    calling for hairy cases of EVAL, so as not to accumulate one environment
+    entry per call to EVAL.  (reported by Kevin Reid)
+  * improvements to the x86-64 disassembler. (thanks to Lutz Euler)
+  * optimization: type testing for non-vector arrays should be faster.
+  * fixed TRACE :ENCAPSULATE NIL, added support for :ENCAPSULATE NIL
+    on x86-64
+  * bug fix: setting 31st element of a bit vector to zero did not work
+    on Alpha-32.
+  * bug fix: redefining a class definition which failed due to a
+    previous accessor / function clash now works (but see BUGS entry
+    #380 for more problems in this area).  (thanks to Zach Beane)
+  * the long form of DEFINE-METHOD-COMBINATION disables method group
+    checking when given a single method group with pattern *.  (thanks
+    to Wendall Marvel)
+  * on x86 compiler supports stack allocation of results of simple
+    calls of MAKE-ARRAY, bound to variables, declared DYNAMIC-EXTENT.
+  * support for building and running on Mac OS X 10.4 "Tiger" has been added
+    ** Binaries built on Tiger will not run on 10.2 "Jaguar" currently
+  * fixed some bugs related to Unicode integration:
+    ** the restarts for recovering from input and output encoding
+       errors only appear when there is in fact such an error to
+       handle.
+  * fixed some bugs revealed by Paul Dietz' test suite:
+    ** MISC.549 and similar: late transformation of unsafe type
+       assertions into derived types caused unexpected code
+       transformations.
+    ** SCALE-FLOAT type deriver is less wrong.
+    ** type derivers for EXP, LOG and similar functions compute result
+       types for complex arguments better.
+    ** (MISC.563) CONJUGATE type deriver works for very restricted
+       complex types.
+    ** out-of-line type testers for character strings are available.
+    ** EQUAL compiler transform understands specialness of objects
+       of type BIT-VECTOR.
+    ** accessing double-floats stored on the stack now works on x86-64.
+    ** debugger internals could sometimes create invalid lispobjs, 
+       resulting in GC crashes.
+    ** MISC.548: type check weakening can convert required type into
+       optional.
+    ** initialization forms for bindings are not in scope of free special
+       declarations.
+
 changes in sbcl-0.8.21 (0.9alpha.1?) relative to sbcl-0.8.20:
+  * incompatible change: thread support for non-NPTL systems has
+    been removed - locking is buggy and unreliable.  A threaded 
+    SBCL build will now warn at startup and refuse to create
+    new threads, unless futex support is detected in the kernel
   * incompatible change: the top level REPL now has only an ABORT
     restart associated with it, not TOPLEVEL and ABORT as it used to.
     TOP and TOPLEVEL are now available as debugger commands for 
@@ -9,6 +252,8 @@ changes in sbcl-0.8.21 (0.9alpha.1?) relative to sbcl-0.8.20:
     no longer processed with LOAD, but by READ and EVAL; hence the
     global optimization policy, startup package, readtable, etc, 
     can be set by them.
+  * The .fasl file format number has been incremented because of 
+    various incompatible changes.
   * internal entry point details and argument counts no longer appear
     in backtraces unless explicitly requested by setting
     SB-DEBUG:*SHOW-ENTRY-POINT-DETAILS*.
@@ -51,6 +296,9 @@ changes in sbcl-0.8.21 (0.9alpha.1?) relative to sbcl-0.8.20:
     ** MISC.564: defined out-of-line version of %ATAN2 on x86.
     ** attempting to create a package with a colliding nickname causes
        correctable errors to be signalled.
+    ** MISC.572-574: :START1 and :START2 broken for simple-base-strings.
+    ** several x86-64 backend bugs related to sign-extension of immediate
+       operands.
 
 changes in sbcl-0.8.20 (0.9alpha.0?) relative to sbcl-0.8.19:
   * fixed inspection of specialized arrays. (thanks to Simon Alexander)