SBCL 0.8alpha.0 is now available as a SourceForge file release.
It has many changes, including two -- adding threads and merging PCL's
classes with CL's classes -- that have rather deep consequences.
It is an alpha release. The changes involved -- for threading support
especially -- were sufficiently far-reaching that we wouldn't be too
surprised to find some odd bugs we didn't think to test for. So even
though there are many nice things in it, if you place a particularly
high value on quiet incremental improvements without surprises, you
might want to sit this release out. On the other hand, if you can at
least test this release on your favorite application code and system
configuration, any bug reports can decrease the chance of such
surprises persisting into the following version.
(In case the unusual name of this release isn't self-explanatory:
assuming we consider the next release to be reasonably stable, it will
probably be called 0.8.0. The 0.8alpha.0 name is supposed to precede
0.8.0 under the ordering used in the Debian version manager, and
hopefully won't cause too much confusion otherwise.)
From the NEWS file in the distribution:
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
* 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
* 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
* 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
* 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
* 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
* fixed some bugs revealed by Paul Dietz' test suite:
** COPY-ALIST now signals an error if its argument is a dotted
** 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
** 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
** &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
** :ALLOW-OTHER-KEYS NIL is now accepted in an initarg list.
William Harold Newman <william.newman@...>
"The difference between us is that you are the end of your genealogy,
and I the beginning of mine." -- Bedouin to another Bedouin who has
been boasting of his ancestry, from Al-Tannukhi, _Tabletalk of a
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C