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=/