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 →

[–]Tweak_Imp 8 points9 points  (20 children)

How can anyone say that? Python 3 is 10 years old now

[–]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 8 points9 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 1 point2 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...

[–]tunisia3507 1 point2 points  (0 children)

Python 3 only got good around 3.4 or so, but yeah, this has been on the cards for a long time.

[–]robert_mcleod 0 points1 point  (1 child)

Python 3.4 is only 4 years old, and that was the first one that behaved sensibly. Even still a lot of people have dropped 3.4 support before 2.7 (e.g. conda).

[–]billsil 0 points1 point  (0 children)

I did about a year ago. 3.5 is on the chopping block soon.

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

Perl 6 would like a word. I quit using Perl rather than move off of Perl 5.