Right now we have a situation in which load-source-op is a second class citizen, rarely used, and for which nobody provides explicit dependencies. More precisely<br><br>* Some compilers out there are just efficient compiling and loading source files. The operation is the same.<br>
* LOAD-OP can be viewed as a slightly more efficient version of an operation that loads sources.<br>* Some users out there do not like compile-before-load procedure.<br>* ASDF makes no promise that load-source-op will behave similarly as load-op.<br>
* Users define methods for load-op and not for load-source-op.<br>* In practice the dependencies *must* be the same, for the philosophy of CL is that compiled and not compiled files behave similarly.<br>* The only differences should be enforced to lay just in the compilation process.<br>
<br clear="all">I attach a patch which merges both operations, leaving a trace of compatibility.<br><br>* There is only one class, LOAD-OP.<br>* The class has the promise that it will use the same dependencies when loading sources and binaries.<br>
* When imposing that one does compile the source before, the class issues an additional dependency on a compile-op, which may pull additional dependencies itself.<br>* A global flag, *compile-before-loading* determines the overall behavior<br>
* A new function ASDF:LOAD-SOURCE-SYSTEM forces no compilation<br>* The function LOAD-SYSTEM gets a flag, :compile that sets *compile-before-loading*<br>* With these changes it is easy to get a sorted list of the components that make up a program. Furthermore, this list is guaranteed to work because we are using the same operation that we will use to load the files.<br>
<br>(pprint<br> (loop with asdf::*compile-before-loading* = nil<br> for (op . component)<br> in (asdf::traverse (make-instance 'load-op)<br> (find-system "chunga"))<br> collect (list (type-of op) (type-of component)<br>
(asdf::component-name component))))<br><br>* With this mechanism I can reimplement the fasl concatenation mechanism *without* using classes at all. Same goes for ECL's extensions.<br><br>The patch is still not fully tested, but I submit it for discussion, so that ugly corners can be polished.<br>
<br>Juanjo<br><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://tream.dreamhosters.com">http://tream.dreamhosters.com</a><br>