-changes in sbcl-0.7.0 relative to sbcl-0.6.13:
-* major incompatible change: The default fasl file extension, i.e. the
- default extension for files produced by COMPILE-FILE, has changed
- to ".fasl", for all architectures. (No longer ".x86f" and ".axpf".)
-* compiler changes:
- ** There are many changes in the implementation of the compiler.
- SBCL is now essentially a compiler-only implementation of ANSI
- Common Lisp. EVAL still "interprets" a few special cases, but
- almost all the interesting cases are handled by creating
- a LAMBDA expression, calling COMPILE on it, then calling
- FUNCALL on the result.
- ** The EVAL-WHEN code has been rewritten to be ANSI-compliant, and
- various related bugs (IR1-1, IR1-2, IR1-3, IR1-3a) have gone away.
- Since the code is newer, there might still be some new bugs
- (though not as many as before Martin Atzmueller's fixes:-). But
- the new code is substantially simpler and clearer, and hopefully
- any remaining bugs will be simpler, less fundamental, and more
- fixable then the bugs in the old code.
- ** The revised compiler is still a little unsteady on its feet.
- In particular,
- *** The debugging information it produces (particularly the names
- of FUNCTION objects) is sometimes much less useful than what
- the old compiler produced.
- *** The support for inlining FOO when you (DECLAIM (INLINE FOO))
- then do (DEFUN FOO ..) in a non-null lexical environment (e.g.
- within a MACROLET) has been temporarily weakened.
- ** There are new compiler optimizations for various functions:
- *** the sequence functions FIND, POSITION, FIND-IF, POSITION-IF,
- FIND-IF-NOT, POSITION-IF-NOT, and FILL
- *** the math functions TRUNCATE, FLOOR, and CEILING
- *** the function-of-all-trades COERCE
- Mostly these should be transparent, but there's one
- potentially-annoying problem (bug 117): when the compiler
- inline-expands a function and does type analysis on the result,
- it can create control paths which have type mismatches, and
- when it can't prove that those control paths aren't taken,
- it will issue WARNINGs about the type mismatches. This is
- a particular problem in practice for the new sequence functions.
- It's not clear how this should be fixed, and for now, a
- workaround is given in the entry for 117 in the BUGS file.
- ** (Because of the interaction between the two previous items --
- occasional inlining problems and new inline expansions -- some
- of the new sequence function optimizations won't really kick in
- completely until debugging information, and then inlining, are
- straightened out in some future version.)
-* minor incompatible changes:
- ** As part of a bug fix by Christophe Rhodes to DIRECTORY behavior,
- DIRECTORY no longer implicitly promotes NIL slots of its
- pathname argument to :WILD. In particular, when you ask for the
- contents of a directory (which you used to be able to do without
- explicit wildcards, e.g. (DIRECTORY "/tmp/")) you now need to use
- explicit wildcards, e.g. (DIRECTORY "/tmp/*.*").
- ** changes in behavior that ANSI explicitly defines to be
- implementation dependent:
- *** The new compiler-only implementation still conforms with ANSI,
- but acts a little different than before. Besides the obvious
- changes in performance tradeoffs (that the cost per form passed
- to EVAL has gone up, and the cost per form executed by EVAL
- has gone down), the behavior of the system changes a little
- because there are no longer any interpreted function objects.
- COMPILED-FUNCTION-P is now synonymous with FUNCTIONP, and
- e.g. doing COMPILE on the output of interactive DEFUN is
- now a no-op.
- *** The value of INTERNAL-TIME-UNITS-PER-SECOND has been increased
- from 100 to 1000.
- *** The default for the USE list in MAKE-PACKAGE and DEFPACKAGE
- has changed from (:CL) to NIL.
- *** The CHAR-NAME of unprintable ASCII characters which, unlike
- e.g. #\Newline and #\Tab, don't have names specified in the
- ANSI Common Lisp standard, is now based on their ASCII symbolic
- names (#\Nul, #\Soh, #\Stx, etc.) The old CMU-CL-style names
- (#\Null, #\^a, #\^b, etc.) are still accepted by NAME-CHAR, but
- are no longer used for output.
- ** changes in internal implementation constants:
- *** The default value of *BYTES-CONSED-BETWEEN-GCS* has doubled, to
- 4 million. (If your application spends a lot of time GCing and
- you have a lot of RAM, you might want to experiment with
- increasing it even more.)
- ** The SB-C-CALL package has been merged into the SB-ALIEN package.
- However, almost all old code should still continue to work without
- immediate update, as SB-C-CALL is now a (deprecated) nickname
- for SB-ALIEN.
- ** Old operator names in the style DEF-FOO are now deprecated in
- favor of new corresponding names DEFINE-FOO, for consistency with
- the naming convention used in the ANSI standard (DEFSTRUCT, DEFVAR,
- DEFINE-CONDITION, DEFINE-MODIFY-MACRO..). This mostly affects
- internal symbols, but a few supported extensions like
- SB-ALIEN:DEF-ALIEN-FUNCTION are also affected. (So e.g.
- DEF-ALIEN-FUNCTION becomes DEFINE-ALIEN-FUNCTION.)
- ** The debugger prompt sequence now goes "5]", "5[2]", "5[3]",
- etc. as you get deeper into recursive calls to the debugger
- command loop, instead of the old "5]", "5]]", "5]]]"
- sequence. (I was motivated to do this when squabbles between
- ILISP and SBCL left me very deeply nested in the debugger. In the
- short term, this change will probably provoke more ILISP/SBCL
- squabbles, but hopefully it will be an improvement in the long run.)
- ** SB-ALIEN:DEFINE-ALIEN-FUNCTION (also known by the old deprecated
- name DEF-ALIEN-FUNCTION) now does DECLAIM FTYPE for the defined
- function, since declaiming return types involving aliens is
- (1) annoyingly messy to do by hand and (2) vital to efficient
- compilation of code which calls such functions.
- ** SB-ALIEN:LOAD-FOREIGN and SB-ALIEN:LOAD-1-FOREIGN are no
- longer reexported by the SB-EXT package. They're solely useful
- for alien code, so it seems more logical that you should get
- them from the SB-ALIEN package, not in SB-EXT.
- ** :SB-CONSTRAIN-FLOAT-TYPE, :SB-PROPAGATE-FLOAT-TYPE, and
- :SB-PROPAGATE-FUN-TYPE are no longer considered to be optional
- features. Instead, the code that they used to control is always
- built into the system.
-* many other bug fixes
- ** DEFSTRUCT and DEFCLASS have been substantially updated to take
- advantage of the new EVAL-WHEN stuff and to clean them up in
- general, and they are now more ANSI-compliant in a number of
- ways. Martin Atzmueller is responsible for a lot of this.
- ** Besides the cleanups discussed above, Martin Atzmueller fixed
- several other bugs:
- *** fixes in READ-SEQUENCE and WRITE-SEQUENCE
- *** correct ERROR type for various file operations
- *** some fixes for Lisp streams
- *** DEFMETHOD syntax checking
- *** changing old weird representation of debug information as
- strings (which, among their other deficiencies, don't transform
- correctly when you rename packages, and don't change their
- print representation when you change things like *PACKAGE*
- and *PRINT-LENGTH*) to symbols and lists of symbols
- He also made several improvements and fixed several bugs in DESCRIBE.
- ** Alexey Dejneka fixed many bugs, including classic bugs and bugs he
- discovered himself:
- *** misbehavior of WRITE-STRING/WRITE-LINE
- *** LOOP over keys of a hash table, LOOP bugs 49b and 81 and 103,
- and several other LOOP problems as well
- *** DIRECTORY when similar filenames are present
- *** DEFGENERIC with :METHOD options
- *** bug 126, in (MAKE-STRING N :INITIAL-ELEMENT #\SPACE))
- *** bug in the optimization of ARRAY-ELEMENT-TYPE
- *** argument ordering in FIND with :TEST option
- *** mishandled package designator argument in APROPOS-LIST
- *** various problems in the backquote readmacro
- *** a bug in APROPOS
- *** probably some others that I'm not describing very well here,
- since the CVS log documents them by reference to sbcl-devel
- messages, and the SourceForge archives aren't working well.:-(
- ** Dan Barlow improved the Alpha port (and is making progress on the
- PPC port, for those of you who think different).
- ** Besides the DIRECTORY fixes and changes mentioned elsewhere,
- Christophe Rhodes cleaned up the system self-test scripts (in tests/*),
- contributed the optimization of FIND-IF-NOT and POSITION-IF-NOT, and
- continues to work on the SPARC port (for those of you in a position
- to look down upon our little PC-compatible boxes from a great height).
- ** PPRINT-LOGICAL-BLOCK now copies the *PRINT-LINES* value on entry
- and uses that copy, rather than the current dynamic value, when
- it's trying to decide whether to truncate output. Thus e.g.
- (let ((*print-lines* 50))
- (pprint-logical-block (stream nil)
- (dotimes (i 10)
- (let ((*print-lines* 8))
- (print (aref possiblybigthings i) stream)))))
- should now truncate the logical block only at 50 lines, instead of
- often truncating it at 8 lines, as it did before.
-* The doc/cmucl/ directory, containing old CMU CL documentation
- from the time of the fork, is no longer part of the base system.
- SourceForge has shut down its anonymous FTP service, and with it
- my original plan for distributing the old CMU CL documentation
- there. For now, if you need these files you can download an old
- SBCL source release and extract them from it.
-* The fasl file version number changed again, for dozens of reasons,
- some of which are apparent above.
+changes in sbcl-0.8.5 relative to sbcl-0.8.4:
+ * 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.
+ * 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.
+ * 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
+ #lisp)
+ * fixed bug 141b: printing backquoted information readably and prettily
+ inserts a space where necessary.
+ * bug fix: obviously wrong type specifiers such as (FIXNUM 1) or
+ (CHARACTER 10) are now reported as errors, rather than propagated
+ as unknown types. (reported by piso on #lisp)
+ * bug fix: the :IF-EXISTS argument to OPEN now behaves correctly
+ 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
+ salex on #lisp)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** incorrect optimization of TRUNCATE for a positive first
+ argument and negative second.
+ ** compiler failure in let-convertion during flushing dead code.
+ ** compiler failure while deriving type of TRUNCATE on an
+ interval, containing 0.
+ ** ASH of a negative bignum by a negative bignum count now returns
+ -1, not 0.
+ ** intersection of CONS types now canonicalizes properly, fixing
+ inconsistencies in SUBTYPEP.
+
+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).
+
+changes in sbcl-0.8.3 relative to sbcl-0.8.2:
+ * SBCL now builds and runs on MacOS X (version 10.2), or perhaps
+ more accurately, on the Darwin kernel running on PowerPC hardware.
+ (thanks to Brian Mastenbrook, Pierre Mai and Patrik Nordebo)
+ * Compiler code deletion notes now signal a condition of type
+ SB-EXT:CODE-DELETION-NOTE (a subtype of SB-EXT:COMPILER-NOTE) with
+ an associated MUFFLE-WARNING restart.
+ * The compiler now performs limited argument count validation of
+ constant format strings in FORMAT, and where appropriate in ERROR,
+ CERROR and WARN. (thanks to Gerd Moellmann)
+ * New ASDF-INSTALL contrib can be used for automatic download and
+ installation of third-party Lisp code from CCLAN or other sites
+ via CLiki.
+ * Threaded builds (:SB-THREAD) now support SB-THREAD:INTERRUPT-THREAD,
+ which forces another thread to execute a function supplied by the
+ caller.
+ * bug 75 fix: WITH-OUTPUT-TO-STRING (and MAKE-STRING-OUTPUT-STREAM)
+ now accept and act upon their :ELEMENT-TYPE keyword argument.
+ (reported by Martin Atzmueller, Edi Weitz)
+ * bug fix: FILE-POSITION now accepts position designators up to
+ ARRAY-DIMENSION-LIMIT or the extreme of the off_t range, whichever
+ is the greater. (thanks to Patrik Nordebo)
+ * bug fix: MAKE-ARRAY ignored :INITIAL-CONTENTS NIL. (reported by
+ Kalle Olavi Niemitalo)
+ * bug fix: the CLASS-PROTOTYPE of the GENERIC-FUNCTION class is now
+ printable. (reported by Eric Marsden)
+ * bug fix in sb-posix: mmap() now works on systems with a 64-bit
+ off_t, including Darwin and FreeBSD. (thanks to Andreas Fuchs)
+ * x86 bug fix in control stack exhaustion checking: now shows backtrace
+ * bug fix in WITH-TIMEOUT: now the body can have more than one form.
+ (thanks to Stig Sandoe)
+ * bug fix in READ-SEQUENCE: READ-SEQUENCE following PEEK-CHAR or
+ UNREAD-CHAR now correctly includes the unread character in the
+ target sequence. (thanks to Gerd Moellmann)
+ * bug fix in threaded builds: the system can now be suspended and
+ resumed by shell job control with minimal disruption.
+ * bug fixes in times and timezones >2038AD
+ * better handling of "where is GNU make?" problem in build scripts
+ (thanks to Nikodemus Siivola)
+ * new optimization: inside a named function any reference to a
+ function with the same name is considered to be a self-reference;
+ this behaviour is controlled with SB-C::RECOGNIZE-SELF-CALLS
+ optimization quality.
+ * new optimization on x86: logical functions and + now have
+ optimized (UNSIGNED-BYTE 32) versions, which are automatically
+ used when the result is truncated to 32 bits.
+ * VALUES declaration is partially enabled.
+ * fixes in SB-GROVEL (thanks to Andreas Fuchs)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** The system now obeys the constraint imposed by
+ UPGRADED-ARRAY-ELEMENT-TYPE that the upgraded array element
+ types form a lattice under type intersection.
+ ** FFLOOR, FTRUNCATE, FCEILING and FROUND work with integers.
+ ** ASSOC now ignores NIL elements in an alist.
+ ** CEILING now gives the right answer with MOST-NEGATIVE-FIXNUM
+ and (1+ MOST-POSITIVE-FIXNUM) answers.
+ ** The addition of a method with invalid qualifiers to a generic
+ function does not cause an error to be signalled immediately;
+ a warning is signalled, and the error is generated only on
+ calling the generic function.
+ * changed .fasl file version number, in part to add type codes for
+ new array subtypes UNSIGNED-BYTE 7, 15, 29, and 31 mandated by
+ obscure ANSI requirements
+
+changes in sbcl-0.8.2 relative to sbcl-0.8.1:
+ * fixed bug 148: failure to inline-expand a local function left
+ garbage, confusing the compiler.
+ * fixed bugs 3cd: structure slot readers perform type check if the
+ slot can have an invalid value (i.e. it is either not initialized
+ or can be written with a less specific slot writer).
+ * bug fix: the compiler now traps array references to elements off
+ the end of an array; previously, the bounds checking in some
+ circumstances could go off-by-one.
+ * improved MACHINE-VERSION, especially on Linux (thanks to Lars
+ Brinkhoff)
+ * type declarations for array element types now obey the description
+ on the CLHS page "Declaration TYPE", as per discussions on
+ sbcl-help around 2003-05-08. This means that a declaration
+ (TYPE (ARRAY FOO) BAR) means that, within the scope of the
+ declaration, all references to BAR will be asserted or assumed
+ (with THE, so dependent on compiler policy) to involve objects of
+ type FOO. Note that no such declaration is implied in
+ (MAKE-ARRAY .. :ELEMENT-TYPE 'FOO).
+ * declared types of functions from the "Conditions"
+ chapter. (reported by Paul Dietz)
+ * bug fix: CERROR accepts a function as its first argument.
+ * bug fix: NTH an NTHCDR accept a bignum as index
+ arguments. (reported by Adam Warner)
+ * optimization: character compare routines now optimize comparing
+ against a constant character. (reported by Gilbert Baumann)
+ * bug fix: (SETF AREF) on byte-sized-element arrays with constant index
+ argument now works properly on the MIPS platform.
+ * fixed compiler failure on (TYPEP x '(NOT (MEMBER 0d0))).
+ * repeated evaluation of the same DEFSTRUCT, a slot of which is
+ declared to have a functional type, does not cause an error
+ anymore.
+ * fixed bug: sometimes MAKE-INSTANCE did not work with classes with
+ many :DEFAULT-INITARGS. (reported by Istvan Marko)
+ * fixed bug: if last continuation of a deleted block has a
+ destination, this destination should be deleted too. (reported by
+ ohler on #lisp)
+ * fixed a bug in the bootstrap process: the host compiler's values
+ of ARRAY-DIMENSION-LIMIT and ARRAY-TOTAL-SIZE-LIMIT no longer leak
+ into the newly-built SBCL. (reported by Eric Marsden on #lisp,
+ test case from Patrik Nordebo)
+ * improved the ability of the disassembler on the PPC platform to
+ provide helpful disassembly notes.
+ * SB-MOP:CLASS-PROTOTYPE on built-in-classes returns an instance of
+ the class in more cases than previously.
+ * bug fix: FILE-POSITION now understands :START and :END for
+ STRING-INPUT-STREAMs. (thanks to Nikodemus Siivola)
+ * bug fix: (SIGNED-BYTE 8) streams no longer return (UNSIGNED-BYTE
+ 8) data. (thanks to David Lichteblau)
+ * bug fix: it is possible to add a method to a generic function
+ without lambda list.
+ * bug fix: reader failed to signal END-OF-FILE inside an
+ object representation. (reported by Nikodemus Siivola)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** LAST and [N]BUTLAST should accept a bignum.
+ ** condition slot accessors are methods.
+ ** (VECTOR NIL) is a subtype of STRING.
+
+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. (Currently it does not work with high DEBUG level.)
+ * minor incompatible change: VALUES declaration is disabled.
+ * When issuing notes, the compiler now signals a condition of type
+ SB-EXT:COMPILER-NOTE, and provides an associated MUFFLE-WARNING
+ restart for use in user handlers. It is expected that the
+ COMPILER-NOTE condition will eventually become a condition
+ supertype to a hierarchy of note types, which will then be
+ handleable in a similar fashion. However, at the moment, no such
+ note subtypes yet exist. (SB-INT:SIMPLE-COMPILER-NOTE exists,
+ but it's an implementation detail, not a classification for the
+ purpose above.)
+ * 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).
+ * A short form of VALUES type specifier has ANSI meaning (it has
+ increased the number of situations when SBCL cannot perform type
+ checking).
+ * 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)
+ * fixed bug 246: increased compilation speed of long
+ MULTIPLE-VALUE-BIND (and likewise of NTH-VALUE with a constant
+ integer argument)
+ * 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 now better at handling symbol macros.
+ * bug fix: There is no longer an internal implementation type named
+ CL:LENGTH. (reported by Raymond Toy)
+ * bug fix: In macro-like defining macros/special operators the
+ implicit block does not enclose the lambda list.
+ * fixed bugs 10 and 43: Bare VALUES, AND, OR and MEMBER symbols (not
+ enclosed in parentheses) are not suitable as type specifiers, and
+ their use properly signals an error now.
+ * bug fix: An argument count mismatch for a type specifier in code
+ being compiled no longer causes an unhandled error at compile
+ time, but signals a compile-time warning.
+ * fixed simple vector readable printing
+ * bug fix: DESCRIBE takes more care over whether the class
+ precedence list slot of a class is bound before accessing it.
+ (reported by Markus Krummenacker)
+ * bug fix: FORMATTER can successfully compile pretty-printer format
+ strings which use variants of the ~* directive inside.
+ * bug fix: SEARCH now applies its TEST predicate to the elements of
+ the arguments in the correct order. (thanks to Wolfhard Buss)
+ * fixed bug 235b: The compiler uses return types of MAPCAR and friends
+ in type inference. (thanks to Robert E. Brown)
+ * bug fix: Reading in symbols with an explicit package name of ""
+ (e.g. '||::FOO) now works correctly. (reported by Henrik Motakef)
+ * 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
+ five 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.
+ ** TYPE-OF returns recognizeable subtypes of all built-in-types of
+ which its argument is a member.
+ ** DEFCLASS only redefines the class named by its class-name
+ argument if that name is the proper name of the class;
+ otherwise, it creates a new class.
+ ** SLOT-UNBOUND now correctly initalizes the CELL-ERROR-NAME slot
+ of the UNBOUND-SLOT condition to the name of the slot.
+ ** (SETF (AREF bv 0) ...) did not work for bit vectors.
+ ** SLOT-UNBOUND and SLOT-MISSING now have their return values
+ treated by SLOT-BOUNDP, SLOT-VALUE, (SETF SLOT-VALUE) and
+ SLOT-MAKUNBOUND in the specified fashion.
+
+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.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.7.14 relative to sbcl-0.7.13:
+ * a better implementation of SXHASH on (simple) bit vectors,
+ measured both in execution speed and in distribution of results
+ over the positive fixnums, has been installed. Likewise, a better
+ implementation of EQUAL for simple bit vectors is now available.
+ * fixed CEILING optimization for a divisor of form 2^k.
+ * fixed bug 240 (emitting extra style warnings "using the lexical
+ binding of the symbol *XXX*" for &OPTIONAL arguments). (reported
+ by Antonio Martinez)
+ * fixed SXHASH, giving different results for NIL depending on type
+ declarations (SYMBOL or LIST). (thanks to Gerd Moellmann)
+ * fixed bug in DEFPARAMETER and DEFVAR: they could assign a lexical
+ 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;
+ ** the type system is now able to reason about the interaction
+ between INTEGER and RATIO types more completely;
+ ** APPEND, [N]REVERSE and NRECONC check that those their
+ arguments, which must be proper lists, are really so;
+ ** An array specialized to be unable to hold elements has been
+ implemented, as required -- yes, really -- by ANSI;
+ ** GETF and GET-PROPERTIES throw a TYPE-ERROR, not a SIMPLE-ERROR,
+ on malformed property lists;