[Python-Dev] PEP 580/590 discussion (original) (raw)

Stefan Behnel stefan_ml at behnel.de
Fri May 10 03:57:06 EDT 2019


Petr Viktorin schrieb am 10.05.19 um 00:07:

On 5/9/19 5:33 PM, Jeroen Demeyer wrote:

Maybe you misunderstood my proposal. I want to allow both for extra flexibility:

- METHFASTCALL (possibly combined with METHKEYWORDS) continues to work as before. If you don't want to care about the implementation details of vectorcall, this is the right thing to use. - METHVECTORCALL (using exactly the vectorcallfunc signature) is a new calling convention for applications that want the lowest possible overhead at the cost of being slightly harder to use. Then we can, in the spirit of minimalism, not add METHVECTORCALL at all. [...] METHFASTCALL is currently not documented, and it should be renamed before it's documented. Names with "fast" or "new" generally don't age well.

I personally don't see an advantage in having both, apart from helping code that wants to be fast also on Py3.7, for example. It unnecessarily complicates the CPython implementation and C-API.

I'd be ok with removing FASTCALL in favour of VECTORCALL. That's more code to generate for Cython in order to adapt to Py<3.6, Py3.6, Py3.7 and then Py>=3.[89], but well, seeing the heap of code that we already generate, it's not going to hurt our users much.

It would, however, be (selfishly) helpful if FASTCALL could still go through a deprecation period, because we'd like to keep the current Cython 0.29.x release series compatible with Python 3.8, and I'd like to avoid adding support for VECTORCALL and compiling out FASTCALL in a point release. Removing it in Py3.9 seems ok to me.

Stefan



More information about the Python-Dev mailing list