I had several false starts on this issue and always got too deep in describing the current implementation. So I'll post a half-baked list to get something down faster.
- How are/should fields handled, esp. special ones like type, dict, and superclass ones:
- What should
tp_traverse visit?
- What code is in charge of initializing them? Zeroing them before initialization? Clearing them?
- Can an object outlive
tp_clear?
- Can I rely on
tp_clear being called?
- Which initialization/finalization APIs call a type's slots, and which ones bypass them?
etc.
I had several false starts on this issue and always got too deep in describing the current implementation. So I'll post a half-baked list to get something down faster.
tp_traversevisit?tp_clear?tp_clearbeing called?etc.