Add support for two argument (upper and lower bound constraints) on :VERSION dependencies
Bug #1183179 reported by
Robert P. Goldman
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ASDF |
New
|
Wishlist
|
Robert P. Goldman |
Bug Description
Faré writes:
A future maintainer of ASDF may extend the
`(:version ,dependency ,minimum-version)
pattern for specifying dependencies with a
`(:version ,dependency ,minimum-version ,too-large-version)
pattern that allows to specify an exclusive upper bound on compatible versions.
This would allow finer specification of compatible version ranges than just
a match on the major version. But I didn't implement it.
I leave it as an exercise for whoever volunteers to replace me,
since I'm definitely leaving active maintenance of ASDF
and unwilling to implement new features,
though I will still fix bugs until a new maintainer rises.
To post a comment you must log in.
Following the discussion in asdf-devel today (2013-11-21), I move that this bug be resolved as "Invalid".
Clients should be able to specify an open-ended range with a minimal version, and only that.
Providers should be able to specify also a range with a minimum API compatibility version, and only that — with the current version always being the maximum supported version.
If the client system specifies a minimum version, it means it, and any older version is an error that better occur early than late.
If he specified a maximum version — he shouldn't, and ASDF *must not* provide a means to do that.
Backward compatibility if specified must be specified by the provider system, not the client system, (and then defsystem should have a :backward- compatible- to keyword argument). And if the provider system declares that it doesn't support
compatibility with the old API — it means it, too.
If somehow things are actually compatible, then either system has to be modified indeed, and/or you should be pulling newer more compatible versions, anyway. If what you really want is a fork of an old system, then use a fork of an old system, with its own name, e.g. "hunchentoot-0.13". If you're using extreme ways of being compatible with a wider range of versions of a system than expressible through ASDF version constraints, then don't use ASDF version constraints and stick to your extreme ways.
I also vote against "semantic versioning" as a meaningful thing for Common Lisp code. It's a great notion for the binary release of C dynamic libraries that just doesn't mean anything for Lisp source (or even fasl) releases.