[asdf-devel] In defense of ASDF & Semantic versioning

Faré fahree at gmail.com
Thu Nov 21 16:29:32 UTC 2013

> I'm going to take that as a vote to implement a continuation restart for
> version mismatch errors.  [Yes, I'm grasping at straws! ;-)]
I vote NO to that.

If the client system specifies a minimum version, it means it,
and any older version is an error that better occur early than late.
If he specified a maximum version — he shouldn't,
and ASDF *must not* provide a means to do that
(and so after all I vote lp#1183179 be resolved as "Invalid").
Backward compatibility if specified
must be specified by the provider system, not the client system,
(and then defsystem should have a :backward-compatible-to keyword argument).
And if the provider system declares that it doesn't support
compatibility with the old API
— it means it, too.
If somehow things are actually compatible, then either system has to
be modified indeed,
and/or you should be pulling newer more compatible versions, anyway.
If what you really want is a fork of an old system, then use a fork of
an old system,
with its own name, e.g. "hunchentoot-0.13".
If you're using extreme ways of being compatible with
a wider range of versions of a system than expressible through ASDF
version constraints,
then don't use ASDF version constraints and stick to your extreme ways.

I also vote against "semantic versioning" as a meaningful thing for
Common Lisp code.
It's a great notion for the binary release of C dynamic libraries
that just doesn't mean anything for Lisp source (or even fasl) releases.

Clients should be able to specify an open-ended range with a minimal
version, and only that.
Providers should be able to specify also a range with a minimum API
compatibility version,
and only that — with the current version always being the maximum
supported version.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
A tautology is a thing which is tautological.

More information about the asdf-devel mailing list