On 06/06/2016 10:11 AM, Guido van Rossum wrote:
On Mon, Jun 6, 2016 at 4:23 AM, Sturla Molden <sturla.molden@gmail.com> wrote:
Guido van Rossum <guido@python.org> wrote:
I'm not sure I meant that. But if I have a 3rd party extension that compiles with 3.5 headers using C89, then it should still compile with 3.6 headers using C99. Also if I compile it for 3.5 and it only uses the ABI it should still be linkable with 3.6.
Ok, but if third-party developers shall be free to use a C89 compiler for their own code, we cannot have C99 in the include files. Otherwise the include files will taint the C89 purity of their source code.
Well, they should use the right compiler for the Python version they are targeting. I'm just saying that they can't afford C99 features in their own code. Not even to call C/Python APIs. I think it would be okay if e.g. Py_INCREF was an inline function in Python 3.6, as long as the way you use it remains the same.
Right. So we could use C99 features in 3.6 .h files, as long as the same extension module, unmodified, could be compiled with 3.5 .h files with a 3.5 approved (C89) compiler, and also with a 3.6 approved (C99) compiler. The headers would be different, but so would the compilers. It's the extension module source code that must be the same in the two scenarios. We're not saying that an extension module must compile with a C89 compiler under 3.6. Eric.