[Python-Dev] tp_finalize vs tp_del sematics
Valentine Sinitsyn
valentine.sinitsyn at gmail.com
Mon Aug 24 20:43:25 CEST 2015
More information about the Python-Dev mailing list
Mon Aug 24 20:43:25 CEST 2015
- Previous message (by thread): [Python-Dev] tp_finalize vs tp_del sematics
- Next message (by thread): [Python-Dev] tp_finalize vs tp_del sematics
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Armin, Thanks for replying. On 23.08.2015 17:14, Armin Rigo wrote: > Hi Valentine, > > On 19 August 2015 at 09:53, Valentine Sinitsyn > <valentine.sinitsyn at gmail.com> wrote: >> why it wasn't possible to >> implement proposed CI disposal scheme on top of tp_del? > > I'm replying here as best as I understand the situation, which might > be incomplete or wrong. > > From the point of view of someone writing a C extension module, both > tp_del and tp_finalize are called with the same guarantee that the > object is still valid at that point. The difference is only that the > presence of tp_del prevents the object from being collected at all if > it is part of a cycle. Maybe the same could have been done without > duplicating the function pointer (tp_del + tp_finalize) with a > Py_TPFLAGS_DEL_EVEN_IN_A_CYCLE. So you mean that this was to keep things backwards compatible for third-party extensions? I haven't thought about it this way, but this makes sense. However, the behavior of Python code using objects with __del__ has changed nevertheless: they are collectible now, and __del__ is always called exactly once, if I understand everything correctly. Thanks, Valentine
- Previous message (by thread): [Python-Dev] tp_finalize vs tp_del sematics
- Next message (by thread): [Python-Dev] tp_finalize vs tp_del sematics
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list