From: Jim Weirich Date: 2005-04-07T08:48:43+09:00 Subject: Re: [ANN] Rant 0.3.2 On Wednesday 06 April 2005 05:44 pm, Lionel Thiry wrote: > > You seem to imply there would be advantages to a more explicit DAG > > implementation. > > Not exactly. SCons main design doc claims its cornerstone is the management > of explicit file dependency DAG. As SCons is one of the source of > inspiration for Rant, I asked if it was based on the same cornerstone. I scanned the Scons web site and googled for DAG. The only references to DAG that I found were referencing the one makefile/universal DAG approach recommended in the "Recursive Make Considered Harmful" article. I too prefer the universal DAG approach and Rake certainly supports that way of doing things. If I missed something, fill me in. > > I would be interested in hearing what you think those > > advantages might be. > > For Rake, the advantages of a Task Dependency Graph (TDG) _might_ be: > 1) better decoupling between inner mechanisms of Rake and its interface, > the Rakefile. It would allow the development of other interfaces. > 2) Easier to play with several TDG at the same time, merge them, split > them, and so on. Probably not doable with Rakefile as there is usually only > one such TDG. > 3) Easier to add multithreaded task execution. > 4) easier to develop event listening (for example: once this target is > build and passed unit tests, send me a mail) > 5) easier to develop error & exception management > 6) probably a lot of other features that I haven't sight of (2) I might grant, but even so I'm considering how to do something very similar to (2) in order to support task suites. As for the others, I'm not convinced it makes a big difference one way or another. > The disadvantages are: > 1) the advantages listed above are mostly suppositions > 2) DAG management code may be heavy > 3) task generation on the fly as the TDG is executed may be delicate to > implement > 4) not sure the concept of rule can be applied easily with a TDG Hmmm ... (3) leads me to suspect you are really talking about marshalling or serializing the DAG into external storage and reloading it. Is that what you are getting at? Or am I still missing the point. As always, thanks for the feedback. -- -- Jim Weirich jim@weirichhouse.org http://onestepback.org ----------------------------------------------------------------- "Beware of bugs in the above code; I have only proved it correct, not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)