bpo-36030: Add an internal _PyTuple_NewUnsafe() function by sir-sigurd · Pull Request #11927 · python/cpython

Uninitialized tuples must be initialized with Py_SIZE(op) = 0 since they are tracked by the GC (_PyObject_GC_TRACK call below). A GC collection can be triggered while the tuple is filled, whereas tupletraverse() uses Py_SIZE() to iterate on items. If Py_SIZE() isn't 0, tupletraverse() will likely crash.

I suggest the function name "tuple_new_impl".