[Python-Dev] [python-committers] FINAL WEEK FOR 3.7.0 CHANGES!
On 5/18/18 9:20 AM, Ivan Pozdeev via Python-Dev wrote:
> Since Python uses semantic versioning (https://semver.org), the
> criterion for "what's new-worthy" changes is simple: they are _public
> interface changes_ (which include visible changes to documented behavior).
> (I maintain that changes to behavior that is not documented -- incl.
> issue30399 -- are _not_ public interface changes, and whoever relies
> on them does that on their own risk.)
Python does NOT use semantic versioning as features are allowed to be
obsoleted and removed without a major version number change. Also the
addition of a new keyword which breaks old code would not be allowed
with semantic versioning. The basic rules of semantic versioning is that
ANY program that uses documented features of version a.b.c will work on
any version a.d.e where (d > b) or (d = b and e > c).
If python did use semantic versioning then there would be no need to
keep updates to older minor versions, once 3.7.0 was out, there would be
no need for keeping the 3.6.x, 3.5.x, 3.4.x branch etc, as any program
that was written for those older version would just work with the newer
version. The need for those is proof that python does not use semantic
If you wanted to map python version to a semantic versioning concept,
the first two numbers of the version would correspond to what semantic
versioning call the 'major revision' which is what is allowed to break
backwards compatibility with API, with the first digit being major
changes and the second minor but not fully backwards compatible changes.