Subject: bug#48404: 28.0.50; "Invalid version syntax" errors with read-extended-command

From: Eli Zaretskii <[email-masked]>
Date: Sun, 16 May 2021 17:27:19 +0300

> From: Lars Ingebrigtsen <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Sun, 16 May 2021 16:06:03 +0200
> 
> > But this comes with a heavy price: commands from any package that is
> > not bundled with Emacs will not be able to take advantage of this
> > feature, ever.  Is it worth punishing those packages' users to have a
> > softer transition?  Given our conservative approach to obsoleting
> > stuff, I'm not sure.
> 
> I'm not quite sure I understand you here?  If the version can't be
> parsed, then the command will still show up in `M-x TAB', which means
> that the obsoletion of these commands is very soft indeed.

For obsolete commands from 3rd-party packages, which state something
like "Magit 3.0" in the version since which they are obsolete, the
obsolescence will never happen, in the sense that they will _always_
appear in "M-x TAB", even 100 years from now.  Is that what we want?

> But I'm wondering whether `version-to-list' should be more lax here.
> That is, currently it'll barf of things like:
> 
> (version-to-list "28.1 Magit/2.5")

I'm not sure it's possible without introducing ambiguity into the
version string and complicating comparison of versions.  We already
support some non-numeric versions, and that's not easy.

> It might make sense to allow the obsoletion versions to refer to both an
> (approximate) Emacs version, as well as a package version.

How can this be done, even in principle?  Versions of unbundled
packages are unrelated to Emacs versions; typically, a given version
of an unbundled package supports quite a few Emacs versions.  So what
Emacs version will you put there?