The lastest version of Python is 3.5.1. However, the latest release is 3.4.4. Why is 3.4.x still developed? Are there breaking changes in 3.5 with respect to 3.4?
For important software, it is common to support a release for multiple years. With Python, support is mostly in the form of bugfixes. You can see the changelog for the whole list of fixes between versions (see 3.5 full changelog).
Between versions such as 3.5 and 3.4, not only bugs were fixed but also new features were added. E.g. 3.5 added the
@ matrix multiplication operator, and async-await style coroutine support. Organizations may want a fully-patched system without the uncertainty implied by a new feature, after having tested that a specific Python version works for them.
Given a version number such as 3.5.1, this allows you to quickly recognize the level of compatibility: for Python version 3, that would be the 5th feature release, and the 1st bug fix release for that feature release. Similarly, the 2.x branch is not being developed further, and is stuck at
2.7.x. However, this widely spread version will still receive bugfixes (currently at 2.7.11).
For further information, read the about the Python Development Cycle in the Developer Guide.
The same reason we receive updates to Windows 7 after the release of Windows 8, 8.1, 10.…
The same reason you can take your car to the dealer for a service and new tyres, even though it’s ten years old. It would be a bit rubbish if you had to buy a whole new car every time you broke a tail light.
The same reason you can build a new porch at the front of your home instead of moving house.
Incremental updates and patches to older versions of software is a crucial part of maintaining a project; you can’t just expect everyone to perform major upgrades every few weeks (each of which may come with its own dependency/interface breakages).