Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.4k
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 ourterms of service andprivacy 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
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 commentedOct 22, 2023
breaks signalmodule.c |
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 commentedOct 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. |
Hum, in fact, <unistd.h> is included indirectly by pycore_pythread.h. But well, I wrote PR#111402 to make it extra clear. |
jibal commentedOct 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. |
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 tohttps://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.Seepython/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 tohttps://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.Seepython/cpython#108783 .
Uh oh!
There was an error while loading.Please reload this page.
📚 Documentation preview 📚:https://cpython-previews--108783.org.readthedocs.build/