On 2017-01-20 5:02 PM, Lukasz Langa wrote:
On Jan 20, 2017, at 9:26 AM, Yury Selivanov <yselivanov...@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
_______________________________________________
python-committers mailing list
python-committers@python.org
https://mail.python.org/mailman/listinfo/python-committers
Code of Conduct: https://www.python.org/psf/codeofconduct/

Reply via email to