From: Peter Graves <peter@ar...> - 2004-08-26 15:37:22
ABCL now uses SBCL's FORMAT implementation.
Before, we were using a somewhat out-of-date version of CMUCL's FORMAT
implementation. By switching to SBCL's (which of course was derived
from CMUCL's in the first place), we pick up a number of useful
I had originally planned to switch over to SBCL's pretty printer as
well, to replace the original Richard Waters implementation from 1991,
but this didn't work out; SBCL's underlying stream implementation
turned out to be too different from ABCL's. I haven't completely given
up the idea, but it was too complicated to undertake at the same time
as the FORMAT-related changes. In the end, I went through pprint.lisp
and deleted huge chunks of code that are no longer relevant (there was
a whole 'nother FORMAT implementation in there) and fixed a number of
bugs that came to light.
ABCL now passes 593 of the 624 FORMAT-related tests in the ANSI test
suite, and 1265 of the 1349 printer-related tests overall.
In the course of this work the autoload dependencies have changed.
FORMAT is now simply an autoload, rather than a stub that was replaced
by (require 'format).
Where possible, I've changed library code to use SYS::%FORMAT instead,
which is a stripped-down version of FORMAT implemented as a Java
primitive that's always available.
The pretty printer is autoloaded too, but that doesn't work 100%
correctly yet (and never has), so it's a good idea to do (require
'pprint) at the beginning of your ABCL session if you think you might
need pretty printing (or if you plan to be doing enough work so that
the second or two it takes to load pprint.abcl is negligible in
comparison). Work continues on fixing all the dependencies so that
autoloading the pretty printer will one day be seamless.
While doing all of this, I've also made a couple of changes in
COMPILE-FILE no longer stores absolute paths in the .abcl files,
except as the value of *FASL-SOURCE*. This might make it possible
to move the .abcl and .cls files from one place to another
(including from one machine to another) and still have them work,
but I haven't tried that myself.
COMPILE-SYSTEM now compiles clos.lisp (albeit in a rather hackish
way). There's still a lot more work to do in the area of making
ABCL's compiler work correctly with CLOS, but this is one step in
After all of these changes, ABCL has 156 failures out of 17427 tests
in the ANSI test suite (which amounts to 99.1% compliance, if you want
to look at it that way). This is better as a raw number than it was
without the changes, but it's quite possible that something that worked
before is broken now. If you run into such a thing, and if that thing
is standing in your way, please feel free to complain.
In any case, I'll be continuing work over the next couple of weeks to
fix the failures on the printer tests and to make the autoloads work
Thanks for your support.