[Python-Dev] Python version numbers

Barry Warsaw barry at python.org
Tue Apr 3 14:17:08 EDT 2018


On Apr 3, 2018, at 05:51, Paul G <paul at ganssle.io> wrote:

> Switching to CalVer is a pretty clear sign that there is now a "rolling backwards compatibility window", and it allows Python to skip right over the mythical "Python 4" and directly to "Python 21". Additionally, since the version number will be trivially predictable, deprecation warnings can actually include the version after which they will be dropped - so if a feature is slated to be removed 5 years after it is initially deprecated, just take the deprecation release version and add 5.

Changing the versioning scheme is a topic that comes up every now and then, and I think it’s worth exploring, but I also don’t think we should do anything about it until the EOL of Python 2.7 at the earliest (if ever).

That said, and assuming we keep the current scheme, I think there’s a natural place to label “Python 4” - we have to break the C API to get rid of the GIL and/or adopt GC over refcounting, or something of that nature.  I think there is no interest or appetite for a Python source level breaking change like 2->3, so I wouldn’t expect anything more than the usual changes at the Python source level for 3.x->4.  Of course, you’d like to mitigate the breakage of extension modules as much as possible, but should that be unavoidable, then it would warrant a first digit version bump.

OTOH, some calver-like scheme would be interesting too if we shorten the release cycle.  Could we release a new Python version every 12 months instead of 18?  Can we adopt a time-based release policy, so that whatever gets in, gets in, and the rest has to wait until the next release?  That’s certainly more painful when that wait is 18 months rather than something shorter.  But if releases come more quickly, that has implications for the deprecation policy too.  And it puts pressure on the second digit because something like Python 3.53 is distasteful (especially because it would be easily confused with 3.5.3).  Python 21.12 anyone? :)

Cheers,
-Barry

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Message signed with OpenPGP
URL: <http://mail.python.org/pipermail/python-dev/attachments/20180403/fa0e0213/attachment.sig>


More information about the Python-Dev mailing list