Faré wrote:
I contend that the provider system, not the consumer system, should specify whether it's using semantic versioning or not.
With my proposed :backward-compatible-to keyword, you would specify: (defsystem floyd-warshall :version "2.1.4" :backward-compatible-to "2.0" ...)
Alternatively, it could specify a function to compare versions: (defsystem floyd-warshall :version "2.1.4" :version-satisfies 'uiop:version-compatible-p)
The latter alternative has the advantage that people can specify version schemes different from dot-separated integers, if they want (in which case parse-defsystem should have some checks relaxed).
I'll tell you honestly, even though I like semantic versioning, I will never do this. It's just too burdensome to track whether version intervals preserver API compatibility.
I can just barely manage to think about bumping a major version number when I know I'm breaking or going to break the API, but anything more is asking too much of the library supplier.
Indeed, given the number of ASDF systems in the wild that have no version number at all, even bumping the major version number seems to be asking a lot! So I'm not interested in adding support for :backward-compatible-to.
I like the :version-satisfies option, though...