summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/whatsnew/3.13.rst18
-rw-r--r--Include/Python.h15
-rw-r--r--Misc/NEWS.d/next/C API/2023-11-13-17-57-11.gh-issue-112026.WJLJcI.rst3
3 files changed, 15 insertions, 21 deletions
diff --git a/Doc/whatsnew/3.13.rst b/Doc/whatsnew/3.13.rst
index 136fe90..b64cfc5 100644
--- a/Doc/whatsnew/3.13.rst
+++ b/Doc/whatsnew/3.13.rst
@@ -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>``.
diff --git a/Include/Python.h b/Include/Python.h
index a1f26af..196751c 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -26,15 +26,24 @@
# 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
index 0000000..deb82ff
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2023-11-13-17-57-11.gh-issue-112026.WJLJcI.rst
@@ -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.