Re: [Python-Dev] Py_SETREF again
On 12 February 2016 at 19:45, Serhiy Storchakawrote: > Now Raymond, who was not involved in the previous discussions, expressed the > view that we should to rename Py_SETREF to Py_XSETREF and add new Py_SETREF > that uses Py_DECREF for using in the code that used Py_DECREF previously. > [1] > > We should discuss the need for this, and may be re-discuss the names for the > macros. I'm inclined to go with the resolution discussed later in the comments on that tracker issue - switch to spelling out the details when you want to avoid the Py_XDECREF inside the Py_SETREF macro. As Raymond notes, if you're wanting to manage when and how DECREF's occur, you may not want to hide them inside another macro at all. I'm also wondering if it may be worth adding some notes about reference counting to PEP 7, such as: * using Py_RETURN_NONE/FALSE/TRUE * using Py_CLEAR * using Py_SETREF (but being free to avoid it if you want to use Py_DECREF instead or are hand-optimising the code in some other way) Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia ___ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Py_SETREF again
On 12.02.16 15:43, Georg Brandl wrote: On 02/12/2016 10:45 AM, Serhiy Storchaka wrote: Sorry to bringing this up again. I was hoping we were done with that. When discussing the name of the Py_SETREF macro I was supposed to add a pair of macros: for Py_DECREF and Py_XDECREF. But I got a lot of opinions to be limited to only one macro. There was no (besides my) clearly expressed vote for two macros. I would have voted in favor. Spelling the SETREF out, as Nick proposes, kind of defies the purpose of the macro: it's not strictly a convenience macro, it helps prevent refcounting bugs. As a result I have replaced both Py_DECREF and Py_XDECREF with the macro that always uses Py_XDECREF. Can you roughly say which fraction of replacements changed DECREF to an implicit XDECREF? Changesets c4e8751ce637, bc7c56a225de, 539ba7267701, b02d256b8827, 1118dfcbcc35. Rough estimation: Py_DECREF - 62 Py_XDECREF - 57 Py_CLEAR - 46 Total statistic of using macros in current code: Py_SETREF174 2.5% Py_CLEAR 781 11% Py_XDECREF 1443 20.5% Py_DECREF 4631 66% ___ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Py_SETREF again
On 02/12/2016 10:45 AM, Serhiy Storchaka wrote: > Sorry to bringing this up again. I was hoping we were done with that. > > When discussing the name of the Py_SETREF macro I was supposed to add a > pair of macros: for Py_DECREF and Py_XDECREF. But I got a lot of > opinions to be limited to only one macro. > > There was no (besides my) clearly expressed vote for two macros. I would have voted in favor. Spelling the SETREF out, as Nick proposes, kind of defies the purpose of the macro: it's not strictly a convenience macro, it helps prevent refcounting bugs. > As a result I have replaced both Py_DECREF and Py_XDECREF with the macro > that always uses Py_XDECREF. Can you roughly say which fraction of replacements changed DECREF to an implicit XDECREF? Georg ___ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com