On Thu, 27 Aug 2015 at 14:39 Yury Selivanov
On 2015-08-27 5:31 PM, Yury Selivanov wrote:
On 2015-08-27 5:24 PM, Brett Cannon wrote:
My proposal is to amend PEP 411 with two levels of provisional packages:
Level 1: Backwards incompatible changes might be introduced in point releases.
Level 2: Only backwards compatible changes can be introduced in new point releases.
How is this any different from the normal compatibility promise we have for any non-provisional code in the stdlib?
And by point release I assume you mean a new minor release, e.g. 3.5 -> 3.6.
Right, my mistake, I indeed meant minor releases.
The difference is that right now we don't introduce new features (regardless of backwards compatibility promises) for any non-provisional code in minor releases, we can only do bug fixes.
My proposal is to enable asyncio receiving new strictly backwards compatible APIs/features (and bug fixes too, of course) in minor releases (3.5.x).
Turns out I was lost in terminology :)
Considering that Python versioning is defined as major.minor.micro, I'll rephrase the proposal:
Level 1: Backwards incompatible changes might be introduced in new Python releases (including micro releases)
Level 2: Only backwards compatible changes (new APIs including) can be introduced in micro releases.
In that case I don't think it's a good idea for something that has widespread use to get new APIs in a micro release; I lived the 2.2.1/boolean event and I don't want to go through that again. If a module is used enough to warrant not breaking backwards-compatibility then it warrants not being provisional and being like any other module.