summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Include/cpython/import.h2
-rw-r--r--Include/cpython/pystate.h4
-rw-r--r--Misc/NEWS.d/next/C API/2022-02-24-13-13-16.bpo-46748.aG1zb3.rst2
-rw-r--r--Modules/_testcapimodule.c3
-rw-r--r--Python/frozen.c2
-rw-r--r--Tools/freeze/makefreeze.py4
6 files changed, 11 insertions, 6 deletions
diff --git a/Include/cpython/import.h b/Include/cpython/import.h
index c734802..ef6be68 100644
--- a/Include/cpython/import.h
+++ b/Include/cpython/import.h
@@ -32,7 +32,7 @@ struct _frozen {
const char *name; /* ASCII encoded string */
const unsigned char *code;
int size;
- bool is_package;
+ int is_package;
PyObject *(*get_code)(void);
};
diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h
index 8150d50..248320c 100644
--- a/Include/cpython/pystate.h
+++ b/Include/cpython/pystate.h
@@ -2,8 +2,6 @@
# error "this header file must not be included directly"
#endif
-#include <stdbool.h>
-
PyAPI_FUNC(int) _PyInterpreterState_RequiresIDRef(PyInterpreterState *);
PyAPI_FUNC(void) _PyInterpreterState_RequireIDRef(PyInterpreterState *, int);
@@ -93,7 +91,7 @@ struct _ts {
int _initialized;
/* Was this thread state statically allocated? */
- bool _static;
+ int _static;
int recursion_remaining;
int recursion_limit;
diff --git a/Misc/NEWS.d/next/C API/2022-02-24-13-13-16.bpo-46748.aG1zb3.rst b/Misc/NEWS.d/next/C API/2022-02-24-13-13-16.bpo-46748.aG1zb3.rst
new file mode 100644
index 0000000..b6b2db1
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2022-02-24-13-13-16.bpo-46748.aG1zb3.rst
@@ -0,0 +1,2 @@
+Python's public headers no longer import ``<stdbool.h>``, leaving code that
+embedd/extends Python free to define ``bool``, ``true`` and ``false``.
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index 0be42f3..6fa0cce 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -40,6 +40,9 @@
# error "_testcapi must test the public Python C API, not CPython internal C API"
#endif
+#ifdef bool
+# error "The public headers should not include <stdbool.h>, see bpo-46748"
+#endif
// Forward declarations
static struct PyModuleDef _testcapimodule;
diff --git a/Python/frozen.c b/Python/frozen.c
index c5b36f7..8a2a724 100644
--- a/Python/frozen.c
+++ b/Python/frozen.c
@@ -38,6 +38,8 @@
#include "Python.h"
#include "pycore_import.h"
+#include <stdbool.h>
+
/* Includes for frozen modules: */
/* End includes */
diff --git a/Tools/freeze/makefreeze.py b/Tools/freeze/makefreeze.py
index bc5f856..c464f4b 100644
--- a/Tools/freeze/makefreeze.py
+++ b/Tools/freeze/makefreeze.py
@@ -45,9 +45,9 @@ def makefreeze(base, dict, debug=0, entry_point=None, fail_import=()):
print("freezing", mod, "...")
str = marshal.dumps(m.__code__)
size = len(str)
- is_package = 'false'
+ is_package = '0'
if m.__path__:
- is_package = 'true'
+ is_package = '1'
done.append((mod, mangled, size, is_package))
writecode(outfp, mangled, str)
if debug: