[Python-Dev] PyWeakref_GetObject() borrows its reference from... whom? (original) (raw)

Larry Hastings larry at hastings.org
Mon Oct 10 16:57:02 EDT 2016


On 10/10/2016 06:37 PM, Guido van Rossum wrote:

Modified +1: you can't change the behavior of the existing API, but you can deprecate it and introduce a better one with a different name. We'll have until Python 4.0 to carry through the deprecation anyways. And I doubt this is the only C API change needed for happy gil-free coding...

First, "deprecate" won't work for these semantics for the Gilectomy branch. I simply cannot safely support the semantics of the existing function. All call sites need to change.

Second, consider that every function that returns a borrowed reference--PyDict_GetItem(), PyList_GetItem()--has to change too, to return an actual (non-borrowed) reference. It's going to be a major upheaval in the C API.

For now I'm going to leave the names as-is and just change the semantics everywhere. If this approach really works, and if we decide we want to merge it back into trunk--and those are both still big if's--we can revisit this decision.

I haven't yet ruled out abandoning reference counting completely and going to 100% tracing garbage collecting,

//arry/ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20161010/530ec3c3/attachment-0001.html>



More information about the Python-Dev mailing list