What is the difference between Python versions 3.4, 3.5, 3.6, 3.7?

Asked

Viewed 2,323 times

1

I thought Python only updated versions 2.7 to maintain compatibility but 3.x abandoned earlier versions. But he insists on updating versions 3.4, 3.5, 3.6, 3.7 constantly. What these various versions 3.x. x have different?

Python couldn’t just go with version 2.7 and 3.7 and abandon 3.4, 3.5, 3.6 ?

  • First, you need to understand how the versioning scheme.

  • You must understand that every little number there makes a difference. I recommend reading that answer about how software is versioned.

  • 1
  • https://github.com/python/cpython/releases

  • CHANGELOG: https://docs.python.org/3/whatsnew/changelog.html what is new from 3.0: https://docs.python.org/3.0/whatsnew/3.0.html

  • It is not a question of abandoning, the Wallace link is perfect to explain, 3.4 until 3.6 receive security fixes, because there are systems that still use them, it does not mean that they will receive features that change these versions, only corrections even with compatibility. That is internally it will be 3.4.1, 3.4.2, 3.4.3 onwards. This is because there are systems that have been written in these specific versions (of specific range as 3.4.x), there may be bugs or security issues, that they continue to support, but in a few years probably abandon...

  • ...only that they can’t do it out of thin air, because if systems that don’t already use the specific ranges can get insecure or break for bugs, now if software written in 3.4 was put in the 3.7 to run it might not work, because usually when the range is from the second "house" (3.x) may not maintain compatibility.

  • Just for the sake of 2.7 is not maintained by "compatibility", but because many systems still use it, even operating systems come with python2.7 natively, and many good software still could not be migrated, because it takes time, python3 is very different from 2 (I speak not only of some syntaxes, but of internal libs as well) to be able to migrate in a long time.

  • Thank you all, I just upgraded to Python 3.7 and Pyside2 with Qt5.

  • I reversed your edit, @thegrapevine. I voted to reopen this question, I think it is appropriate as well as https://answall.com/questions/178464/o-que-poderia-justificar-o-pulo-de-um-n%C3%Bamero-em-um-sistema-de-versionamento :)

Show 5 more comments

1 answer

6


The idea you had earlier is right - the only really old version that is still updated is 2.7.

The other versions are updated, but with bug and security updates - no new features.

New features always only enter the version with a new "minor number" ("7" in "3.7", for example). There are some standard library Apis that are called "provisional" - these and only these, may change and have differences between version 3.7.0 and 3.7.1 (for example) - see PEP 411

It turns out that many systems are made and rely on specific versions of Python - the language tries not to generate any breaks, but even checking if nothing went wrong with the new version can be costly on a large, very critical system.

In addition to systems that rely on specific versions, other companies prefer to rely on the Python that accompanies the operating system, rather than putting in a custom Python - and some server distributions may have lag of a few years on their packages. (And, aside from updating the entire distribution of a server where you can have multiple systems running, it’s even more critical than just updating Python) Redhat Enterprise Linux, for example, has guaranteed maintenance for 10 years (https://access.redhat.com/support/policy/updates/errata )

Then, after the release of each version of Python, there is a period when it is considered "maintained", and will receive bug fixes and security updates. After that, another period of time when new bugs discovered are not tidied up, only security updates. Until you reach the "end of the line" - at that point the version is considered discontinued and will not receive any official update.

For Python these periods are: the last and penultimate version are actively maintained to receive bug fixes (for today, August 2018, they are 3.7 and 3.6). The two previous versions receive security fixes - and only security fixes - (these are 3.5 and 3.4). And 2.7 gets bug fixes and documentation by 1/1/2020 - when then it will no longer be maintained.

A new version of the language is released every year and a half or so, so, on average, a system made with newer Python will be able to count on bug fixes for 3 years, and security fixes for 6 years.

Note that private companies that have security maintenance contracts for products that include older versions of Python may continue to put security updates in older versions - for example, Redhat should continue, on its own, correcting vulnerabilities in Python 2.7 after the end of its line in 2020 - until the end of the maintenance of the last Redhat Enterprise Linux that included Python 2.7. These updates by private companies may be publicly shared, and so on... but will no longer generate official releases of these older versions of Python. Those who need them will have to search the internet for patches and apply on their own (or have a contract with the maintainer to do this).

Browser other questions tagged

You are not signed in. Login or sign up in order to post.