]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-112026: Add again <unistd.h> include in Python.h (#112046)
authorVictor Stinner <vstinner@python.org>
Wed, 15 Nov 2023 15:59:32 +0000 (16:59 +0100)
committerGitHub <noreply@github.com>
Wed, 15 Nov 2023 15:59:32 +0000 (16:59 +0100)
Add again <ctype.h> and <unistd.h> includes in Python.h, but don't
include them in the limited C API version 3.13 and newer.

Doc/whatsnew/3.13.rst
Include/Python.h
Misc/NEWS.d/next/C API/2023-11-13-17-57-11.gh-issue-112026.WJLJcI.rst [new file with mode: 0644]

index 136fe901ce39fb87e354938a6011bc5a13d72c84..b64cfc51f75701b253787a30e173238857b0765b 100644 (file)
@@ -1191,17 +1191,6 @@ 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: ``read()``, ``write()``, ``close()``, ``isatty()``, ``lseek()``,
-  ``getpid()``, ``getcwd()``, ``sysconf()``, ``getpagesize()``, ``alarm()`` and
-  ``pause()``.
-  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.
-  (Contributed by Victor Stinner in :gh:`108765`.)
-
 * ``Python.h`` no longer includes these standard header files: ``<time.h>``,
   ``<sys/select.h>`` and ``<sys/time.h>``. If needed, they should now be
   included explicitly. For example, ``<time.h>`` provides the ``clock()`` and
@@ -1210,13 +1199,6 @@ Porting to Python 3.13
   and ``setitimer()`` functions.
   (Contributed by Victor Stinner in :gh:`108765`.)
 
-* ``Python.h`` no longer includes the ``<ctype.h>`` standard header file. If
-  needed, it should now be included explicitly. For example, it provides
-  ``isalpha()`` and ``tolower()`` functions which are locale dependent. Python
-  provides locale independent functions, like :c:func:`!Py_ISALPHA` and
-  :c:func:`!Py_TOLOWER`.
-  (Contributed by Victor Stinner in :gh:`108765`.)
-
 * If the :c:macro:`Py_LIMITED_API` macro is defined, :c:macro:`!Py_BUILD_CORE`,
   :c:macro:`!Py_BUILD_CORE_BUILTIN` and :c:macro:`!Py_BUILD_CORE_MODULE` macros
   are now undefined by ``<Python.h>``.
index a1f26afbb12256ddc67802e215ee2856c402fba3..196751c3201e620aedfbb6cfb62cadc4066fcb4d 100644 (file)
 #  include <sys/types.h>          // ssize_t
 #endif
 
-// 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.
+// <errno.h>, <stdio.h>, <stdlib.h> and <string.h> headers are no longer used
+// by Python, but kept for the backward compatibility of existing third party C
+// extensions. They are not included by limited C API version 3.11 and newer.
+//
+// The <ctype.h> and <unistd.h> headers are not included by limited C API
+// version 3.13 and newer.
 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
 #  include <errno.h>              // errno
 #  include <stdio.h>              // FILE*
 #  include <stdlib.h>             // getenv()
 #  include <string.h>             // memcpy()
 #endif
+#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030d0000
+#  include <ctype.h>              // tolower()
+#  ifndef MS_WINDOWS
+#    include <unistd.h>           // close()
+#  endif
+#endif
 
 
 // Include Python header files
diff --git a/Misc/NEWS.d/next/C API/2023-11-13-17-57-11.gh-issue-112026.WJLJcI.rst b/Misc/NEWS.d/next/C API/2023-11-13-17-57-11.gh-issue-112026.WJLJcI.rst
new file mode 100644 (file)
index 0000000..deb82ff
--- /dev/null
@@ -0,0 +1,3 @@
+Add again ``<ctype.h>`` and ``<unistd.h>`` includes in ``Python.h``, but
+don't include them in the limited C API version 3.13 and newer. Patch by
+Victor Stinner.