On 10 February 2010 00:28, Robert Goldman <[email protected]> wrote: > I believe my first ASDF patch had a minor buglet that could cause > over-compilation. > > Here's the deal: when new TRAVERSE detects that the components of a > module need to have an operation performed on them, it binds a dynamic > variable and calls itself on the components of the module. The dynamic > variable forces the components to be done even when they satisfy > operation-done-p. This has an effect equivalent to propagating the > module's dependencies onto the children. > > However, this also means that the dynamic variable is in place when we > call TRAVERSE recursively on the dependencies recorded on the children, > then those dependencies are forced to happen as well. > > In /theory/ this could cause over-compilation, over-loading, etc. > However, I cannot come up with a test case where this will /actually/ > occur. Why is that? It's because components of modules cannot "reach > out" of the containing module to depend on anything in their > surroundings. E.g. if I have a module FOO, then components of FOO can > record dependencies only onto other components of FOO. This is a > consequence of how name resolution works in ASDF. > > So I have what I think is a fix for performing unnecessary operations in > ASDF, but I cannot figure out a way to craft a test case where > unnecessary operations could actually occur. > > I feel like I should put the patch in anyway, in case we change the > rules on name-lookup in ASDF, but this feels wrong. > > Any suggestions? Have I missed something? Is there any way, for > example, a component of FOO could depend on an outside system? I don't > believe that this is possible, but I could be wrong. > Can't you work around the name resolution by using a defmethod? Say, have a component type :foo-file that depends on system :foo? (Note that this case is rather artificial; in practice, you'd have your .asd do a load-op of foo).
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] Does artillery violate the natural rights of the target? I would say: the entire *purpose* of artillery is to violate the natural rights of the target. _______________________________________________ asdf-devel mailing list [email protected] http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel
