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 by 0.61
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?
Cheers, r