[Python-ideas] Python's Source of Randomness and the random.py module Redux

Antoine Pitrou antoine at python.org
Mon Sep 14 18:15:55 CEST 2015

Cory Benfield <cory at ...> writes:
> On 14 September 2015 at 16:55, Antoine Pitrou <antoine at ...> wrote:
> > Python 3 was there to break compatibility. Not Python 3.4. Not Python 3.5.
> > Not Python 3.6.
> To clarify: your position is that we cannot break backward
> compatibility in Python 3.6?

It is. Not breaking backward compatibility in feature releases
(except 3.0, which was a deliberate special case) is a very long
standing policy, and it is so because users have a much better
time with such a policy, especially when people have to maintain
code that's compatible accross multiple versions (again, the 2->3
transition is a special case, which justifies the existence of
tools such as "six", and has incidently created a lot of turmoil
in the community that has only recently begin to recede).

Of course, fixing a bug is not necessarily breaking compatibility
(although sometimes we may even refuse to fix a bug because the
impact on working code would be too large). But changing or removing
a documented behaviour that people rely on definitely is.

We do break feature compatibility, from time to time, in exceptional
and generally discussed-at-length cases, but there is a sad pressure
recently to push for more compatibility breakage - and, strangely,
always in the name of "security".

(also note that some library modules such as asyncio are or were
temporarily exempted from the compatibility requirements, because they
are in very active development; the random module evidently isn't part
of them)



More information about the Python-ideas mailing list