This is a source-only release -- if you need a binary of this release,
you'll have to get binary of an earlier release of SBCL, or of CMU CL,
and build your own SBCL binary; or get a binary from someone else
who has built one.
There aren't a lot of dramatic changes in this release. Many of the
changes are little maintenance things motivated by my experience using
SBCL to develop the other project that I spend a lot of time on (a
non-freeware program to play the game of Go).
(Incidentally, since I'd kind of like my Go program to be able to
participate in the computer tournament at the US Go Congress
tournament in Denver in August, the pace of development for SBCL may
remain a little slow until then.:-)
from the NEWS file:
changes in sbcl-0.6.6 relative to sbcl-0.6.5:
* DESCRIBE no longer tries to call itself recursively to describe
bound/fbound values, so that it no longer fails on symbols which are
bound to themselves (like keywords, T, and NIL).
* DESCRIBE now works on generic functions.
* The printer now prints less-screwed-up representations of closures
(not naively trying to bogusly use the %FUNCTION-NAME accessor on them).
* A private symbol is used instead of the :EMPTY keyword previously
used to mark empty slots in hash tables. Thus
(DEFVAR *HT* (MAKE-HASH-TABLE))
(SETF (GETHASH :EMPTY *HT*) :EMPTY)
(MAPHASH (LAMBDA (K V) (FORMAT T "~&~S ~S~%" K V)))
now does what ANSI says that it should. (You can still get
similar noncompliant behavior if bang on the hash table
implementation with all the symbols you get back from
DO-ALL-SYMBOLS, but at least that's a little harder to do.)
This breaks binary compatibility, since tests for equality to
:EMPTY are wired into things like the macroexpansion of
WITH-HASH-TABLE-ITERATOR in FASL files produced by earlier
* There's now a minimal placeholder implementation for CL:STEP,
as required by ANSI.
* An obscure bug in the interaction of the normal compiler, the byte
compiler, inlining, and structure predicates has been patched
by setting the flags for the DEFTRANSFORM of %INSTANCE-TYPEP as
:WHEN :BOTH (as per Raymond Toy's suggestion on the cmucl-imp@...
* Missing ordinary arguments in a macro call are now detected even
when the macro lambda list contains &KEY or &REST.
* The debugger no longer complains about encountering the top of the
stack when you type "FRAME 0" to explicitly instruct it to go to
the top of the stack. And it now prints the frame you request even
if it's the current frame (instead of saying "You are here.").
* As specified by ANSI, the system now always prints keywords
as #\: followed by SYMBOL-NAME, even when *PACKAGE* is the
* The default initial SIZE of HASH-TABLEs is now smaller.
* Type information from CLOS class dispatch is now propagated
into DEFMETHOD bodies, so that e.g.
(DEFMETHOD FOO ((X SINGLE-FLOAT))
(+ X 123.0))
is now basically equivalent to
(DEFMETHOD FOO ((X SINGLE-FLOAT))
(DECLARE (TYPE SINGLE-FLOAT X))
(+ X 123.0))
and the compiler can compile (+ X 123.0) as a SINGLE-FLOAT-only
operation, without having to do run-time type dispatch.
* The macroexpansion of DEFMETHOD has been tweaked so that it has
reasonable behavior when arguments are declared IGNORE or IGNORABLE.
* Since I don't seem to be making big file reorganizations very often
any more (and since my archive of sbcl-x.y.zv.tar.bz2 snapshots
is overflowing my ability to conveniently back them up), I've finally
checked the system into CVS. (The CVS repository is on my home system,
not at SourceForge -- putting it on SourceForge might come later.)
* SB-EXT:*GC-NOTIFY-STREAM* has been added, to control where the
high-level GC-NOTIFY-FOO functions send their output. (There's
still very little control of where low-level verbose GC functions
send their output.) The SB-EXT:*GC-VERBOSE* variable now controls
less than it used to -- the GC-NOTIFY-FOO functions are now under
the control of *GC-NOTIFY-STREAM*, not *GC-VERBOSE*.
* The system now stores the version string (LISP-IMPLEMENTATION-VERSION)
in only one place in the source code, and propagates it automatically
everywhere that it's needed. Thus e.g. when I bump the version from
0.6.6 to 0.6.7, I'll only need to modify the sources in one place.
* The C source files now include boilerplate legalese and documentation
at the head of each file (just as the Lisp source files already did).
* At Dan Barlow's suggestion, the hyperlink from the SBCL website
to his page will be replaced with a link to his new CLiki service.
William Harold Newman <william.newman@...>
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C