Re: rfc - delay the parsing of system components

Gary King <[email protected]> Sun, 12 Oct 2008 20:08:04 -0400
Newsgroups gmane.lisp.cclan.general
Message-ID <[email protected]>
Hi Richard, et. al.

Thanks for your comments and thoughts.

> In the plan-before-execute design that ASDF's always had, methods that
> implement pieces of the plan construction protocol (OPERATION-DONE-P,
> COMPONENT-DEPENDS-ON, et al.) can rely on being executed before any
> steps are carried out in the current run.

This is true but I have my doubts that it will matter. Methods like  
COMPONENT-DEPENDS-ON shouldn't really have anything to do with the  
environment (either X depends on Y or it doesn't). Methods like  
operation-done-p should depend on a component and its children (not  
its parents) and thus would not be altered by the proposed change.

> The idiomatic solution for this is to load ASDF extensions in an
> EVAL-WHEN at the beginning of a .asd file.  But maybe what you're  
> after
> is representing the fact that system FOO needs ASDF extension BAR,  
> which
> isn't explicit with the EVAL-WHEN solution.  If that's what you  
> need, it
> might suffice to add a slot for this to SYSTEM and to modify
> PARSE-COMPONENT-FORM to hoist out the slot's initarg and do the LOAD- 
> OP
> on those extensions before looping over the components.

It's true that my proposal isn't required to make ASDF jump through  
the hoops I want it to. IMHO, the eval-when solution is ugly and while  
adding another slot is alright, it seems to me that I should be able  
to use operations and components and such defined by a system's  
dependencies. I.e., that what I'm proposing is the way things should  
be. Obviously, reasonable people can disagree!

> I think #2 is an at-least-in-theory incompatible change.  It might not
> break anything in the wild, but that can't be known in advance.  It
> might also lead to a better defsystem than ASDF, but I'm not sure that
> ASDF should be breaking compatibility with itself at this point.

Hmmm, evolve or die <smile>. There is always more code to write in the  
future than has been written in the past. This proposed change makes  
ASDF simpler in a few ways and, arguably, a bit easier to understand.  
It also allows for restarts like "recompile module 'foo'" or  
"recompile system 'bar'" that the plan-before-execute design makes  
very difficult (because the plan more or less obliterates the  
dependency structure).

There is still more cleanup to do but I think I'll post the source  
somewhere that people can download and try and see if it breaks  
anything. So far, the changed version is liking all the systems I've  
tossed its way.

thanks again,
--
Gary Warren King, metabang.com
Cell: (413) 559 8738
Fax: (206) 338-4052
gwkkwg on Skype * garethsan on AIM





-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/