[Python-Dev] PEP 580/590 discussion
Petr Viktorin
encukou at gmail.com
Thu May 9 18:07:06 EDT 2019
On 5/9/19 5:33 PM, Jeroen Demeyer wrote:
> On 2019-05-09 20:30, Petr Viktorin wrote:
>> The underlying C function should not need to know how to extract
>> "self" from the function object, or how to handle the argument
>> offsetting.
>> Those should be implementation details.
>
> Maybe you misunderstood my proposal. I want to allow both for extra
> flexibility:
>
> - METH_FASTCALL (possibly combined with METH_KEYWORDS) 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.
>
> - METH_VECTORCALL (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 METH_VECTORCALL at all.
> Personally, I consider the discussion about who is supposed to check
> that a function returns NULL if and if an error occurred a tiny detail
> which shouldn't dictate the design. There are two solutions for this:
> either we move that check one level up and do it for all vectorcall
> functions. Or, we keep the existing checks in place but we don't do that
> check for METH_VECTORCALL (this is already more specialized anyway, so
> dropping that check doesn't hurt much). We could also decide to enable
> this check only for debug builds, especially if debug builds are going
> to be easier to use thank to Victor Stinner's work.
>
>> I see the value in having METH_VECTORCALL equivalent to the existing
>> METH_FASTCALL|METH_KEYWORDS.
>
> But why invent a new name for that? METH_FASTCALL|METH_KEYWORDS already
> works. The alias METH_VECTORCALL could only make things more confusing
> (having two ways to specify exactly the same thing). Or am I missing
> something?
METH_FASTCALL is currently not documented, and it should be renamed
before it's documented. Names with "fast" or "new" generally don't age well.
More information about the Python-Dev
mailing list