On 10 February 2010 18:27, Robert Goldman rpgoldman@sift.info wrote:
OK, I have just pushed an alternative solution to the module dependency bug, this one (I believe) only triggered by INTRA-system dependencies. This one is also on the module-depends branch.
A test! This requires a test case in the test suite (and not a suit in the suitcase).
This was achieved, as I said, at the cost of some hair, but I believe it does the right thing to the extent that I understand the right thing, and thinking about James's email convinced me that I /don't/ understand what is the right thing with respect to inter-system dependencies.
I think you do understand the right thing, and that James is wrong to want ASDF to somehow DWIM. If you want to distinguish in code into parts that are depended on and parts that are not, then split your code into two systems. System foo-interface provides the interface, with packages, macros, specials, types, classes, gfs, and anything that matters at compile-time. System foo-implementation provides the implementation, with everything else. Clients depend on foo-interface and get recompiled if the interface changes. The overall system depends on interface AND implementation.
In other words, on top of a system that does the Right Thing(tm), i.e. invalidate dependencies recursively, you can do whatever you want, though it may take some effort. On top of a broken system, you always and forever have something broken.
Somewhat disappointingly, this commit agrees with the last one on the tests, which indicates that the tests need to be augmented...
Additional reviews very welcome as are test results!
No time for that right now. Hopefully tomorrow.
[Fare: is your XCVB going to handle the kinds of inter-system issues I raised in my earlier email?]
XCVB does the Right Thing of correctly invalidating any object any dependencies of which has changed. On top of that, you can do whatever you want.
Feeling like Richard III, I can only say "A spec! A spec! My kingdom for a spec!"
I think ASDF should, like XCVB, do the Right Thing, which is obvious: a dependency is a dependency. Just like any build system on earth does. Just because legacy ASDF is broken doesn't mean it should remain so. Incremental builds are broken with ASDF, and that's a shame.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] There is no excuse for a programming language without clean formal semantics. For even if your language is not designed for formal reasoning by computers, there will still be humans who'll have to reason about programs.