diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-02-12-11-20-00.gh-issue-140009.dictxor.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-02-12-11-20-00.gh-issue-140009.dictxor.rst new file mode 100644 index 00000000000000..f6a518f313167a --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-02-12-11-20-00.gh-issue-140009.dictxor.rst @@ -0,0 +1 @@ +Optimize :meth:`dict.items` symmetric difference by using :c:func:`PyTuple_FromArray` instead of :c:func:`PyTuple_Pack`. diff --git a/Objects/dictobject.c b/Objects/dictobject.c index ae7bf61767dc3b..4c457a01b66a8c 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -6292,7 +6292,8 @@ dictitems_xor_lock_held(PyObject *d1, PyObject *d2) } } else { - PyObject *pair = PyTuple_Pack(2, key, val2); + PyObject *items[] = {key, val2}; + PyObject *pair = PyTuple_FromArray(items, 2); if (pair == NULL) { goto error; }