PEP 590
E896510
PEP 590 is the Python Enhancement Proposal that introduced the "vectorcall" protocol to speed up and standardize function calls in CPython.
Statements (50)
| Predicate | Object |
|---|---|
| instanceOf | Python Enhancement Proposal ⓘ |
| acceptedInYear | 2019 ⓘ |
| affects |
C extension types implementing vectorcall
ⓘ
built-in functions ⓘ built-in methods ⓘ |
| aimsTo |
speed up function calls in CPython
ⓘ
standardize low-level calling convention in CPython ⓘ |
| appliesTo | CPython 3.8 and later ⓘ |
| backwardsCompatibility | keeps Python-level call semantics unchanged ⓘ |
| benefit |
enables more efficient inlining and optimization by compilers
ⓘ
reduces overhead of argument tuple creation in many calls ⓘ simplifies internal call machinery in CPython ⓘ |
| createdBy |
Jeroen Demeyer
NERFINISHED
ⓘ
Mark Shannon NERFINISHED ⓘ Pablo Galindo NERFINISHED ⓘ Petr Viktorin NERFINISHED ⓘ Victor Stinner NERFINISHED ⓘ |
| decisionBody | Python core developers NERFINISHED ⓘ |
| definesConcept |
vectorcall
ⓘ
vectorcall protocol ⓘ |
| definesDataModel |
calling convention using C array of PyObject* arguments
ⓘ
separate tuple for keyword names ⓘ |
| discusses |
ABI stability concerns for C extensions
ⓘ
migration path from older fast-call APIs ⓘ |
| discussionsTo | [email protected] ⓘ |
| documentationURL | https://peps.python.org/pep-0590/ ⓘ |
| hasNumber | 590 ⓘ |
| introducedIn | CPython 3.8 NERFINISHED ⓘ |
| introducesAPI |
PyObject_Vectorcall
NERFINISHED
ⓘ
PyVectorcall_Call NERFINISHED ⓘ PyVectorcall_Function type NERFINISHED ⓘ vectorcall function pointer slot in PyTypeObject ⓘ |
| introducesMacro | PyVectorcall_NARGS ⓘ |
| isCompatibleWith | existing Python call syntax ⓘ |
| language | Python NERFINISHED ⓘ |
| modifiesComponent |
CPython C API
NERFINISHED
ⓘ
PyObject call conventions ⓘ |
| motivatedBy |
need to unify multiple fast-call code paths
ⓘ
performance of C extension calls ⓘ performance of Python function calls ⓘ performance of bound method calls ⓘ |
| relatedTo |
PEP 579
NERFINISHED
ⓘ
PEP 580 NERFINISHED ⓘ |
| replacesMechanism |
_PyObject_FastCall and related private APIs
ⓘ
tp_call-based calling for many callables ⓘ |
| scope | low-level C calling protocol, not Python language syntax ⓘ |
| status | Final ⓘ |
| targetImplementation | CPython NERFINISHED ⓘ |
| title | PEP 590 – Vectorcall: a fast calling protocol for CPython NERFINISHED ⓘ |
| type | Standards Track ⓘ |
Referenced by (1)
Full triples — surface form annotated when it differs from this entity's canonical label.