tag name | sbcl_0_8_4 (e56b5a4b5f23c205b4d6507047f11fc0086c6852) |
tag date | 2003-10-02 19:04:23 +0300 |
tagged by | William Harold Newman <william.newman@airmail.net> |
tagged object | commit 224466fab9... |
changes in sbcl-0.8.4 relative to sbcl-0.8.3:
* incompatible change: The --disable-debugger command line
option now clobbers the debugger at a more fundamental
level, by redefining #'INVOKE-DEBUGGER instead of by
rebinding *DEBUGGER-HOOK*. The main difference is that BREAK
is specified by ANSI to ignore *DEBUGGER-HOOK* and
INVOKE-DEBUGGER regardless. Under the old system, BREAK would
enter the debugger REPL and then suffer recursive errors
because *DEBUG-IO* is also messed up in --disable-debugger mode;
while under the new system, BREAK in --disable-debugger mode
terminates the system just as an unhandled error would.
* fixed compiler performance when processing loops with a step >1;
* bug fix: DOCUMENTATION now retrieves generic function
documentation. Also, DOCUMENTATION and (SETF DOCUMENTATION)
support has been systematized, and now supports the methods
specified by ANSI, along with a default method and a method for
slot documentation. (reported by Nathan Froyd)
* bug fix: effective methods associated with a generic function are
no longer cached over a change of that generic function's method
combination. (reported by Andreas Fuchs)
* bug fix: RUN-PROGRAM now does not fail if some element in $PATH
names a non-existent directory. (thanks to Andreas Fuchs)
* bug fix: ROUND and TRUNCATE could, under certain circumstances on
the PPC platform, lead to stack corruption; this has been fixed.
(reported by Rainer Joswig)
* bug fix: ASH on an (UNSIGNED-BYTE 32) with a shift of -32 or lower
no longer ever returns 1 instead of 0. (thanks to Lars Brinkhoff)
* fixed bug 285: TRUNCATE on bignum arguments, and indeed bignum
arithmetic in general, is now much more reliable on the PPC
platform.
* bug fix: LOGCOUNT on (UNSIGNED-BYTE 64) objects on the Alpha
platform now returns the right answer.
* optimization: restored some effective method precomputation in
CLOS (turned off by an ANSI fix in sbcl-0.8.3); the amount of
precomputation is now tunable.
* optimization: compiler-internal data structure use has been
reviewed, and changes have been made that should improve the
performance of the compiler by about 20%.
* optimization: performance of FILL (and :INITIAL-ELEMENT) on
simple-base-strings and simple-bit-vectors is improved.
* optimization: the optimization of 32-bit logical and arithmetic
functions introduced in version 0.8.3 on the x86 has been
implemented on the mips, ppc and sparc platforms; an
implementation of the same facility, but for 64-bit arithmetic,
has been added for the alpha.
* microoptimization: the compiler is better able to make use of the
x86 LEA instruction for multiplication by constants.
* bug fix: in some situations compiler did not report usage of
generic arithmetic in (SPEED 3) policy.
* bug 145b fix: compiler used wrong type specifier while converting
MEMBER-types to numeric.
* bug fix: COMPILE-FILE must bind *READTABLE*. (reported by Doug
McNaught)
* bug fix: (SETF AREF) on byte-sized-element arrays with constant
index argument now works properly on the Alpha platform.
* bug fix: floating point exception treatment on the Alpha platform
is improved.
* bug fix: FILE-POSITION works much better on string input and
output streams. (thanks to Nikodemus Siivola)
* bug fix: many threading/garbage collection symptoms sorted.
SB-THREAD:INTERRUPT-THREAD now safe to call on a thread that
might be pseudo-atomic.
* internal change: Stopping for GC is now done with signals not
ptrace. GC is now done in whichever thread wanted it, instead of
in the parent.
* bug fix: GC hooks (missing since 0.8) reinstated, so finalizers
work again.
* bug fix: result form in DO is not contained in the implicit
TAGBODY.
* incompatible change: ICR structure is changed; the value part of
CONTINUATION is now called LVAR; corresponding functions are
renamed (e.g. SB-C::CONTINUATION-TYPE has become SB-C::LVAR-TYPE).
* added type deriver for ISQRT (thanks to Robert E. Brown).
* bug fix: better support for loading from the command line when an
initialization file sets (READTABLE-CASE *READTABLE*). (thanks
to Adam Warner)
* fixed some bugs revealed by Paul Dietz' test suite:
** the RETURN clause in LOOP is now equivalent to DO (RETURN ...).
** ROUND and FROUND now give the right answer when given very
small float arguments.
** (FLOAT X) for X of type DOUBLE-FLOAT now returns X in all
circumstances.
** optimizer for (EXPT X 0) did not work for X not of type FLOAT.
** (GCD 0 <negative-integer>) returned <negative-integer>.
** LCM should return a non-negative integer.
** PARSE-INTEGER returned the index of a terminator instead of the
upper bounding index of a substring in case :JUNK-ALLOWED NIL.
** PARSE-INTEGER returned an incorrect index being applied to a
displaced string.
** LCM with two arguments of 0 returns 0 rather than signalling
DIVISION-BY-ZERO.
** unsigned addition of a 32-bit constant with the high bit set no
longer causes an internal compiler error on the x86.
** LOGBITP accepts a non-negative bignum as its INDEX argument.
** compiler incorrectly derived types of DPB and DEPOSIT-FIELD
with negative last argument.
** byte specifiers with zero size and position no longer cause
an error during type derivation.
** bignum multiplication on the Alpha platform now returns the
right answer.
* porting: The system now builds on SuSE AMD64, although it still
generates a 32-bit binary.
* .fasl file incompatibility: The fasl file version number has
been incremented (because of the changes to internal compiler
data structures referred to above).