[armedbear-devel] Autoloading && method definitions

Erik Huelsmann ehuels at gmail.com
Tue Jul 31 15:56:05 UTC 2012

Hi all,

Today I've been playing around with ways to automatically extract symbols
from our build to automate (most) of the autoloads.lisp maintenance. So,
I've created a small adjustment to COMPILE-FILE which saves the top-level
DEFUNs, DEFMETHODs and DEFGENERICs which have been compiled.

The result is interesting even in light of today's file: analysis shows we
have several generic functions for which methods have been defined across
multiple files. An example: we have definitions for PRINT-OBJECT in
print-object.lisp, but also in java.lisp and format.lisp. This is a
problem, because the autoloader has been instructed to load
"print-object.lisp" only, when finding references to the print-object
generic function.

My conclusion so far is that we need to be able to trigger auto-loading of
more than one source file *and* that we need a way to determine in which
order to load them: we'd typically want to load the file containing the
DEFGENERIC before we load the one with the other method definitions. While
the former isn't trivial (think threading) but doable, I'm still thinking
how to achieve the latter.

So, why do we want autoloading at all? Well, we want to make sure we get a
short start up time and to achieve that, we don't load the parts of the
system that we don't need. How much extra time it would take to load the
full system? I have no idea at this moment. (But we could experiment and
code to that extent would be greatly appreciated!)

And why do I want to part with our current system? Well, from analysis of
the DEFUN/DEFGENERIC/DEFMETHOD data (and thus excluding the DEFMACRO data)
we have 2512 definitions each of which may be referenced by our users.
Currently only a few hundred of them actually exist before the file gets
autoloaded. Which ones will exist is hard to tell from the sources
themselves. Maintaining the file is somewhat a trial and error process: if
ABCL doesn't load without the autoloads, add them to the autoloads.lisp
file. I'd like our process to be both more automatic and less trial and

[I started to write the above yesterday, but apparently didn't send it...]


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/armedbear-devel/attachments/20120731/5839622a/attachment.html>

More information about the armedbear-devel mailing list