On 3/17/10 Mar 17 -3:58 AM, Juan Jose Garcia-Ripoll wrote: > Before, if an operation defined by me, such as LIB-OP, did not traverse > a system, then the only operation we got was that operation applied on > the system, as a generic object. > > Now TRAVERSE not only imposes the LIB-OP operation on the system, but it > also scans the components and imposes the operation on the components. > > Why such an incompatible change? It definitely screwed up ALL of ECL's > extensions.
TRAVERSE was modified in order to fix the problem of intra-system dependencies from modules. Previously, if you had a system with module A and file B, with A depending on B, and modified B, then did a compile-op or load-op, none of A's components would be recompiled. This was clearly a bug. I'm sorry about the incompatible change, but I think you were relying on what must have been a bug. TRAVERSE was ALWAYS supposed to apply the methods for children when an operation was applied to the parent. I have a hazy recollection that there used to be a catch-all PERFORM that was a no-op to make extending the protocol simpler, but I don't see one in asdf.lisp now (there is one for TEST-OP). I don't know how to wrestle git into letting me know if this is a faulty memory on my part, or whether there was such a method definition and it has been removed. Anyone know how to check? Best, r _______________________________________________ asdf-devel mailing list [email protected] http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel
