Hacker News new | comments | ask | show | jobs | submit login

Python 3 is a case study on how you should never create a new version of a language implementation that can't load and interface with code written for the old version.

After almost 10 years, the old version is still in use, and the new version isn't even that much better.




I don't know. The introduction of Python 3 caused massive headaches and fractured communities, but the alternative of dealing with unattractive warts in a language until eternity is also not very attractive.

I quite like Python 3, and most of the backward-incompatible changes it introduced.


but the alternative of dealing with unattractive warts in a language until eternity is also not very attractive.

The problem is that the only significant wart that got fixed was Unicode. We still have the GIL, a very slow runtime, convoluted packaging, barely-usable lambdas, and limited typing. That's a pretty lousy payoff for 10 years and probably millions of engineer-hours.


The people who work on CPython were not trying to "fix" any of the things you listed in Python 3. They seem happy with the GIL and the tradeoffs they've made in the runtime. Guido has never liked lambdas and their poor state in Python is not an accident.

Python might be making bad calls, but it's hard to criticized a process for failing to accomplish things it wasn't trying to accomplish.


Python 2 is still in active use, but Python 3 has come a long way and gotten a lot better since it first came out in 2008.


If py3 never happened, then py2 would have also have evolved at an equal pace. Nobody can accurately calculate missed opportunity cost, but "almost there, everyone please use py3 now, its not a problem anymore" after 10 years is as high as it gets.


Yup. And the developers learned their lesson and aren't going to do it again. https://www.curiousefficiency.org/posts/2014/08/python-4000....


Given the Python versioning effective convention, it would be strange for the developers to go from 3.9 -> 4.0 because they've run out of digits. Probably better to go to 3.10 to avoid confusion and stay on 3.X while there's no backwards-compatible breaks.


Yup. They eventually decided they might go to 3.10 after 3.9.

From the article above:

> Update: After this post was originally written back in 2014, subsequent discussions on the core python-dev mailing list led to the conclusion that the release after 3.9 will probably just be 3.10. However, a 4.0 will presumably still happen some day, and the premise of this article is expected to hold for that release: it will be held to the same backwards compatibility obligations as a Python 3.X to 3.X+1 update.




Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: