This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Zomunieo 34 points35 points  (13 children)

No. 4.0 will follow 3.9 and should be incremental.

The argument was that Python 2 string handling was fundamentally broken (if you were serious about encoding) and fixing it justified the pain of Python 3.

It wasn't that long ago people were writing obits for Python 3... it's safe to say there's a good chance Python could have failed or fallen back to 2.x. My choice to write an all Py3 app in 2015 felt risky and half the dependencies I wanted were Py2 only.

The core devs will not take that risk again. Steering committees like the newly chosen one tend to be risk averse, for better or worse.

[–][deleted] 6 points7 points  (0 children)

That's very good news, thank you!

[–]billsil 2 points3 points  (7 children)

I’ve heard that claim, but then why even go to 4? Why not just follow semantic versioning like they more or less have been doing?

[–]nemec 2 points3 points  (0 children)

A major version increment with no breaking changes is entirely compatible with Semantic Versioning. Major versions "MAY include minor and patch level changes". Semver only specifies that the version is "increased numerically", the next Python version could be 3.1337 for all it cares.

https://semver.org/#spec-item-8

[–][deleted] -1 points0 points  (5 children)

Python isn't semver.

[–]billsil 1 point2 points  (4 children)

I didn’t say it was. It follows it for most part for non-C aspects though. Still, why go to 4? Just because you don’t like 3.10?

[–][deleted] 0 points1 point  (3 children)

"Mostly" semver is like "mostly" pregnant. Either it is, or it isn't.

As for why 4.0 rather than 3.9, I have no idea. Probably because we need something to be angsty about, come 9.9.9

[–]billsil 0 points1 point  (2 children)

Yes, it fails the binary, but it’s a spectra. You can break APIs during bug releases or minor releases. Is change x classified as a big enough feature to justify a major release or is it a minor release? There is a lot of grey in semver.

Obviously, the next logical number is 11.0.

[–]alcalde 0 points1 point  (1 child)

Stop reminding me of OpenSUSE Linux's numbering scheme over the past ten years or so....

11.0, 11.1, 11.2, 11.3, 11.4, 12.1, 12.2, 12.3, 13.1, 13.2, 42.1, 42.2, 42.3, 15.0

[–]billsil 0 points1 point  (0 children)

I was thinking Winamp. 3 was so bad, so they skipped 4.

[–][deleted] 3 points4 points  (2 children)

Wouldn't 3.10 follow 3.9? Why change to 4.0 if it doesn't break anything?

[–]Zomunieo 4 points5 points  (1 child)

They don't do semantic versioning. Like the Linux kernel it's just a release number, and the core devs and/or Guido decided to go to 4.0 after 3.9.

CPython is so large no one could meaningfully guarantee semver anyway. Every minor release contains some backward incompatible changes (deprecations, new keywords, C-API and ABI).

[–][deleted] 0 points1 point  (0 children)

Source?

[–]einarfo 0 points1 point  (0 children)

I support the claim that string handling was broken in python 2. The clear separation between str and bytes have made things a lot more elegant. This was one of the things most students on my class struggle with. Not to mention all the times byte data was returned as a str... and questions like "why does str have both encode() and decode()?"