I haven't heard any objection to my plan of merging asdf-bundle into asdf, but I have not any actively supporting mention either — just the fact that it will moderately enhance the lives of Quicklisp, ECL and MKCL maintainers. I'm leaving you a few more days to send me feedback before I actually do it.
In the meantime, I added a precompiled-system feature to asdf-bundle.
You can distribute a library as fasl-only, by first (1) compiling it with fasl-op on your build image: (asdf:operate 'asdf::fasl-op :my-library) Then copying the output file (first (asdf:output-files (make-instance 'asdf::fasl-op) (asdf:find-system :my-library)) to some destination of your choice.
(2) in your user's image, have a .asd that looks like that, or better, evaluate the form as part of your initialization, without the need for a .asd: (defsystem :my-library :class :precompiled-system :fasl #p"/path/to/my-library.system.fasl") The fasl argument can be a logical pathname or an expression that will be evaluated later.
This way, user libraries can use defsystem :depends-on and find the library whether its source is present or whether a .fasl was made available.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org We are always in anarchy. But we pay a hefty price maintaining the illusion that we aren't, and another one being misled by the illusion.
On Thu, Nov 29, 2012 at 9:50 PM, Faré fahree@gmail.com wrote:
On Thu, Nov 29, 2012 at 11:18 AM, Juan Jose Garcia-Ripoll juanjose.garciaripoll@gmail.com wrote:
On Thu, Nov 29, 2012 at 2:41 PM, Faré fahree@gmail.com wrote:
Now, do we want to distribute asdf-bundle.lisp as a separate system asdf-bundle.asd? Do we want to distribute it as part of asdf.asd the way we used to do asdf-ecl.lisp? Do we want to just add its contents to asdf.lisp, a growth of a bit over 10% in size, for additional functionality on many platforms and much less headaches on ECL?
ECL will pledge to whatever means of distribution you choose. Just keep me informed.
After carefully considering the headache for users of Quicklisp and ECL, and the fact that asdf-bundle now supports load-fasl-op for all actively maintained implementations, except ABCL which has its own thing, I've decided that it's probably best to fold asdf-bundle into ASDF. (Note that I haven't tested the SCL, LispWorks or MKCL ports, and that the LispWorks port I just threw together probably needs some love).
The only objection I can imagine is file size, but somehow, I fear we're past the point of being able to complain. I fully assume the creeping featuritis since ASDF 1. wc stats are as follows: 4534 19011 200127 asdf.lisp 597 2138 21861 asdf-bundle.lisp 5131 21149 221988 total So the increase is a bit under 11% increase in character file size.
I'll give a few days for people to issue objections, and if none is raised, I'll go ahead with the merge some time next week, after hopefully testing on more implementations. Hopefully, I will add some tests to the ASDF test suite.
On Mon, Dec 3, 2012 at 4:41 AM, Faré fahree@gmail.com wrote:
(defsystem :my-library :class :precompiled-system :fasl #p"/path/to/my-library.system.fasl") The fasl argument can be a logical pathname or an expression that will be evaluated later.
Thanks! Basically it works the same that we already had, but for all implementations, am I right? What I mean is, do I need to change anything in ECL?
Juanjo
I merged asdf-bundle into asdf 2.26.7.
On Mon, Dec 3, 2012 at 3:58 AM, Juan Jose Garcia-Ripoll juanjose.garciaripoll@gmail.com wrote:
Thanks! Basically it works the same that we already had, but for all implementations, am I right? What I mean is, do I need to change anything in ECL?
Yes, load-fasl-op will work on all active implementations instead of just ECL. Other bundle operations haven't been tested. Prologue and epilogue features are only available with ECL at this point.
For ECL, you just have to stop compiling and linking separate files for asdf-bundle (née asdf-ecl) — it's all in one place.
Which brings me to my next question: SCL is planning to bundle its variant of asdf-encodings with its asdf. Shall I similarly just merge asdf-encoding into asdf? Once again, it's about 20KiB more.
Finally, I'm tired of dependent systems not being recompiled when a dependency has changed. I intend to modify this behavior. If anyone really wants the old behavior, tell me, I'll add a flag to restore the old (buggy) behavior if it's set.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org "Don't take me, don't tax thee, tax the fellow behind the tree." — Senator Russell B. Long, chair of the Senate Finance Committee, summarizing the principle of "tax reform" legislation.