Versioning
Robert Goldman
rpgoldman at sift.info
Wed Nov 17 21:55:49 UTC 2021
On 17 Nov 2021, at 15:12, Eric Timmons wrote:
> On 11/17/21 2:38 PM, Robert Goldman wrote:
>> On 17 Nov 2021, at 13:31, Robert Dodier wrote:
>>
>> On Wed, Nov 17, 2021 at 10:45 AM Robert Goldman
>> rpgoldman at sift.info
>> <mailto:rpgoldman at sift.info> wrote:
>>
>> I favor something like this because it would be nice to have
>> prerelease versions of ASDF that perform version checks
>> properly.
>>
>> What I mean is, if we are going to add a feature in version
>> 3.4,
>> right now that would be in a prerelease version with a
>> version
>> number of something like 3.3.5.22
>>
>> It would be a lot better for realistic testing if we could
>> instead use 3.4.0-alpha1 or 3.4.0-1 and have ASDF know that
>> 3.4.0-1 comes before 3.4.0, not after.
>>
>> Hi Robert, hi everyone. I haven't been following closely, but
>> while
>> you are working out details, let me just mention that I recommend
>> against version numbers that require special interpretation to
>> discover their ordering, e.g. 3.4.0-1 < 3.4.0.
>>
>> Mostly I'm just thinking that somebody's not going to get the
>> memo
>> (it's usually me).
>>
>> For what it's worth, and all the best.
>>
>> I guess that would be an argument for using something more obvious
>> than |-|, like the string |alpha| so |3.4.0-alpha1| or |3.4.0alpha1|
>> instead of |3.4.0-1| since there the meaning should be relatively
>> obvious.
>>
>> My feeling is that if a user misinterprets |3.4.0-1|, then shame on
>> me. But if a user misinterprets |3.4.0alpha1| then shame on them.
>>
>> I'm not sure how that would align with semver...
>
> Erik already sent out some examples of ordering with semver. But it is
> worth noting that 3.4.0-1 *is* valid semver and the ordering would be
> 3.4.0-1 < 3.4.0-alpha
>
> So to prevent misinterpretation of 3.4.0-1, ASDF could either promise
> to always use something like alpha/beta/etc, use something else like
> PEP440 (I believe that grammar always requires an alphabetic character
> for pre-releases), or bake its own grammar.
>
> One thing that's nice about the semver grammar is its flexibility. I
> have some scripts that can generate a version string from a git repo
> that lets you easily order versions based on things like when they
> branched off the default branch. But if we want ASDF to disallow
> things like 3.4.0-1, I'm happy to build my own system that uses the
> new API to allow the use of semver strings.
>
> Another option is to choose something compatible with Debian's version
> strings. I'm having a little trouble grokking it at the moment, but it
> seems to be even more freeform than semver and adds an optional epoch
> prefix.
What might be nice would be to support a *subset* of semver by default
-- not allowing the numerical prerelease flagged with `-` -- but do so
in a way that is extensible.
Here's my rationale: I would like to provide a relatively simple
semantic versioning that is also compatible with automatically detecting
and rejecting ill-formed version strings.
So, for example, we could (by default!) split the version strings by
`#\.` and `#\-` and *reject* any string bounded by `#\.` that is not
numerical.
We could demand, again by default, that the substring following the
`#\-` be of some constrained form: e.g., Greek letter name followed by
optional numeral. For that matter, we could just say "hey, alpha and
beta are enough" and reject anything but those two. That would be a
nice alternative to having a big table of Greek letter names in ASDF!
Finally, for those who want to really go for it, we could add a
`:version-scheme` keyword to `defsystem`, which would initially default
to `:unconstrained`, but then through the standard process of warning
and then erroring, migrate to `:standard` (or perhaps `:asdf`) as the
default, but let anyone who wants to make up their own versioning
scheme. `semver` would be an obvious extension.
Hm. That's a bit more complex than I had hoped, but it would mean ASDF
systems would initially continue to work, it provides for some error
checking, and a path to extension.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20211117/c0566f8d/attachment-0001.html>
More information about the asdf-devel
mailing list