One of the most heavily criticized aspect of Python was the handling of the transition from Python 2 to Python 3. Do we have something similar coming with the release of Python 4? Is there an ETA for it? Will there be a version 4 at all in the near future?
So, when can we expect Python 4 to come out? At the time of writing this post, there is no release date for Python 4 yet. The next version is going to be 3.9.0 which is scheduled to be released on October 5, 2020, it is planned to have support approximately until October 2025, so the next release after 3.9 should come out somewhere between 2020 and 2025.
Will the next release be a major version update? If yes, will the transition from version 3 to 4 be handled better than the transition from version 2 to 3 one? In this post, I aim to summarize what we know now about the next release and what went wrong with Python 3. I’ll also try to point out why these questions are important and will give a shot at roughly outlining what we can expect in the future.
Will the next version be Python 4?
At the time of writing this article, there was no development plan published further than 2020 October. But the general expectation is, that the next release will be just “the release that comes after Python 3.9”.
So most probably the next version will not introduce major changes similar to the ones introduced by Python 3, and chances are that it won’t be versioned as Python 4, it is more likely to be released as 3.10. Note that the
. in 3.9 is not a decimal dot - as I will explain in the next section.
I do not expect Python 4 to be released anytime soon, and certainly nothing like the jump from Python 2 to 3.
Python Versions - What do the Version Numbers Mean?
Python versions are marked by a version number consisting of three numbers, the first one is called the
major, the second one is the
minor, and the third is the
micro version. For example, at the time of writing the latest production branch is 3.8.2 - so the major version is 3, the minor 8 and the micro is 2.
Micro versions are released roughly every two month, they contain only bugfixes and do not introduce changes to the language API.
Minor versions introduce new features to the language, these are to be released on a yearly bases.
Major versions are very rare, they are used only to bring in fundamental changes to the core language, these versions are by nature can be highly incompatible with the previous ones. Major releases require a long and careful preparation period.
The jump from python 3 to 4 would mean a major release, which is a tedious process, it will not happen without a good reason (like the introduction of Unicode was in python 3) - but nothing like that seems to be on the horizon.
Python 2 vs 3 - What Went Wrong?
Python 2 was first released on June 22, 2001, while the first version of Python 3 followed it on February 13, 2009. The early versions of Python 3 had a bunch of issues, the release was probably rushed, and Python 3 was pushed to production too early. It took quite a few iterations to fix the problems with Python 3, so the Python development team decided to keep supporting Python 2 for an extended time period. The problem is it that seriously slowed down the adoption of the new version and the deprecation of the old one.
Python 3 introduced quite a few breaking changes, which means that transitioning a huge codebase from Python 2 to Python 3 was far from painless. As a result, the Python community was split between two incompatible versions for a very long time.
This unfortunate situation lasted for more than a decade, until January 1, 2020, when the support for Python 2 officially ended. Despite Python 2 not being officially maintained anymore, there is still a huge amount of Python 2 code out there.
This survey from JetBrains demonstrates quite clearly how slow the migration process was: