[asdf-devel] has ":depends-on ((:version ...))" semantics changed?
Robert P. Goldman
rpgoldman at sift.info
Mon Nov 18 02:01:21 UTC 2013
Anton Vodonosov wrote:
> So, my question is: how :depends-on ((:version ...))
> should work, and is the change in the behavior intentional?
There are two different version requirements.
:version is supposed to be "this is the version I need." It treats
changes in the highest version component as API-changing modifications
that don't satisfy requirements for mismatching major components.
When we advertise Closer-MOP 1.0.0, we are saying that we have made
changes to the API, so it's different from 0.x. Hence a :VERSION
dependency of 0.55 is not satisfied by 1.0.0, although it IS satisfied
If major changes are going on in a library's API, then they should be
noted by the library developer, and people who use this library have to
think about those changes. This is unavoidable and better than dealing
with versioning systems like where you never know when a library's API
has changed, and your code may break at the slightest version bump.
Actually I think that the code may have changed to be more permissive at
some point. I believe that originally a requirement of, e.g., 0.0.7
would not be satisfied by 0.1.0 (although it would be satisfied by 0.0.9).
The good news is that ASDF's version numbering scheme has a semantics
that can provide useful support to programmers. The bad news is that
not enough people know about this semantics, so it doesn't provide as
much value as it might.
One thing that might make everyone's lives easier would be making the
MISSING-DEPENDENCY-OF-VERSION error a continuable error instead of a
fatal one. What would you think about this?
More information about the asdf-devel