Closed
Description
I dislike PyList_New()
+ PyList_SET_ITEM()
API since the list is immediately tracked by the GC and so calling gc.get_objects()
can expose an invalid list object (ex: calling repr(list)
can crash). See:
- Disallow creation of incomplete/inconsistent objects capi-workgroup/problems#56
- gh-107137: Add _PyTupleBuilder API to the internal C API #107139
- Avoid creating incomplete/invalid objects capi-workgroup/api-evolution#36
The internal PyObject * _PyList_FromArraySteal(PyObject *const *src, Py_ssize_t n)
function should be made public. But it should be renamed to avoid misleading "Steal" term: ownership is "moved" or "transfered", not "stolen".