[Python-Dev] Let's change to C API! (original) (raw)

Stefan Behnel stefan_ml at behnel.de
Tue Jul 31 16:40:46 EDT 2018


Antoine Pitrou schrieb am 31.07.2018 um 09:45:

On Tue, 31 Jul 2018 09:27:03 +0200 Jeroen Demeyer <J.Demeyer at UGent.be> wrote:

On 2018-07-31 08:58, Antoine Pitrou wrote:

I think Stefan is right that we should push people towards Cython and alternatives, rather than direct use of the C API (which people often fail to use correctly, in my experience).

I know this probably isn't the correct place to bring it up, but I'm sure that CPython itself could benefit from using Cython. For example, most of the C extensions in Modules/ could be written in Cython. We don't depend on any third-party Python modules. Adding a Cython dependency for CPython development would be a tough sell.

I don't really want to get into that discussion (it's more about processes than arguments), but let me note that the CPython development already has a couple of dependencies, such as github and its bots, or tools like argument clinic (admittedly included), make and a C compiler (not included), and a text editor. It's not like it's free of tools that help in writing and maintaining the code. That's pretty much the level at which I also see Cython. It's more complex than argument clinic, but it otherwise serves a similar need.

Also, a C extension can be built-in (linked statically into the interpreter), which I think would be hard to do with Cython.

Someone recently contributed a feature of hiding the pyinit function for the embedding case, so people do these things already. This could use the normal inittab mechanism, for example. What I think you might be referring to is that Cython modules require the CPython runtime to be initialised to a certain extent, so you couldn't implement "sys" in Cython, for example. But Jeroen is right, Cython should be a viable option for (most of?) the extension modules in the stdlib. Whether the CPython core devs would accept it in their workflow or not is a totally different question.

Stefan



More information about the Python-Dev mailing list