There's no new snapshot today, but I've checked in a new implementation
of COMPILE-FILE that really does compile the file.
In the current scheme of things, given a source file foo.lisp, COMPILE-
FILE generates (by default) foo.fasl in the same directory, plus some
number of files named foo-1.cls, foo-2.cls, etc., one for each compiled
function in that file. The .fasl file is just a .lisp file in disguise;
the .cls files are Java .class files with a different extension.
Once things are sufficiently debugged and stable, it will probably make
sense to wrap up foo.fasl and foo-*.cls into foo.jar, but I haven't
done that yet, since it's still handy to have the individual output
files around for debugging purposes at this point. (They don't eat
You can try all of this out at home by firing up ABCL (after rebuilding
it from the latest CVS sources) and evaluating the form:
For COMPILE-SYSTEM to work, *LISP-HOME* must be set to the full
pathname of the directory containing the Lisp source files (which is
normally /.../src/org/armedbear/lisp). If you build ABCL (or j) from
source on Linux, *LISP-HOME* should be set correctly on startup. If,
for some reason, that turns out not to be the case, COMPILE-SYSTEM will
signal a continuable error, and you should do:
(setq *lisp-home* #p"/my/path/to/src/org/armedbear/lisp/")
(your actual path may vary) and then select the CONTINUE restart. Note
that the final backslash in #p"/my/path/to/src/org/armedbear/lisp/" is
On my main development system, an Athlon XP 2100+, COMPILE-SYSTEM takes
2-3 minutes from a standing start.
I haven't tried any of this on Windows. In principle, there's no reason
why it shouldn't work, but at a minimum *LISP-HOME* won't be set for
you automatically, so some assembly will be required.
Once you've successfully compiled the system, ABCL should start up
much faster, and it will run faster, too, since it will be able to use
compiled versions of most (but not all) of the functions that have in
previous versions been loaded from .lisp files.
Thanks for your support.