![](https://secure.gravatar.com/avatar/da8638bce265a9edbab91dd837042d03.jpg?s=120&d=mm&r=g)
Earlier I claimed that the new ASDF TRAVERSE computed a conservative approximation to what needed to be recompiled. In particular, if we have (defsystem X :depends-on (Y) ....) With the new patch, if we do load-op on X, and Y has changed, X will be recompiled. In Classic ASDF, this would not happen. However, even with the new patch, this does not happen correctly. In particular, this case will not work properly (defsystem X :depends-on (Y) ...) (defsystem Z :depends-on (Y) ...) Let's imagine I load X and Z, which causes me to load Y. Now I modify some of the code of Y and reload X. ASDF will notice the change in Y and trigger a recompilation of X. BUT if I now (asdf:load-system :z), when we check the dependencies of Z and find Y, there will be nothing that needs to be done for Y, so recompilation of Z will /not/ be triggered. So the problem with trying to do a conservative estimation of what needs to be recompiled is that we don't store with a system object information about the state of things upon which it depends, so we cannot detect a change in the state of those dependencies..... Information about the last compilation of a system /is/ available in ASDF, but we don't store with X and Z information about the state of Z when they were compiled. To open YA can of worms, we also don't cache information about systems *across lisp sessions*. But I think I'll just raise that issue and then drop it like a hot potato. Cheers, r