8000 gh-108765: Python.h no longer includes <unistd.h> by vstinner · Pull Request #108783 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

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

Merged
merged 1 commit into from
Sep 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Doc/whatsnew/3.13.rst
Original file line number Diff line number Diff line change
Expand Up @@ -921,6 +921,11 @@ Porting to Python 3.13
also the ``HAVE_IEEEFP_H`` macro.
(Contributed by Victor Stinner in :gh:`108765`.)

* ``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: ``close()``, ``getpagesize()``, ``getpid()`` and ``sysconf()``.
(Contributed by Victor Stinner in :gh:`108765`.)

Deprecated
----------

Expand Down
11 changes: 5 additions & 6 deletions Include/Python.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,13 @@
#ifdef HAVE_STDDEF_H
# include <stddef.h> // size_t
#endif
#ifndef MS_WINDOWS
# include <unistd.h> // sysconf()
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h> // ssize_t
#endif

// errno.h, stdio.h, stdlib.h and string.h headers are no longer used by Python
// headers, but kept for backward compatibility (no introduce new compiler
// warnings). They are not included by the limited C API version 3.11 and
// above.
// errno.h, stdio.h, stdlib.h and string.h headers are no longer used by
// Python, but kept for backward compatibility (avoid compiler warnings).
// They are no longer included by limited C API version 3.11 and newer.
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
# include <errno.h> // errno
# include <stdio.h> // FILE*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
``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: ``close()``, ``getpagesize()``, ``getpid()`` and ``sysconf()``.
Patch by Victor Stinner.
13 changes: 7 additions & 6 deletions Modules/_ctypes/malloc_closure.c
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
#ifndef Py_BUILD_CORE_BUILTIN
# define Py_BUILD_CORE_MODULE 1
#endif

#include <Python.h>
#include <ffi.h>
#ifdef MS_WIN32
#include <windows.h>
# include <windows.h>
#else
#include <sys/mman.h>
#include <unistd.h>
# if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
# define MAP_ANONYMOUS MAP_ANON
# endif
# include <sys/mman.h>
# include <unistd.h> // sysconf()
# if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
# define MAP_ANONYMOUS MAP_ANON
# endif
#endif
#include "ctypes.h"

Expand Down
22 changes: 11 additions & 11 deletions Modules/_posixsubprocess.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,28 @@
#include "pycore_pystate.h"
#include "pycore_signal.h" // _Py_RestoreSignals()
#if defined(HAVE_PIPE2) && !defined(_GNU_SOURCE)
# define _GNU_SOURCE
# define _GNU_SOURCE
#endif
#include <unistd.h>
#include <fcntl.h>
#include <unistd.h> // close()
#include <fcntl.h> // fcntl()
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
# include <sys/types.h>
#endif
#if defined(HAVE_SYS_STAT_H)
#include <sys/stat.h>
# include <sys/stat.h> // s 8000 tat()
#endif
#ifdef HAVE_SYS_SYSCALL_H
#include <sys/syscall.h>
# include <sys/syscall.h>
#endif
#if defined(HAVE_SYS_RESOURCE_H)
#include <sys/resource.h>
# include <sys/resource.h>
#endif
#ifdef HAVE_DIRENT_H
#include <dirent.h>
# include <dirent.h> // opendir()
#endif
#if defined(HAVE_SETGROUPS)
# include <grp.h> // setgroups()
#endif
#ifdef HAVE_GRP_H
#include <grp.h>
#endif /* HAVE_GRP_H */

#include "posixmodule.h"

Expand Down
3 changes: 0 additions & 3 deletions Modules/_testcapimodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,6 @@
#include <float.h> // FLT_MAX
#include <signal.h>
#include <stddef.h> // offsetof()
#ifndef MS_WINDOWS
# include <unistd.h>
#endif

#ifdef HAVE_SYS_WAIT_H
# include <sys/wait.h> // W_STOPCODE
Expand Down
3 changes: 2 additions & 1 deletion Modules/grpmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
#include "Python.h"
#include "posixmodule.h"

#include <grp.h>
#include <grp.h> // getgrgid_r()
#include <unistd.h> // sysconf()

#include "clinic/grpmodule.c.h"
/*[clinic input]
Expand Down
3 changes: 3 additions & 0 deletions Modules/mmapmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@
#include "pycore_fileutils.h" // _Py_stat_struct

#include <stddef.h> // offsetof()
#ifndef MS_WINDOWS
# include <unistd.h> // close()
#endif

// to support MS_WINDOWS_SYSTEM OpenFileMappingA / CreateFileMappingA
// need to be replaced with OpenFileMappingW / CreateFileMappingW
Expand Down
2 changes: 1 addition & 1 deletion Modules/posixmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ corresponding Unix manual entries for more information on calls.");
#endif

#ifdef HAVE_COPY_FILE_RANGE
# include <unistd.h>
# include <unistd.h> // copy_ F438 file_range()
#endif

#if !defined(CPU_ALLOC) && defined(HAVE_SCHED_SETAFFINITY)
Expand Down
3 changes: 2 additions & 1 deletion Modules/pwdmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
#include "Python.h"
#include "posixmodule.h"

#include <pwd.h>
#include <pwd.h> // getpwuid()
#include <unistd.h> // sysconf()

#include "clinic/pwdmodule.c.h"
/*[clinic input]
Expand Down
11 changes: 5 additions & 6 deletions Modules/resource.c
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@

#include "Python.h"
#include <sys/resource.h>
#include <errno.h> // errno
#include <string.h>
#include <sys/resource.h> // getrusage()
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
# include <sys/time.h>
#endif
#include <time.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <unistd.h> // getpagesize()

/* On some systems, these aren't in any header file.
On others they are, with inconsistent prototypes.
Expand Down
3 changes: 3 additions & 0 deletions Modules/selectmodule.c