[Python-Dev] Re: Re: Object finalization for local (ie function)scopes

Terry Reedy tjreedy at udel.edu
Sat Jun 12 14:02:59 EDT 2004


"Martin v. Löwis" <martin at v.loewis.de> wrote in message
news:40CAF8E0.1030909 at v.loewis.de...
> Certainly. However, I'm uncertain whether you find out, in this finally
> block, what objects require this finally-ization.

I brought up the same point on the parallel thread in c.l.p and got no
response.  As I remember, one way to create dangling pointers in C is for a
function to pass out of its scope a pointer to a local about to be freed.
I presume the same is true in C++.  To me, a main purpose of ref counting
is to know what *not* to release at function exit.

People who want more agressive cleanup on function exit could perhaps
develop a version of Python that calls a cyclic-junk finalizer *after*
locals are decrefed, as part of the execution of explicit or implicit
'return'.  The cyclic-junk finalizer could either be cyclic gc improved to
work with __del__ methods or a separate process that used the current cycle
detection apparatus to find candidates for processing.

Since most people neither need nor want the extra return overhead, this
should be a third-party add-on, a compilation option, or possibly a
built-in decoration like staticmethod.

My naive guess is that this would take a least a person-month.  I leave it
to *RAII-in-Python advocates to investigate further.

Terry J. Reedy

*Resource Aquisition Is Initialization,  in C++ -- because of auto
destruction of locals.






More information about the Python-Dev mailing list