[Python-Dev] Borrowed and Stolen References in API
Raymond Hettinger
raymond.hettinger at gmail.com
Thu May 5 20:12:55 CEST 2011
On May 5, 2011, at 10:18 AM, Guido van Rossum wrote:
> On Thu, May 5, 2011 at 10:17 AM, Amaury Forgeot d'Arc
> <amauryfa at gmail.com> wrote:
>> 2011/5/5 Guido van Rossum <guido at python.org>:
>>> Seems you're in agreement with this. IMO when references are borrowed
>>> it is not very interesting. The interesting thing is when calling a
>>> function *steals* a reference. The other important thing to know is
>>> whether the caller ends up owning the return value (if it is an
>>> object) or not. I *think* you can tell the latter from the +1 for the
>>> return value; but the former (whether it steals a reference) is
>>> unclear from the data given. There's even an XXX comment about this in
>>> the file:
>>>
>>> # XXX NOTE: the 0/+1/-1 refcount information for arguments is
>>> # confusing! Much more useful would be to indicate whether the
>>> # function "steals" a reference to the argument or not. Take for
>>> # example PyList_SetItem(list, i, item). This lists as a 0 change for
>>> # both the list and the item arguments. However, in fact it steals a
>>> # reference to the item argument!
>>
>> Should we change this file then?
>> And only list functions that don't follow the usual conventions.
>>
>> But I'm sure that there are external tools which already use refcounts.dat
>> in its present format.
>
> Maybe we can *add* a column with the desired information?
+1
Raymond
More information about the Python-Dev
mailing list