INADA-san:
We need to avoid major breakage. But we accept small breakages on every minor release. And u-prefix is major for now.
IMHO we need a metric to measure the risk of an incompatible change: estimate the percentage of broken Python applications. For example, run the test suite of the PyPI top 100 projects with the incompatible change and see how many fails. That's the root of the PEP 608 -- Coordinated Python release: https://www.python.org/dev/peps/pep-0608/ The "PEP 606 -- Python Compatibility Version" elaborates on incompatible changes: https://www.python.org/dev/peps/pep-0606/ These two PEPs have been rejected since the proposed concrete changes which were not the best options. It seems like the common denominator is the need for a tool to run the testsuite of popular projects on a modified Python and/or the master of Python, to measure how many projects are broken by recent Python changes. It's very different if an incompatible change break 1% or 90% of Python projects. Right now, we take decisions on assumptions without validating them. We push changes and hope that we don't break too many projects. It's rare that we revert incompatible changes that break too many projects, because too few developers test their projects on the beta versions of Python. Most developers and users only test final Python versions. Victor