Today, I had an idea: what if we were to find all symbols which are being declared EXPORTED during the ABCL system compilation in each file? Then, we'd generate a list of all exported symbols and the files they are exported from. The given file would be included in our JAR. At boot-time, the file would be read and the appropriate autoloaders would be installed.
The consequence would be that we would not need to maintain 'autoloads.lisp' anymore. It would require us to think better about which symbols need to be in the export lists, though. (I guess that's a good thing in the long run, though.) I'm thinking about groveling macro-expanded forms, because that would allow us to grovel clos.lisp and detect many of its exported symbols.
Anybody up for the task? (I'm expecting it to be 4 or 5 evenings of work.)
Bye,
Erik.
On Thu, Aug 5, 2010 at 1:39 PM, Erik Huelsmann ehuels@gmail.com wrote:
Today, I had an idea: what if we were to find all symbols which are being declared EXPORTED during the ABCL system compilation in each file? Then, we'd generate a list of all exported symbols and the files they are exported from. The given file would be included in our JAR. At boot-time, the file would be read and the appropriate autoloaders would be installed.
The consequence would be that we would not need to maintain 'autoloads.lisp' anymore. It would require us to think better about which symbols need to be in the export lists, though. (I guess that's a good thing in the long run, though.) I'm thinking about groveling macro-expanded forms, because that would allow us to grovel clos.lisp and detect many of its exported symbols.
Sounds nice. However, are we sure that everything that's autoloaded today is also exported? Wouldn't it be safer (and probably also easier) if we remembered all function and macro definitions, regardless of their symbol's export status? At least for functions I'm sure we ultimately generate them in a single place (compile-file.lisp iirc).
Anybody up for the task? (I'm expecting it to be 4 or 5 evenings of work.)
I've been quite swamped in the last few days, but I should have enough free time from now on for a while. Hacking on the class-file generator comes first, though ;)
Bye, Alessio
armedbear-devel@common-lisp.net