rfc - delay the parsing of system components

Gary King <[email protected]> Wed, 8 Oct 2008 10:12:00 -0400
Newsgroups gmane.lisp.cclan.general
Message-ID <[email protected]>
I just finished a rough cut of an ASDF overall that makes three  
largish changes:

1. delays the parsing of system components until needed by traverse.  
In particular, this means that the :components clause of defsystem  
form happens after that system's dependencies have been loaded rather  
than when the ASD file itself is loaded.

2. rewrites traverse as a set of methods that immediately call perform  
(rather than building up a list of perform actions that  are then  
called in operate).

3. does away with :do-first and moves what it did into :in-order-to

The main motivation for change #1 is to be able to define new  
operations and source file classes in a system's dependencies and have  
them used in that systems definitions; the main motivation#2 was #1:  
it does no good to delay parsing of the defsystem form if traverse has  
to complete the parse before anything else happens!. As for #3, while  
doing three things at once is just very human (and besides, it made #2  
easier).

I've got several hours of work left cleaning up loose ends and moving  
restarts and with-compilation-units around into better places.

What I'd appreciate is any high-level feedback about the idea of these  
changes and whether or not I've missed some horrible interaction that  
nullifies the whole direction. I hope to post the suggested changes  
later in the week.

Until then, happy coding.
--
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=/