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
of its result.
* type declarations inside WITH-SLOTS are checked. (reported by
salex on #lisp)
- * loading incompatible FASLs, e.g. those produced by an incompatible
- lisp implementation, cause a condition of type SB-EXT:INVALID-FASL
- (a subtype of ERROR) to be raised.
* fixed some bugs revealed by Paul Dietz' test suite:
** incorrect optimization of TRUNCATE for a positive first
argument and negative second.
** 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:
+ * 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)
+ * 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).
+ * 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)
+ * 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 now uses the current readtable when determining
+ whether a character is whitespace.
+
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