On 6/29/10 Jun 29 -4:47 PM, Faré wrote:
On 29 June 2010 16:31, Robert Goldman rpgoldman@sift.info wrote:
Here I think I disagree with Fare. I think a build tool needs to "know" when dependencies are broken, and having it try to blindly load systems that are named the same, but that are of the wrong version, seems deeply undesirable to me.
I don't think we really disagree all that much. It's good that ASDF should check that systems being used are indeed compatible. But it doesn't and shouldn't try to resolve compatibility constraints amongst a pool of available systems. It picks the one and only configured system with a given name and checks that it's indeed the expected version. If the constraint language is made richer, it will be nice if ASDF can keep doing checking. But I think it's a very bad design to ever try to add the constraint resolution in ASDF itself.
Yes, in that case, I think we DO agree. I don't think that one can do much constraint resolution in ASDF proper, because you don't know whether you are about to load some other system that requires a different version.
Well, I suppose one could do this, and then fail if you have a version conflict, but I doubt it's really worth the trouble, because to choose the optimal version of some library X, you would have to be able to look ahead into the future and guess the full set of future loads that might exert version constraints upon library X. I find it hard to believe that one can effectively solve this problem, or that it is worth the trouble. I would bet that a low-tech solution like ours, in which one manages different sets of asdf:*central-registry* values (I think your configuration files do this; our earlier solution does it by a find-like search for asd files over sets of directories), where the programmer chooses sets of library locations, and ASDF just checks for consistency, is more feasible.
As an aside: In my fantasy world, we have something like Ron Garrett's lexically scoped packages, thus allowing systems X and Y to coexist, even if they need conflicting versions of library Z. But that's a fantasy. I don't see any prospect of getting from the CL I use today to that world...
cheers, r