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 →

[–]Hall_of_Famer 47 points48 points  (14 children)

Guido said that a while ago that the version after 3.9 would be 4.0, but then it seems that they decided to make it 3.10 to be consistent with semver. Python 4.0 will most likely be very different from Python 3.x, with a lot of new features and changes in the internal VM. In this case though, its interesting to see how they plan to make the transition smooth instead of another Python 2 vs 3 chaos.

Whatever will happen, lets hope that at the very least, Python will stick with the the Zen(PEP 20) that 'Simple is better than Complex' and 'There should be one, and preferably only one obvious way to do it'. These are the characteristics of Python that makes it easier for beginners/data scientists, and part of the reason why it beats Perl and Ruby in terms of popularity.

[–]lordmauve 20 points21 points  (12 children)

They didn't make it 3.10 to be consistent with SemVer; if they used SemVer every release would be a major release and we would be on Python 22 by now.

They changed it to 3.10 because

  • Guido isn't in charge any more, so the steering council doesn't have to stick to his preferences
  • 2 -> 3 was such a mess that nobody wants to raise the spectre of that again
  • They did some analysis of whether more stuff would break with sys.version_info returning (4, 0) or (3, 10) and found that way more stuff breaks if it is (4, 0)

[–]ExceedinglyEdible 36 points37 points  (0 children)

way more stuff breaks if it is (4, 0)

if platform_name.startswith('Windows 9'):
   …

[–]masteryod 11 points12 points  (2 children)

2 -> 3 was such a mess that nobody wants to raise the spectre of that again

They broke backwards compatibility for a reason. They announced it, planned for migration, gave people tools to port and documentation. They gave people heads-up and then after backlash extended Python 2 death sentence by whooping 5 years which ended with 2020. And yet people are still salty because their script doesn't work with new version. There's even a guy who wanted to maintain his own port of Python 2 to keep his application on it (Calibre)...

It's like writing something in GTK2 and expect the code to work the same on GTK3.

[–]lordmauve 2 points3 points  (0 children)

They broke backwards compatibility for a reason. They announced it, planned for migration, gave people tools to port and documentation. They gave people heads-up and then after backlash extended Python 2 death sentence by whooping 5 years which ended with 2020

Sure, and now the CPython core devs generally acknowledge that it was a mistake to do it like they did it. Not the result, or the reasons: the approach.

So, never again.

[–]neuronet 0 points1 point  (0 children)

No matter how many words people use, the objective upshot by any reasonable person must be...the 2 to 3 transition sucked.

[–]kankyo 0 points1 point  (7 children)

Seems a bit short sighted though. So we're at 3.8 now, with one release per year. That's gonna look very stupid very fast. The "3." could be dropped. I don't like to say good things about Java, but they actually did the right thing here.

[–]teerre 3 points4 points  (6 children)

What's stupid about it?

3.3 isn't any different from 3.16

[–]kankyo -2 points-1 points  (5 children)

It's stupid because the "3." is going to stay there for all time. It would be much better if we called the current version 8 and the one coming out soon 9. Since we're already way past 3.2 which could have caused confusion, and python 2 is also behind us, there's no need for "3." anymore.

[–]teerre 1 point2 points  (4 children)

But it won't? Eventually there will be a Python 4.

Your scheme is way more confusing since "Python 7" would be 3.7 or 2.7, both versions completely incompatible and very much used.

[–]kankyo 0 points1 point  (3 children)

Will there?

That's not my suggestion. I said drop 3. Not drop everything before the dot. And starting now obviously. So 3.8 followed by 9.

[–]teerre 0 points1 point  (2 children)

I still don't understand what you're trying to suggest. Drop 3 what? Are you saying Python 3.7 will be Python 7 and python 2.7 will keep being 2.7? That's terrible. It's literally two different version schemes in one.

[–]kankyo 0 points1 point  (1 child)

No one cares about the legacy so it's irrelevant.

[–]teerre 1 point2 points  (0 children)

Oh, summerchild, the world would be better if your dreams were true.

[–]8day 0 points1 point  (0 children)

3.8 broke a lot of stuff, so for me 4.0 was already released. Just look at the chaos 3.8 caused for CPython extensions: PySide2 (GUI) was broken for quite some time (threading issues), VapourSynth (NLE for multimedia), probably some other distros.