On Tue, Jul 31, 2018 at 7:07 AM Victor Stinner vstinner@redhat.com wrote:
Hum, it seems like many people misunderstood my intent. My intent is not to force everybody to modify all their C extensions at once as we did with Python 3.0. No, my intent is to add an optional "new C API" that you can use if you would like to benefit of the stable ABI and maybe test experimental new runtimes.
That sounds great and I'm in favor. :) The idea of "experimental new runtimes" is intriguing. [1] The key point is that the new C-API will effectively be a compatibility layer between separate runtimes, right? So compliant extension modules will work in any of them.
A critical issue will be how we will phase out the "old" C-API. That will have to be resolved before we can ever integrate an "experimental" runtime back into the CPython code base.
FWIW, I had a great conversation with Travis Oliphant at PyCon this year about extension module compatibility (relative to subinterpreters). He had some good insights that I think apply here. The gist was that you can get away with some compatibility breakage if you're careful:
- small changes
- provide a good alternative to current usage
- work with commonly used extensions to make sure they don't break
One last thing: do you expect that extensions that do not use the new C-API will be increasingly penalized over time?
-eric
[1] I approve of efforts to solidify the concept of "runtime" for Python. :)