[Python-Dev] Add Py_SETREF and Py_XSETREF to the stable C API

Nick Coghlan ncoghlan at gmail.com
Thu Nov 9 21:09:12 EST 2017


On 9 November 2017 at 22:35, Antoine Pitrou <solipsis at pitrou.net> wrote:
> On Thu, 9 Nov 2017 04:22:20 -0800
> Raymond Hettinger <raymond.hettinger at gmail.com> wrote:
>>
>> Probably, we're the wrong people to be talking about this.  The proposal is to make these macros part of the official API so that it starts to appear in source code everywhere.  The question isn't whether the above makes sense to you and me; instead, it is whether other people can make heads or tails out the above examples.
>
> Generally I would advocate anyone wanting to write a third-party C
> extension, but not very familiar with the C API and its quirks, use
> Cython instead.  I'm not sure if that's an argument for the SETREF APIs
> to remain private or to become public :-)

I'm with Antoine on this - we should be pushing folks writing
extension modules towards code generators like Cython, cffi, SWIG, and
SIP, support libraries like Boost::Python, or safer languages like
Rust (which can then be wrapped with cffi), rather than encouraging
more bespoke C/C++ extensions modules with handcrafted refcount
management. There's a reason the only parts of
https://packaging.python.org/guides/packaging-binary-extensions/ that
have actually been filled in are the ones explaining how to use a tool
to write the extension module for you :)

For me, that translates to being -1 on making these part of the public
API - for code outside CPython, our message should consistently be "Do
not roll your own refcount management, get a code generator or library
to handle it for you".

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia


More information about the Python-Dev mailing list