[Python-Dev] __del__ and tp_dealloc in the IO lib

Terry Reedy tjreedy at udel.edu
Fri Jan 23 21:52:56 CET 2009


Giovanni Bajo wrote:
>
>> You are so very wrong, my son. CPython's implementation strategy
>> *will* evolve. Several groups are hard at work trying to make a faster
>> Python interpreter, and when they succeed, everyone, including you,
>> will want to use their version (or their version may simply *be* the
>> new CPython).
> 
> I'm basing my assumption on 19 years of history of CPython. Please, 
> correct me if I'm wrong, but the only thing that changed is that the 
> cyclic-GC was added so that loops are now collected, but nothing change 
> with respect to cyclic collection. And everybody (including you, IIRC) 
> has always agreed that it would be very very hard to eradicate reference 
> counting from CPython and all the existing extensions; so hard that it 
> is probably more convenient to start a different interpreter 
> implementation.

Your history is true, but sometimes history changes faster than most 
expect. [As in the last 13 months of USA.]  A year ago, I might have 
agreed with you, but in the last 6 months, there has been more visible 
ferment in the area of dynamic language implementations than I remember 
seeing in the past decade.  When Guido says "CPython's implementation 
strategy *will* evolve" [emphasis his], I  believe him.  So this is just 
the wrong time to ask that it be frozen ;-).

While a strong argument can be made that the remaining 2.x versions 
should not be changed, they do not apply to 3.x.  New code and ported 
old code should use 'with' wherever quick closing needs to be 
guaranteed.  The 3.0 manual clearly states "An implementation is allowed 
to postpone garbage collection or omit it altogether "

OK, it also goes on to say "(Implementation note: the current 
implementation uses a reference-counting scheme with (optional) delayed 
detection of cyclically linked garbage,...)"  I think the first part 
should at least be amended to 'the current CPython implementation' or 
'the CPython implementation currently' or even better 'one current 
implementation (CPython)' and a warning added "But this may change" and 
"is not true of all implementaions" if that is not made clear otherwise.

Terry Jan Reedy








More information about the Python-Dev mailing list