[Python-Dev] Re: weakref gc semantics

Jim Fulton jim at zope.com
Thu Nov 4 18:47:00 CET 2004


Neil Schemenauer wrote:
> On Thu, Nov 04, 2004 at 12:25:32AM -0500, Tim Peters wrote:
> 
>>One I sketched last time, and is in the attached patch-callback.txt. 
>>(Patches here just have gcmodule.c code changes, no corresponding
>>changes to comments.)  The difference is that it invokes a callback on
>>a weakref to trash iff the callback is reachable, instead of invoking
>>a callback on a weakref to trash iff the weakref it's attached to is
>>reachable.
> 
> 
> I like this idea best.  I don't see why it should be hard to
> explain.  Instead of saying:
> 
>     If you want the weakref callback to be invoked, ensure the
>     WEAKREF outlives the referent.
> 
> we say:
> 
>     If you want the weakref callback to be invoked, ensure the
>     CALLBACK outlives the referent.
> 
> I think there may be one small problem though.  Callbacks get passed
> the weakref object.  Doesn't that break the rule that trash should
> not be exposed to Python code while the collection is taking place?

Exactly, that's why I prefer the other approach.

Jim

-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org


More information about the Python-Dev mailing list