On Thu, Apr 15, 2010 at 10:40 PM, james anderson james.anderson@setf.dewrote:
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