and they must be unique.
If there are no keyword arguments, then *kwnames* can instead be *NULL*.
-.. c:macro:: PY_VECTORCALL_ARGUMENTS_OFFSET
+.. data:: PY_VECTORCALL_ARGUMENTS_OFFSET
If this flag is set in a vectorcall *nargsf* argument, the callee is allowed
to temporarily change ``args[-1]``. In other words, *args* points to
``__dict__`` and weakrefs with less bookkeeping,
using less memory and with faster access.
+* API for performing calls using
+ :ref:`the vectorcall protocol <vectorcall>` was added to the
+ :ref:`Limited API <stable>`:
+
+ * :c:func:`PyObject_Vectorcall`
+ * :c:func:`PyObject_VectorcallMethod`
+ * :const:`PY_VECTORCALL_ARGUMENTS_OFFSET`
+
+ This means that both the incoming and outgoing ends of the vector call
+ protocol are now available in the :ref:`Limited API <stable>`. (Contributed
+ by Wenzel Jakob in :gh:`98586`.)
+
* Added two new public functions,
:c:func:`PyEval_SetProfileAllThreads` and
:c:func:`PyEval_SetTraceAllThreads`, that allow to set tracing and profiling
Added the methods :c:func:`PyObject_Vectorcall` and
:c:func:`PyObject_VectorcallMethod` to the :ref:`Limited API <stable>` along
-with the auxiliary macro constant :c:macro:`PY_VECTORCALL_ARGUMENTS_OFFSET`.
+with the auxiliary macro constant :const:`PY_VECTORCALL_ARGUMENTS_OFFSET`.
The availability of these functions enables more efficient :PEP:`590` vector
calls from binary extension modules that avoid argument boxing/unboxing