[asdf-devel] Two questions

Faré fahree at gmail.com
Wed Sep 30 10:49:32 UTC 2009

2009/9/30 Nick Levine <ndl at ravenbrook.com>:
>   Maybe what you want is #+frob (:file "foo")
> Ideally not, as you'd have to remember to reload all your .asd files
> every time you messed with features.
> If this isn't what :feature does, then what is it for?
I had never heard of it before. Looks like it's broken by design.

>   You can define your own :around method on output-files, and/or
>   override default methods. See how ASDF-BINARY-LOCATIONS (now part
>   of ASDF 1.366 and later) does it.
> Hmm, that's an improvement. (Otoh writing about a rapidly moving
> target is tricky. Each time I review this it's changed.)
ASDF was a nice hack originally, but is lacking in many ways.
Development has resumed, which is good, but it's not there yet. If you
have feature requests, please present them.

>   Note that with XCVB, you can :depends-on (:when (:featurep :frob)
>   "foo") and you can xcvb --object-directory obj-$(timestamp) ...
> OK. So you still can't say: look for the :frob feature and decide
> whether to include this component?
Uh, that's what (:when (:featurep :frob) ...) does with XCVB, or
#+frob in ASDF. As for reloading a system, you can probably manually
(load "blah.asd") and try to re-operate with ASDF but that is not
completely supported. Actually, re-compiling in general is not
completely supported by the CL standard: changes to the package import
tree, to the signature of generic functions, to the special or
constant nature of variable bindings, to the class definition of
structures being used, etc., are NOT supported and you have to
manually clean things up if you're gonna do this (see the painful
xcvb/no-asdf.lisp); and you also have to make sure the stuff you're
layering on top of CL (compile-time dictionaries, etc.) does support
the redefinitions you're going to make. That, and you have to
recompile all the sites that use your redefined macros or inlined
functions, recursively.

XCVB doesn't currently make at attempt to provide fake support
in-image compilation, beside manually compiling and loading stuff
including C-c C-k at your SLIME debug prompt. Because I think it's a
failed concept in CL (for the reasons above). That said, the public
seems to demand a bug-compatible upgrade path from ASDF, so I'll
eventually give something to the public: it can't be guaranteed to
work, but it just might if you didn't ask too much and you'll
hopefully get an explicit error message if you did.

[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
(labels(({(] &rest [)(apply([
])[))([(>)(elt(]())>))(](<)(do-external-symbols(] :cl)(push ] <))(sort
<`string<`:key`string))(}({ + ^)({`816`1/5)({`688({`875({`398()"~{~A~^
~}"(]())){(+ { +)))({`381)^))(do*(({`5248({`584 }`36063))([`874({`395
{`6))(]`4({`584 {`6))(}`#36RH4G6HUTA1NVC1ZHC({`395 }`36063)))((} [ ]
({`977 ]))({`902)({`381))))

More information about the asdf-devel mailing list