PEP 590

E896510

PEP 590 is the Python Enhancement Proposal that introduced the "vectorcall" protocol to speed up and standardize function calls in CPython.

Try in SPARQL Jump to: Statements Referenced by

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.

Python 3.8 hasPEP PEP 590