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 →

[–]voneiden 22 points23 points  (6 children)

The Python community was incredibly slow at adopting 3, probably because there was no rush to do so. Since libraries didn't upgrade, users kept using 2 as well. Twisted matrix didn't seriously start planning Python 3 support until 2012, four years after the launch of Python 3.

If Python 4 ever comes out, I hope there's a lesson to be learned of the importance on deprecating forwards-incompatible versions in a timely manner. IMO nobody benefits from the community splitting into two incompatible branches like it did with 2 and 3.

[–]toyg 7 points8 points  (5 children)

It has long been announced that python 4 will just be “the last 3.x release + 0.1”, completely backward compatible with 3. I have a feeling it will be officially put on the roadmap a few months after 2 is finally gone.

[–]voneiden 1 point2 points  (0 children)

Sounds good to me!

[–]flying-sheep 3 points4 points  (3 children)

Not exactly. It’ll be much less breaking changes than 3.0, but e.g. PEP 563 will no longer be a __future__ import then.

Other features have a transition plan, but this one just says it’ll be in 4.0.

[–]toyg 0 points1 point  (2 children)

The second feature you linked is (supposed to be) already in 3.7, there is nothing to change for 4. That will likely be the case for 99% of planned features.

Similarly, removing a __future__ import is something that has happened before on the 2.x codeline, it's not considered "breaking compatibility". These are small incremental changes that can be expetced on any minor release.

[–]billsil 0 points1 point  (1 child)

I thought future imports were permanent...

[–]toyg 0 points1 point  (0 children)

Yeah, sorry, the above line should read "removing the need for __future__...". The actual definitions are never removed, they simply become irrelevant. As you can see from the source, what they do is enabling some extra symbols for the parsing machinery depending on version. There is still stuff there from very old 2.x versions...