One thing I'm wondering is: for the ordinary ASDF user (as opposed to, e.g., ITA), is the caching a net win? It certainly complicates the behavior and makes it history-dependent.
Fare, when you were building this, did you get a sense of how big the search space had to be before caching made a significant difference?
What would happen if this caching was off by default, and we put it on only when detecting a large search space?
I'd like to get a better sense that the proposed patch represents a principled solution to the stale cache issue, rather than a one-off fix for a particular problem.
E.g., what happens if we have a missing-dependency-of-version error and our solution is to install system foo v 1.1 to replace system foo v. 1.0 and the pathname now is foo-1.1? Now we have a stale cache for a return value that's not NIL.
I don't think we can simply clear the cache for the missing system, either, can we? I.e., we might find that in order to install FOO, we also install BAR and BAZ.
One thing I'm wondering is: for the ordinary ASDF user (as opposed to, e.g., ITA), is the caching a net win? It certainly complicates the behavior and makes it history-dependent.
Fare, when you were building this, did you get a sense of how big the search space had to be before caching made a significant difference?
What would happen if this caching was off by default, and we put it on only when detecting a large search space?
I'd like to get a better sense that the proposed patch represents a principled solution to the stale cache issue, rather than a one-off fix for a particular problem.
E.g., what happens if we have a missing- dependency- of-version error and our solution is to install system foo v 1.1 to replace system foo v. 1.0 and the pathname now is foo-1.1? Now we have a stale cache for a return value that's not NIL.
I don't think we can simply clear the cache for the missing system, either, can we? I.e., we might find that in order to install FOO, we also install BAR and BAZ.