[asdf-devel] Proposal for improved support for versions of systems

Robert Goldman rpgoldman at sift.info
Tue Jun 29 21:59:53 UTC 2010

On 6/29/10 Jun 29 -4:47 PM, Faré wrote:
> On 29 June 2010 16:31, Robert Goldman <rpgoldman at 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...


More information about the asdf-devel mailing list