Closed
Description
Feature or enhancement
The _struct
module has a few small issues:
- The use of
PyDict_GetItemWithError
returns a borrowed reference (should usePyDict_GetItemRef
) - The
state->cache
is lazily created; we should instead create it during_structmodule_exec
- We want
state->cache
to be an immutable reference to a mutable dict. (Thedict
will be thread-safe.) UsePyDict_Clear
to empty the dict instead of clearing the reference.
See the commit from the nogil-3.12
fork for context: colesbury/nogil-3.12@ada9b73feb. Note that in CPython the relevant function is PyDict_GetItemRef
not PyDict_FetchItemWithError
.