classification
Title: cpython/abstract.h not compatible with C90
Type: Stage: resolved
Components: Interpreter Core Versions: Python 3.9
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: benjamin.peterson, eric.smith, petere, serhiy.storchaka
Priority: normal Keywords: patch

Created on 2020-02-12 11:55 by petere, last changed 2020-03-24 10:30 by petere. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 18481 merged petere, 2020-02-12 11:55
Messages (7)
msg361880 - (view) Author: Peter Eisentraut (petere) * Date: 2020-02-12 11:55
Some inline functions use mixed declarations and code.  These end up visible in third-party code that includes Python.h, which might not be using a C99 compiler.

Example:

In file included from /Users/peter/python-builds/3.9/include/python3.9/abstract.h:843,
                 from /Users/peter/python-builds/3.9/include/python3.9/Python.h:147,
                 from plpython.h:59,
                 from plpy_typeio.h:10,
                 from plpy_cursorobject.h:8,
                 from plpy_cursorobject.c:14:
/Users/peter/python-builds/3.9/include/python3.9/cpython/abstract.h:74:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
   74 |     Py_ssize_t offset = tp->tp_vectorcall_offset;
      |     ^~~~~~~~~~
msg361884 - (view) Author: Eric V. Smith (eric.smith) * (Python committer) Date: 2020-02-12 12:15
PEP 7 says that this is allowed:

Python versions greater than or equal to 3.6 use C89 with several select C99 features:
...
- intermingled declarations

So I don't think these changes should be accepted.
msg361914 - (view) Author: Peter Eisentraut (petere) * Date: 2020-02-12 20:50
That's fair for code internal to CPython itself, but these are header files included by third-party code that is embedding Python, so a bit more flexibility and adaptability would be welcome there.
msg361915 - (view) Author: Eric V. Smith (eric.smith) * (Python committer) Date: 2020-02-12 20:56
I'd suggest mentioning this on python-dev, if you want to change the policy.
msg361928 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2020-02-13 02:00
C99 is not disallowed in headers.
msg364153 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2020-03-14 11:46
I think we should distinguish minimal supported C standard for compiling CPython itself and for compiling extensions. We can use all C99 features supported by main compilers in the code of CPython, but C99 is not even compatible with C++, and it may be not compatible with extensions written in other languages (D, Rust, Go, etc), so I think we should use more restricted version in headers.
msg364923 - (view) Author: Peter Eisentraut (petere) * Date: 2020-03-24 10:30
3.9.0a5 fixes my original issue.  Thanks.
History
Date User Action Args
2020-03-24 10:30:42peteresetmessages: + msg364923
2020-03-14 11:46:38serhiy.storchakasetnosy: + serhiy.storchaka
messages: + msg364153
2020-02-13 02:00:28benjamin.petersonsetstatus: open -> closed

nosy: + benjamin.peterson
messages: + msg361928

resolution: not a bug
stage: patch review -> resolved
2020-02-12 20:56:06eric.smithsetmessages: + msg361915
2020-02-12 20:50:01peteresetmessages: + msg361914
2020-02-12 12:15:42eric.smithsetnosy: + eric.smith
messages: + msg361884
2020-02-12 11:55:33peteresetkeywords: + patch
stage: patch review
pull_requests: + pull_request17851
2020-02-12 11:55:07peterecreate