PEP 590

E896510

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

All labels observed (4)

Label Occurrences
PEP 580 1
PEP 590 canonical 1
PEP 590 – Vectorcall: a fast calling protocol for CPython 1

How this entity was disambiguated

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
Mark Shannon
Pablo Galindo
Petr Viktorin
Victor Stinner
decisionBody Python core developers
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
linked to: Python 3.8
introducesAPI PyObject_Vectorcall
linked to: PEP 590

PyVectorcall_Call
PyVectorcall_Function type
vectorcall function pointer slot in PyTypeObject
introducesMacro PyVectorcall_NARGS
isCompatibleWith existing Python call syntax
language Python
modifiesComponent CPython C API
linked to: C API

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
PEP 580
linked to: PEP 590
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
title PEP 590 – Vectorcall: a fast calling protocol for CPython
linked to: PEP 590
type Standards Track

How these facts were elicited

Referenced by (4)

Full triples — surface form annotated when it differs from this entity's canonical label.

Python 3.8 hasPEP PEP 590
PEP 590 title PEP 590 – Vectorcall: a fast calling protocol for CPython
linked to: PEP 590
PEP 590 introducesAPI PyObject_Vectorcall
linked to: PEP 590
PEP 590 relatedTo PEP 580
linked to: PEP 590