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

Stelian Ionescu sionescu at cddr.org
Thu Nov 21 12:28:30 UTC 2013

On Thu, 2013-11-21 at 00:36 -0500, Daniel Herring wrote:
> FWIW, my little "read-macros" package demonstrated some functionality to 
> simplify writing read-time conditional code without pushing everything on 
> *features*.
> http://git.tentpost.com/?p=lisp/read-macros.git


> Back on-topic, semantic versioning systems such as advocated by GNU 
> libtool try to provide a conservative estimate on portability.

libtool combines the notions of API and ABI compatibility. We have it a
bit easier.

> On Tue, 19 Nov 2013, Anton Vodonosov wrote:
> > But my point - it's not enough to just bump major
> > version number, as semantic versioning suggests.
> >
> > If author of "somelib" library wants to make an API incompatible
> > change, it is better to release new ASDF system "somelib2"
> > and put code into new package somelib2.
> This concept resonates with me.  The existence of a new API version should 
> not preclude further releases of older API versions.

In practice nobody is going to take the time to maintain older versions
except for a handful of very popular projects, and even in that case
there will be significant social and economic pressure into avoiding
divergence and waste of resources.

> Towards this end, I had started investigating a set of macros and/or 
> features to simplify the process of embedding version information directly 
> into the CL package names themselves.  Unfortunately, I didn't find any 
> clean solution that met my goals.  Here are a couple emails on the 
> subject.
> http://article.gmane.org/gmane.lisp.libcl.devel/110
> http://article.gmane.org/gmane.lisp.libcl.devel/123
> [Note: LibCL and its mailing lists are now defunct.]

Some interesting ideas there.

> All that said, semantic versioning is tried and true, easy to implement, 
> and a useful improvement on the current ASDF status quo.  Other approaches 
> such as behavior testing and nonlinear are harder to implement and should 
> play nicely with a semantic versioning system.  Thus I am all in favor 
> with ASDF adopting a reasonable semantic system today.

I agree.

> Whatever we do, please implement an escape hatch for the end user to 
> override the versioning system's idea of compatibility.  These things 
> often have obscure failure modes and/or prevent nuanced usage.  Just like 
> CL::internal symbols, it is nice to have a straightforward way to void the 
> warranty and bypass the normal safety mechanisms.

I agree.

Stelian Ionescu a.k.a. fe[nl]ix
Quidquid latine dictum sit, altum videtur.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20131121/6d907d3e/attachment.sig>

More information about the asdf-devel mailing list