Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 34k
gh-108765: Python.h no longer includes <unistd.h>#108783
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Conversation
vstinner commented Sep 1, 2023 • edited by github-actions bot
Loading Uh oh!
There was an error while loading. Please reload this page.
edited by github-actions bot
Uh oh!
There was an error while loading. Please reload this page.
543f991 to f2f1abeComparevstinner commented Sep 2, 2023
I merged my PR. If it causes too many trouble in 3rd party C extensions (require to update too many C extensions before Python 3.13 beta1), I can make this change conditional only in the limited C API version 3.13, as I did for other headers in I consider that |
jibal commented Oct 22, 2023
breaks signalmodule.c |
vstinner commented Oct 22, 2023
Would you mind to elaborate your comment "a little bit"? What is broken? Is it a build issue? On which Python version? On which OS (name, version) and compiler (name, version)? |
jibal commented Oct 22, 2023
signalmodule.c calls pause() and alarm() (under #ifdef HAVE_{PAUSE,ALARM} guards), which are defined in unistd.h On the Python version where you deleted unistd.h from Python.h, of course. |
vstinner commented Oct 27, 2023
Hum, in fact, <unistd.h> is included indirectly by pycore_pythread.h. But well, I wrote PR #111402 to make it extra clear. |
jibal commented Oct 27, 2023 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
Which is not necessarily included when signalmodule.c is compiled ... it wasn't in my build. (Which I've abandoned ... I never actually intended to build the top of tree.)
Seems like the right thing to do. |
vstinner commented Oct 27, 2023
You didn't reply to my question about OS and compiler... Also, pycore_pythread.h was modified recently. |
This fixes the following compilation error with Python 3.13.0a1: ``` c-ext/backend_c.c:275:13: error: implicit declaration of function ‘sysconf’; did you mean ‘sscanf’? [-Werror=implicit-function-declaration] 275 | count = sysconf(_SC_NPROCESSORS_ONLN); | ^~~~~~~ | sscanf ``` According to https://docs.python.org/3.13/whatsnew/3.13.html: Python.h no longer includes the <unistd.h> standard header file. If needed, it should now be included explicitly. For example, it provides the functions: read(), write(), close(), isatty(), lseek(), getpid(), getcwd(), sysconf() and getpagesize(). As a consequence, _POSIX_SEMAPHORES and _POSIX_THREADS macros are no longer defined by Python.h. The HAVE_UNISTD_H and HAVE_PTHREAD_H macros defined by Python.h can be used to decide if <unistd.h> and <pthread.h> header files can be included. See python/cpython#108783 .
This fixes the following compilation error with Python 3.13.0a1: ``` c-ext/backend_c.c:275:13: error: implicit declaration of function ‘sysconf’; did you mean ‘sscanf’? [-Werror=implicit-function-declaration] 275 | count = sysconf(_SC_NPROCESSORS_ONLN); | ^~~~~~~ | sscanf ``` According to https://docs.python.org/3.13/whatsnew/3.13.html: Python.h no longer includes the <unistd.h> standard header file. If needed, it should now be included explicitly. For example, it provides the functions: read(), write(), close(), isatty(), lseek(), getpid(), getcwd(), sysconf() and getpagesize(). As a consequence, _POSIX_SEMAPHORES and _POSIX_THREADS macros are no longer defined by Python.h. The HAVE_UNISTD_H and HAVE_PTHREAD_H macros defined by Python.h can be used to decide if <unistd.h> and <pthread.h> header files can be included. See python/cpython#108783 .
📚 Documentation preview 📚: https://cpython-previews--108783.org.readthedocs.build/