On Tue, Jan 8, 2013 at 11:09 PM, Daniel Herring dherring@tentpost.com wrote:
On Sun, 6 Jan 2013, Faré wrote:
I will add a concatenate-all-source-op that recursively descends into all system dependencies, concatenates all sources, and creates the output file asdf.lisp, also including defsystem fallback stubs to make upgrade easier, just like the current asdf defsystem fallback stub.
This way, ASDF can enjoy the advantages of both a "large set of small libraries" and a "single-file bootstrap solution". Also, adding new extensions to ASDF will be easier.
It's done in branch exploded, which also creates one package per file, in the style of faslpath and/or quick-build.
I can't merge it to master until I write a variant of defpackage that will make the thing survive hot upgrade, but it's already a major cleanup. For the first time ever, ASDF sources are well-organized and mostly readable — and they are much more correct/robust, too.
That sounds like it could be a very useful feature in general. For example, it would allow any program to be distributed with its all dependencies in a single source file.
Yes, with limitations: 1- you mustn't rely on load-time effects of previous files during the compile-time of your file, unless they've been explicitly wrapped in an eval-when. 2- all your files must have the same encoding. 3- if you have an around-compile hook, it must apply to all files, and be already defined in some specially loaded prelude.
Also, I don't currently register fake/fallback systems for transcluded dependencies.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org If you don't like yourself, you *can't* like other people. — Robert Heinlein, "Time Enough For Love"