[python-committers] My cavalier and aggressive manner, API change and bugs introduced for basically zero benefit
Yury Selivanov
yselivanov.ml at gmail.com
Fri Jan 20 20:14:09 EST 2017
On 2017-01-20 5:02 PM, Lukasz Langa wrote:
>> On Jan 20, 2017, at 9:26 AM, Yury Selivanov <yselivanov.ml at gmail.com> wrote:
>>
>> I think that we need to become less conservative about
>> development of CPython internals. At this point it's impossible
>> to make CPython any faster without invasive refactorings, and
>> I think it's OK to trust our core developers to make them.
> I agree with the sentiment but I'm worried about the implications. Your suggested approach only makes sense if we have a good safety net in place to catch regressions early. Unfortunately, apart from regrtest, buildbots, and dumb luck, we don't. Betas have very limited adoption, too limited to be useful in my experience. I tried and failed to introduce 3.6 during beta phase at work because there was too much risk it would be picked up by unsuspecting users. Other users seem to be in the same camp. Consequently, most x.y.0 releases are relatively lower quality.
>
> I wonder if there's any way for us to incentivize beta usage in some key areas. For example, if every Python 3 project on Travis CI also ran on "3.7-dev" or "nightly", that would already give us better real world coverage. Actually *running* dev builds in production seems too risky for me for the reasons that Raymond and Victor state in this thread: too much lightly reviewed changes.
>
> Summing up, I don't think we can really start "moving fast and breaking things" until we have wider adoption of dev builds in the wild. To put money where my mouth is, I am currently working on introducing the dev version of 3.7 to the build system at work. But this is not going to be enough on its own.
>
> - Ł
>
Lukasz, I understand what you are saying here. But on the other hand,
we should not stop improving CPython. Sometimes stuff will break
because of our "loose" safety net, but this is inevitable. It happens
virtually in any software project (including other languages and compilers).
My experience shows that even extensive code reviews don't spot all
bugs. E.g. I missed a bug in one asyncio patch that caused
"loop.sock_connect" to be broken in 3.5.2. Another one: due to a design
mistake in PEP 492, we had to change how __aiter__ behaves in 3.5.3 and
3.6. PEP 492 was thoroughly discussed, the patches were reviewed, and
we merged everything a few months before we released Python 3.5.0; that
wasn't enough apparently.
I'm not suggesting that we should "move fast", merge things without
reviews / tests / benchmarks. In Victor's case, he started working on
FASTCALL in 3.6, and we already shipped some of his improvements (I
reviewed a few FASTCALL patches myself). Now he (with help of Serhiy
and Inada-san) simply continues to work on the project, gradually
refactoring the code, improving Argument Clinic etc. We are still early
in 3.7 development cycle, and I don't think we should stop the project
just because we had a couple of minor regressions.
Thank you,
Yury
More information about the python-committers
mailing list