Python Development: Python Release Cycle - Major, Minor, Micro Nomenclature and How it works

Published: 14 May 2020
on channel: Python Gurgaon
36
1

Python Development: Python Release Cycle - Major, Minor, Micro Nomenclature and How it works

Python Versions - Major, Minor, Micro

Today, we'll find out about how python release cycle works, branches, production ready final releases, release candidates and what are the different releases names etc. and more.

Python uses a major.minor.micro nomenclature for production-ready releases. What it means is if we say Python 3.8.2 final, it means that the python release is a major version of 3, a minor version of 8, and a micro version of 2.

What is the difference between them? Well, python's new major versions are exceptional because these are planned very long in advance and they only come when the developers need to make strongly incompatible changes which are necessary.

As for the new minor versions, these are feature releases and they get released annually, from the current in-development branch. So. e.g. the upcoming version Python 3.9 which is set to be released on October 5, 2020 — around one year after Python 3.8, which was made available in October 2019. Python 3.9 was originally scheduled to be released in April 2021 according to the earlier prevalent 18-month release cycle. But as per PEP 602 by Python core developer Lukasz, python has moved to an annual release cycle now and therefore, python 3.9 is being released one year after the release of python 3.8.

As for the new micro versions, these are bugfix releases, they get released roughly every 2 months and they are prepared in maintenance branches.

In addition to this, non-final versions are also published with an additional qualifier:

Alpha, Beta, release candidate

Firstly, we talk about the Master Branch

There is a branch for each feature version, whether released or not (e.g. 3.10, 3.9). There is one In-development or main branch or master branch.

Next we have Maintenance Branches

During the life-cycle of a release, a new maintenance branch (e.g. 3.9) is created which can host all bug fixing activity for further micro versions in a feature version (3.9.1, 3.9.2, etc.). This maintenance branch is created at the time of entering beta (e.g. 3.9.0 beta 1).

Then we have Security branches

Then are End-of-life branches

For reference, some of the Python versions that most recently reached their end-of-life are:

3.4 branch which was first released on 16th March 2014 reached its end-of-life status on 18th March 2019

Similarly the 2.7 branch which was released on 3rd July 2010 reached its end-of-life status on 1 January 2020

As regarding the status as of May 2020, the master branch as of today is that of python 3.9 which is in the features status, the 3.8 branch which was first released on 14th October 2019 and has end-of-life date of October 2020 (which is after the 5 years of that of its release date) has the current status of bugfix.

The 3.7 branch which was first released on 27 June 2018 and has end-of-life date of 27 June 2023 also has the current status of bugfix.

Where as the 3.6 branch which was first released on 23 December 2016 and has end-of-life date of 23 December 2021 has the current status of security.

As is also the case with the 3.5 branch which was first released on 13 September 2015 and has end-of-life date of 13 September 2020

Regarding the different status, the features status mean that the branch accepts new features, bugfixes, and security fixes.

For the prerelease status, feature fixes, bugfixes, and security fixes are accepted for the upcoming feature release.

With the bugfix status, bugfixes and security fixes are accepted and new binaries are still released. (Also called the maintenance mode or stable release)

For the security status, only security fixes are accepted and no more binaries are released, but new source-only versions can be released

With the end-of-life status, release cycle is frozen and no further changes can be pushed to it.

We can find the latest release for each Python version on the download page of python.org

There are different stages of development in python

Each release of Python is tagged in the source repo with a tag of the form vX.Y.ZTN, where X is the major version, Y is the minor version, Z is the micro version, T is the release level (a for alpha releases, b for beta, rc release candidate, and null for final releases), and N is the release serial number. Some examples of release tags are

v3.7.0a1
v3.6.3
v2.7.14rc1

Python Tutorial For Beginners    • Python Tutorial for Beginners  

Python New Releases And Latest Features    • Python New Releases And Latest Features  

#development #releases #cycles #developers #major #minor #micro
#3.9 #3.9.0 #3.9.0a6 #download #October #2020 #Alpha #Beta #release #candidate
#Master #Maintenance #Security #End-of-life #branches #features #bugfixes #prerelease
#Python #Gurgaon #Coding #Classes #Gurugram #Programming #Beginner #Tutorials