Hi,
in general, I don't like the way ASDF tries to force you to comply with its own design choices and policy. This is especially true for component versioning. ASDF complains that it doesn't like my version numbers (which, in fact, are not only numbers ;-), but I'm not ready to give up on them. They're much more informative than ASDF's simplistic 1.2.3.
It seems that the only place ASDF uses our version numbers is in VERSION-SATISFIES. There is also a VERSION-COMPATIBLE-P somewhere, but it doesn't seem to be used. Fortunately, VERSION-SATISFIES is a generic function, so I'm thinking I could work around it.
Not tested yet: 1. (defclass my-system-subclass (system) ()) 2. (defsystem :foo.bar.baz :class 'my-system-subclass #|...|#) 3. (defmethod version-satisfies ((c my-system-subclass) version) #|my own version handling code|#)
Thoughts ? Will this be enough to satisfy ASDF ?
In an ideal world, the whole versioning API (version-satisfies, version< etc.) should have been implemented as proper component-based protocols...