On Thu, Apr 15, 2010 at 10:40 PM, james anderson <james.anderson@setf.de> wrote:

On 2010-04-15, at 22:26 , Juan Jose Garcia-Ripoll wrote:

> Who uses it?

depends on what one means by "uses it"? the value in the respective
slot is more-or-less central to the dependency computation and is
initialized in the instantiation process[1]. once it plays that role,
is there any reason to not place the initarg in the interface?

The current implementation can be done without :in-order-to, and I think Fare also has that in mind.

Personally I also find another reason to make the under-the-hoods algorithm not rely on in-order-to, and it is the following one.

The most valuable information ASDF has is the list of dependencies which would allow one to do a topologically sorted list of components to be loaded. By loaded I do not mean compiled and loaded but just loaded, assuming everything had been already compiled.

Currently we can not get this graph because every LOAD-OP produces a COMPILE-OP which may itself trigger a LOAD-OP of other component. LOAD-SRC-OP currently does not work to get an equivalent graph because it is not available for all components and because not all libraries take it into account in :in-order-to. ASDF also does not take it itself into account in the automated dependencies.

So, I would say, in order to produce that beautiful and useful list: 1) provide another mean to have a test-op (perhaps a :test-system option?), 2) remove :in-order-to, 3) implement a kind of "force-all" option to TRAVERSE which makes it behave as if nothing was loaded before and either a) fix LOAD-SRC-OP and rely on it or b) provide a means to temporarily deactivate the triggering LOAD-OP -> COMPILE-OP. With this we can use TRAVERSE to get the sorted graph.

Finally, note that removing :in-order-to does not mean having serial order, for we still have the other ways to express dependencies.

Juanjo

--
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://tream.dreamhosters.com