On 10/7/05, Phillip J. Eby <[EMAIL PROTECTED]> wrote:
> At 07:17 PM 10/7/2005 -0600, Adam Olsen wrote:
> >On 10/7/05, Phillip J. Eby <[EMAIL PROTECTED]> wrote:
> > > Note that implementing a root-based GC for Python is non-trivial, since
> > > extension modules can store pointers to PyObjects anywhere they
> > > like.  Further, many Python objects don't even support being tracked by 
> > > the
> > > current cycle collector.
> > >
> > > So, changing this would probably require a lot of C extensions to be
> > > rewritten to support the needed API changes for the new garbage collection
> > > strategy.
> >
> >They only need to be rewritten if you want them to provide an
> >immutable type that can be transferred between sandboxes.
>
> No.  You're missing my point.  If they are able to *reference* these
> objects, then the garbage collector has to know about it, or else it can't
> know when to reclaim them.  Ergo, these objects will leak, or else
> extensions will crash when they refer to the deallocated memory.
>
> In other words, you can't handwave the whole problem away by assuming "a
> garbage collector".  The garbage collector has to actually be able to work,
> and you haven't specified *how* it can work without changing the C API.

Unfortunately the rammifications of your original statement didn't set
in until well after I sent my reply.  You are right, it does make it
impossible without changing the C API, so that much of the idea is
dead.

I wonder if it would be possible to use a wrapper around the immutable
type instead.. something to ponder anyway.


> >I was aware that weakrefs needed some special handling (I just forgot
> >to mention it), but I didn't know it was used by subclassing.
> >Unfortunately I don't know what purpose it serves so I can't
> >contemplate how to deal with it.
>
> It allows changes to a supertype's C-level slots to propagate to subclasses.

I see.  Well, I would have required the supertype to be immutable, so
there couldn't be any changes to the C-level slots.

--
Adam Olsen, aka Rhamphoryncus
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to