-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Sep 18, 2006, at 4:33 PM, Jim Jewett wrote:
> On 9/18/06, Barry Warsaw <[EMAIL PROTECTED]> wrote: > >> ... I agree with Raymond that it can be quite difficult to get >> C code to be refcount-correct, ... > > How much of this (particularly for beginners) is remembering the > refcount affects of standard functions? Could this be avoided by just > always using the more abstract interface? (Sequence instead of List, > Mapping instead of Dict) I think that may be part of it (I've mentioned this before), but our C API code wasn't written by beginners, and while we don't have any known refcounting problems in production code, during development one or two can slip through. I don't think that the above is the major contributor. >> The really tricky thing about refcounting is making sure all the exit >> conditions out of a function are refcount correct. Usually these >> involve error or exception conditions, and they can be a bear to get >> right. > > Would it solve this problem if there were a PyTEMPREF that magically > treated the refcount as an automatic variable? (It increfed > immediately, and decrefed whenever the function exited, without the > user having to track this manually.) > > Would it help enough to justify a pre-processing requirement? I don't know, I hate macros. :) <talking from="my ass"> It's been a long while since I programmed on the NeXT, so Mac folks here please chime in, but isn't there some Foundation idiom where temporary Objective-C objects didn't need to be explicitly released if their lifetime was exactly the duration of the function in which they were created? ISTR something like the main event loop tracking such refcount=1 objects and deleting them automatically the next time through the loop. Since Python has a main loop, I wonder if the same kind of trick couldn't be done here. IOW, if you're just creating an object temporarily, you never need to explicitly decref it because the main eval loop would do it for you. Dang I wish I could remember the details. </talking> Something like that, where you didn't have to track all objects through all exit conditions would probably help. - -Barry -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) iQCVAwUBRQ8H83EjvBPtnXfVAQIz5wP+JUJF3fwYIZ6fUmG4PkpyE8K+oOflCQYE vjBSa4vaCkX8fJvAZzwH5VgFoOEJ6WxLwagkJvFmVdCLDNgs2TwJF+cT45qJYCLF cWbcNAtesxMVZIUMjtUDpQLoSw/1CTuGbCdymqEuteF8IRZEJP5Usv1c6ytS5LJK cuLWyArvNeo= =UDIj -----END PGP SIGNATURE----- _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com