]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864)
authorHugo van Kemenade <hugovk@users.noreply.github.com>
Mon, 20 Nov 2023 13:52:00 +0000 (15:52 +0200)
committerGitHub <noreply@github.com>
Mon, 20 Nov 2023 13:52:00 +0000 (15:52 +0200)
Rename Py_NOGIL to Py_GIL_DISABLED

39 files changed:
Include/cpython/pystate.h
Include/internal/pycore_critical_section.h
Include/internal/pycore_importdl.h
Include/internal/pycore_lock.h
Include/internal/pycore_object.h
Include/object.h
Lib/sysconfig/__init__.py
Lib/test/libregrtest/utils.py
Lib/test/pythoninfo.py
Lib/test/support/__init__.py
Lib/test/test_cppext/__init__.py
Lib/test/test_importlib/test_windows.py
Lib/test/test_sys.py
Misc/NEWS.d/next/C_API/2023-11-08-20-28-03.gh-issue-111863.RPeFAX.rst [new file with mode: 0644]
Modules/_ctypes/_ctypes_test.c
Modules/_multiprocessing/posixshmem.c
Modules/_scproxy.c
Modules/_stat.c
Modules/_sysconfig.c
Modules/_testcapi/heaptype_relative.c
Modules/_testcapi/vectorcall_limited.c
Modules/_testclinic_limited.c
Modules/_testimportmultiple.c
Modules/_testinternalcapi/test_critical_sections.c
Modules/_uuidmodule.c
Modules/errnomodule.c
Modules/hashlib.h
Modules/resource.c
Modules/xxlimited.c
Modules/xxlimited_35.c
Objects/object.c
PC/winsound.c
PCbuild/pyproject.props
Python/ceval.c
Python/lock.c
Python/pystate.c
configure
configure.ac
pyconfig.h.in

index 34e23830f27e7763e9e837dca2f2a08826675231..56172d231c44f4e9ea442ba068f2f080827215f1 100644 (file)
@@ -151,7 +151,7 @@ struct _ts {
 
     /* Tagged pointer to top-most critical section, or zero if there is no
      * active critical section. Critical sections are only used in
-     * `--disable-gil` builds (i.e., when Py_NOGIL is defined to 1). In the
+     * `--disable-gil` builds (i.e., when Py_GIL_DISABLED is defined to 1). In the
      * default build, this field is always zero.
      */
     uintptr_t critical_section;
index 73c2e243f20bcc03bba326d309ea61f3186a6f93..bf2bbfffc38bd0fc12407d8049be0fcb8c03fc90 100644 (file)
@@ -86,7 +86,7 @@ extern "C" {
 #define _Py_CRITICAL_SECTION_TWO_MUTEXES    0x2
 #define _Py_CRITICAL_SECTION_MASK           0x3
 
-#ifdef Py_NOGIL
+#ifdef Py_GIL_DISABLED
 # define Py_BEGIN_CRITICAL_SECTION(op)                                  \
     {                                                                   \
         _PyCriticalSection _cs;                                         \
@@ -104,13 +104,13 @@ extern "C" {
 # define Py_END_CRITICAL_SECTION2()                                     \
         _PyCriticalSection2_End(&_cs2);                                 \
     }
-#else  /* !Py_NOGIL */
+#else  /* !Py_GIL_DISABLED */
 // The critical section APIs are no-ops with the GIL.
 # define Py_BEGIN_CRITICAL_SECTION(op)
 # define Py_END_CRITICAL_SECTION()
 # define Py_BEGIN_CRITICAL_SECTION2(a, b)
 # define Py_END_CRITICAL_SECTION2()
-#endif  /* !Py_NOGIL */
+#endif  /* !Py_GIL_DISABLED */
 
 typedef struct {
     // Tagged pointer to an outer active critical section (or 0).
index dee64241c763f3b4d102ad71f7a726b2703debdf..c8583582b358ac116ea9cdb034f94ade5a8070be 100644 (file)
@@ -31,7 +31,7 @@ typedef FARPROC dl_funcptr;
 #  define PYD_DEBUG_SUFFIX ""
 #endif
 
-#ifdef Py_NOGIL
+#ifdef Py_GIL_DISABLED
 #  define PYD_THREADING_TAG "t"
 #else
 #  define PYD_THREADING_TAG ""
index 25c3cf5377b7780a2c79bc2125ebc0eec1f95253..f135cbbc3754fba63baee8bcd65d406cdbff6c19 100644 (file)
@@ -33,11 +33,11 @@ extern "C" {
 //   ...
 //   PyMutex_Unlock(&m);
 
-// NOTE: In Py_NOGIL builds, `struct _PyMutex` is defined in Include/object.h.
-// The Py_NOGIL builds need the definition in Include/object.h for the
+// NOTE: In Py_GIL_DISABLED builds, `struct _PyMutex` is defined in Include/object.h.
+// The Py_GIL_DISABLED builds need the definition in Include/object.h for the
 // `ob_mutex` field in PyObject. For the default (non-free-threaded) build,
 // we define the struct here to avoid exposing it in the public API.
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 struct _PyMutex { uint8_t v; };
 #endif
 
index 206d8a5d4cc5e13387fecab4e725bb42326b63bb..f413b8451e5ab496e49dd6fae696cc0f90b2175c 100644 (file)
@@ -54,7 +54,7 @@ PyAPI_FUNC(int) _PyObject_IsFreed(PyObject *);
    Furthermore, we can't use designated initializers in Extensions since these
    are not supported pre-C++20. Thus, keeping an internal copy here is the most
    backwards compatible solution */
-#if defined(Py_NOGIL)
+#if defined(Py_GIL_DISABLED)
 #define _PyObject_HEAD_INIT(type)                   \
     {                                               \
         .ob_ref_local = _Py_IMMORTAL_REFCNT_LOCAL,  \
@@ -103,7 +103,7 @@ static inline void _Py_RefcntAdd(PyObject* op, Py_ssize_t n)
 #ifdef Py_REF_DEBUG
     _Py_AddRefTotal(_PyInterpreterState_GET(), n);
 #endif
-#if !defined(Py_NOGIL)
+#if !defined(Py_GIL_DISABLED)
     op->ob_refcnt += n;
 #else
     if (_Py_IsOwnedByCurrentThread(op)) {
@@ -128,7 +128,7 @@ static inline void _Py_RefcntAdd(PyObject* op, Py_ssize_t n)
 static inline void _Py_SetImmortal(PyObject *op)
 {
     if (op) {
-#ifdef Py_NOGIL
+#ifdef Py_GIL_DISABLED
         op->ob_tid = _Py_UNOWNED_TID;
         op->ob_ref_local = _Py_IMMORTAL_REFCNT_LOCAL;
         op->ob_ref_shared = 0;
@@ -145,7 +145,7 @@ static inline void _Py_SetMortal(PyObject *op, Py_ssize_t refcnt)
 {
     if (op) {
         assert(_Py_IsImmortal(op));
-#ifdef Py_NOGIL
+#ifdef Py_GIL_DISABLED
         op->ob_tid = _Py_UNOWNED_TID;
         op->ob_ref_local = 0;
         op->ob_ref_shared = _Py_REF_SHARED(refcnt, _Py_REF_MERGED);
@@ -169,7 +169,7 @@ static inline void _Py_ClearImmortal(PyObject *op)
         op = NULL; \
     } while (0)
 
-#if !defined(Py_NOGIL)
+#if !defined(Py_GIL_DISABLED)
 static inline void
 _Py_DECREF_SPECIALIZED(PyObject *op, const destructor destruct)
 {
@@ -210,7 +210,7 @@ _Py_DECREF_NO_DEALLOC(PyObject *op)
 }
 
 #else
-// TODO: implement Py_DECREF specializations for Py_NOGIL build
+// TODO: implement Py_DECREF specializations for Py_GIL_DISABLED build
 static inline void
 _Py_DECREF_SPECIALIZED(PyObject *op, const destructor destruct)
 {
@@ -238,7 +238,7 @@ _Py_REF_IS_QUEUED(Py_ssize_t ob_ref_shared)
 // Merge the local and shared reference count fields and add `extra` to the
 // refcount when merging.
 Py_ssize_t _Py_ExplicitMergeRefcount(PyObject *op, Py_ssize_t extra);
-#endif // !defined(Py_NOGIL)
+#endif // !defined(Py_GIL_DISABLED)
 
 #ifdef Py_REF_DEBUG
 #  undef _Py_DEC_REFTOTAL
index 061b5093fb1a350bdf804ad0d3d217da17d86043..6b70a4948444767392e5eabc4d1bab65511eafea 100644 (file)
@@ -106,9 +106,9 @@ check by comparing the reference count field to the immortality reference count.
 #define _Py_IMMORTAL_REFCNT (UINT_MAX >> 2)
 #endif
 
-// Py_NOGIL builds indicate immortal objects using `ob_ref_local`, which is
+// Py_GIL_DISABLED builds indicate immortal objects using `ob_ref_local`, which is
 // always 32-bits.
-#ifdef Py_NOGIL
+#ifdef Py_GIL_DISABLED
 #define _Py_IMMORTAL_REFCNT_LOCAL UINT32_MAX
 #endif
 
@@ -117,7 +117,7 @@ check by comparing the reference count field to the immortality reference count.
 
 // Make all internal uses of PyObject_HEAD_INIT immortal while preserving the
 // C-API expectation that the refcnt will be set to 1.
-#if defined(Py_NOGIL)
+#if defined(Py_GIL_DISABLED)
 #define PyObject_HEAD_INIT(type)    \
     {                               \
         0,                          \
@@ -162,7 +162,7 @@ check by comparing the reference count field to the immortality reference count.
  * by hand.  Similarly every pointer to a variable-size Python object can,
  * in addition, be cast to PyVarObject*.
  */
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 struct _object {
 #if (defined(__GNUC__) || defined(__clang__)) \
         && !(defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L)
@@ -238,7 +238,7 @@ typedef struct {
 PyAPI_FUNC(int) Py_Is(PyObject *x, PyObject *y);
 #define Py_Is(x, y) ((x) == (y))
 
-#if defined(Py_NOGIL) && !defined(Py_LIMITED_API)
+#if defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API)
 static inline uintptr_t
 _Py_ThreadId(void)
 {
@@ -275,7 +275,7 @@ _Py_IsOwnedByCurrentThread(PyObject *ob)
 #endif
 
 static inline Py_ssize_t Py_REFCNT(PyObject *ob) {
-#if !defined(Py_NOGIL)
+#if !defined(Py_GIL_DISABLED)
     return ob->ob_refcnt;
 #else
     uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
@@ -316,7 +316,7 @@ static inline Py_ssize_t Py_SIZE(PyObject *ob) {
 
 static inline Py_ALWAYS_INLINE int _Py_IsImmortal(PyObject *op)
 {
-#if defined(Py_NOGIL)
+#if defined(Py_GIL_DISABLED)
     return op->ob_ref_local == _Py_IMMORTAL_REFCNT_LOCAL;
 #elif SIZEOF_VOID_P > 4
     return _Py_CAST(PY_INT32_T, op->ob_refcnt) < 0;
@@ -350,7 +350,7 @@ static inline void Py_SET_REFCNT(PyObject *ob, Py_ssize_t refcnt) {
     if (_Py_IsImmortal(ob)) {
         return;
     }
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
     ob->ob_refcnt = refcnt;
 #else
     if (_Py_IsOwnedByCurrentThread(ob)) {
@@ -367,7 +367,7 @@ static inline void Py_SET_REFCNT(PyObject *ob, Py_ssize_t refcnt) {
         ob->ob_ref_local = 0;
         ob->ob_ref_shared = _Py_REF_SHARED(refcnt, _Py_REF_MERGED);
     }
-#endif  // Py_NOGIL
+#endif  // Py_GIL_DISABLED
 #endif  // Py_LIMITED_API+0 < 0x030d0000
 }
 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
@@ -746,7 +746,7 @@ static inline Py_ALWAYS_INLINE void Py_INCREF(PyObject *op)
 #else
     // Non-limited C API and limited C API for Python 3.9 and older access
     // directly PyObject.ob_refcnt.
-#if defined(Py_NOGIL)
+#if defined(Py_GIL_DISABLED)
     uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
     uint32_t new_local = local + 1;
     if (new_local == 0) {
@@ -784,7 +784,7 @@ static inline Py_ALWAYS_INLINE void Py_INCREF(PyObject *op)
 #endif
 
 
-#if !defined(Py_LIMITED_API) && defined(Py_NOGIL)
+#if !defined(Py_LIMITED_API) && defined(Py_GIL_DISABLED)
 // Implements Py_DECREF on objects not owned by the current thread.
 PyAPI_FUNC(void) _Py_DecRefShared(PyObject *);
 PyAPI_FUNC(void) _Py_DecRefSharedDebug(PyObject *, const char *, int);
@@ -810,7 +810,7 @@ static inline void Py_DECREF(PyObject *op) {
 }
 #define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
 
-#elif defined(Py_NOGIL) && defined(Py_REF_DEBUG)
+#elif defined(Py_GIL_DISABLED) && defined(Py_REF_DEBUG)
 static inline void Py_DECREF(const char *filename, int lineno, PyObject *op)
 {
     uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
@@ -835,7 +835,7 @@ static inline void Py_DECREF(const char *filename, int lineno, PyObject *op)
 }
 #define Py_DECREF(op) Py_DECREF(__FILE__, __LINE__, _PyObject_CAST(op))
 
-#elif defined(Py_NOGIL)
+#elif defined(Py_GIL_DISABLED)
 static inline void Py_DECREF(PyObject *op)
 {
     uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
index 68d30c0f9e618f15901424f1e20c3b2d8f4d1213..2a7fa45be079de7afe78412a8a95935c579912ff 100644 (file)
@@ -348,7 +348,7 @@ def _init_non_posix(vars):
     vars['BINLIBDEST'] = get_path('platstdlib')
     vars['INCLUDEPY'] = get_path('include')
 
-    # Add EXT_SUFFIX, SOABI, and Py_NOGIL
+    # Add EXT_SUFFIX, SOABI, and Py_GIL_DISABLED
     vars.update(_sysconfig.config_vars())
 
     vars['LIBDIR'] = _safe_realpath(os.path.join(get_config_var('installed_base'), 'libs'))
index bd4dce3400f0a933e39c5a0318a9326a2477ecfa..e4a28af381ee2da1d8166bad3d0e1dda4e8db30f 100644 (file)
@@ -290,7 +290,7 @@ def get_build_info():
     build = []
 
     # --disable-gil
-    if sysconfig.get_config_var('Py_NOGIL'):
+    if sysconfig.get_config_var('Py_GIL_DISABLED'):
         build.append("nogil")
 
     if hasattr(sys, 'gettotalrefcount'):
index 3a91a7dbc650216beb333ad25ad8da26662b47e9..49e41ca6cdaf98cc6103eb28c01a52633881d143 100644 (file)
@@ -517,7 +517,7 @@ def collect_sysconfig(info_add):
         'PY_STDMODULE_CFLAGS',
         'Py_DEBUG',
         'Py_ENABLE_SHARED',
-        'Py_NOGIL',
+        'Py_GIL_DISABLED',
         'SHELL',
         'SOABI',
         'abs_builddir',
index bb9f998db4622b559c85fd7c1231f6f2f5a4bdfc..eec5498e633eb68ad4d5fda931abc16893282812 100644 (file)
@@ -796,7 +796,7 @@ def check_cflags_pgo():
     return any(option in cflags_nodist for option in pgo_options)
 
 
-if sysconfig.get_config_var('Py_NOGIL'):
+if sysconfig.get_config_var('Py_GIL_DISABLED'):
     _header = 'PHBBInP'
 else:
     _header = 'nP'
index 4d9ee3cb2228aee553e8be0264451f0acaa53258..299a16ada2e32efab0212bbe932e3a80e97522e0 100644 (file)
@@ -15,7 +15,7 @@ SETUP = os.path.join(os.path.dirname(__file__), 'setup.py')
 
 # gh-110119: pip does not currently support 't' in the ABI flag use by
 # --disable-gil builds. Once it does, we can remove this skip.
-@unittest.skipIf(sysconfig.get_config_var('Py_NOGIL') == 1,
+@unittest.skipIf(sysconfig.get_config_var('Py_GIL_DISABLED') == 1,
                  'test does not work with --disable-gil')
 @support.requires_subprocess()
 class TestCPPExt(unittest.TestCase):
index a60a4c4cebcf1ab4243e9bfaf300e32736e52c36..d25133240b1afdbabc503da1db2edf427b05f2c9 100644 (file)
@@ -112,7 +112,7 @@ class WindowsRegistryFinderTests:
 class WindowsExtensionSuffixTests:
     def test_tagged_suffix(self):
         suffixes = self.machinery.EXTENSION_SUFFIXES
-        abi_flags = "t" if sysconfig.get_config_var("Py_NOGIL") else ""
+        abi_flags = "t" if sysconfig.get_config_var("Py_GIL_DISABLED") else ""
         ver = sys.version_info
         platform = re.sub('[^a-zA-Z0-9]', '_', get_platform())
         expected_tag = f".cp{ver.major}{ver.minor}{abi_flags}-{platform}.pyd"
index b111962abdcdc32c76cbb20c4d78dadfc20eb2bf..ae73f5a7de7421dd9619c44e47a113a4aac81b2e 100644 (file)
@@ -1209,7 +1209,7 @@ class SysModuleTest(unittest.TestCase):
     @unittest.skipUnless(hasattr(sys, 'abiflags'), 'need sys.abiflags')
     def test_disable_gil_abi(self):
         abi_threaded = 't' in sys.abiflags
-        py_nogil = (sysconfig.get_config_var('Py_NOGIL') == 1)
+        py_nogil = (sysconfig.get_config_var('Py_GIL_DISABLED') == 1)
         self.assertEqual(py_nogil, abi_threaded)
 
 
diff --git a/Misc/NEWS.d/next/C_API/2023-11-08-20-28-03.gh-issue-111863.RPeFAX.rst b/Misc/NEWS.d/next/C_API/2023-11-08-20-28-03.gh-issue-111863.RPeFAX.rst
new file mode 100644 (file)
index 0000000..9e9145c
--- /dev/null
@@ -0,0 +1 @@
+Rename ``Py_NOGIL`` to ``Py_GIL_DISABLED``. Patch by Hugo van Kemenade.
index 5869d8f952d1843eaa311bac442c1b5b54539045..d33e6fc7586d286d1c61f973e1869a80b629306f 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 // Need limited C API version 3.12 for Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
 #define Py_LIMITED_API 0x030c0000
 #endif
index cd08a9fedc057849af1dbd75677771cdffb22c2b..425ce10075c15655ceb7ecf6744dc422159a97a5 100644 (file)
@@ -2,9 +2,9 @@
 posixshmem - A Python extension that provides shm_open() and shm_unlink()
 */
 
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 // Need limited C API version 3.12 for Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
 #define Py_LIMITED_API 0x030c0000
 #endif
index 9f7a65c91e2d337d346dd205561a3b3f03bea43b..7920d2c2b8739dd4f56d5e0cd8602ac93da26aa8 100644 (file)
@@ -4,10 +4,10 @@
  */
 
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 // Need limited C API version 3.12 for Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
 #define Py_LIMITED_API 0x030c0000
 #endif
index 9e278d6dcd1589d1715f271521e740db340eb54e..1ef1e97f4b7dcaec9a3a7929f8712bc3f20e7f4d 100644 (file)
  */
 
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 // Need limited C API version 3.13 for PyModule_Add() on Windows
 #define Py_LIMITED_API 0x030d0000
 #endif
index 6f1cc16b58467d6cc6c6deb7da3e2d65b3cc761a..2918913c18ed1e97fef0d3733a0e31ba57e5860f 100644 (file)
@@ -57,12 +57,12 @@ _sysconfig_config_vars_impl(PyObject *module)
     }
 #endif
 
-#ifdef Py_NOGIL
+#ifdef Py_GIL_DISABLED
     PyObject *py_nogil = _PyLong_GetOne();
 #else
     PyObject *py_nogil = _PyLong_GetZero();
 #endif
-    if (PyDict_SetItemString(config, "Py_NOGIL", py_nogil) < 0) {
+    if (PyDict_SetItemString(config, "Py_GIL_DISABLED", py_nogil) < 0) {
         Py_DECREF(config);
         return NULL;
     }
index b58d26cddc723ac6bd54cefa5910323ada68579b..52286f05f7154ce125b5fc7a9eb81675f45468bf 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 #define Py_LIMITED_API 0x030c0000 // 3.12
 #endif
 
index 857cb30b3da1cac01576bc7743c75c6599ffcb17..0a650f1b351d2ddb6535725824e8b807c994e54c 100644 (file)
@@ -1,10 +1,10 @@
 /* Test Vectorcall in the limited API */
 
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 #define Py_LIMITED_API 0x030c0000 // 3.12
 #endif
 
index c5d07e1370dac844c35416c660cafff2f82cd517..61bc84134458dabbce1a9c92e927789889c692c0 100644 (file)
@@ -5,10 +5,10 @@
 #undef Py_BUILD_CORE_BUILTIN
 
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 // For now, only limited C API 3.13 is supported
 #define Py_LIMITED_API 0x030d0000
 #endif
index 99d48b6617f49ca2c4b62a5d278645457094d653..245e81b2dce7f8fdf4f5f399afcf1e7470ba8ae5 100644 (file)
@@ -5,10 +5,10 @@
  */
 
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 #define Py_LIMITED_API 0x03020000
 #endif
 
index 9392096a16d1bf4278ae862cc1557bc23764b725..1f7e311558b27cb3fb8753fd52e950d3135df5ff 100644 (file)
@@ -6,7 +6,7 @@
 
 #include "pycore_critical_section.h"
 
-#ifdef Py_NOGIL
+#ifdef Py_GIL_DISABLED
 #define assert_nogil assert
 #define assert_gil(x)
 #else
@@ -25,7 +25,7 @@ test_critical_sections(PyObject *self, PyObject *Py_UNUSED(args))
     assert(d2 != NULL);
 
     // Beginning a critical section should lock the associated object and
-    // push the critical section onto the thread's stack (in Py_NOGIL builds).
+    // push the critical section onto the thread's stack (in Py_GIL_DISABLED builds).
     Py_BEGIN_CRITICAL_SECTION(d1);
     assert_nogil(PyMutex_IsLocked(&d1->ob_mutex));
     assert_nogil(_PyCriticalSection_IsActive(PyThreadState_GET()->critical_section));
index 1d716051df4ade6cfdd32ff4c57b65e8cf54a25e..d8b211c632eef16f4f7573698476cd2ecef3921a 100644 (file)
@@ -4,10 +4,10 @@
  */
 
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 // Need limited C API version 3.12 for Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
 #define Py_LIMITED_API 0x030c0000
 #endif
index 1e2c55a1a26b4b9c4c8d7d3eab5071f048284713..8287edbfb47f6c819957b5a1406e8d9a7d091038 100644 (file)
@@ -1,10 +1,10 @@
 /* Errno module */
 
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 // Need limited C API version 3.12 for Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
 #define Py_LIMITED_API 0x030c0000
 #endif
index 25b2aaadfb2868846e4a320374bb0e2c86b0e101..7105e68af7b806fce63479a304c064939b73b0f6 100644 (file)
@@ -58,7 +58,7 @@
         PyMutex_Unlock(&(obj)->mutex); \
     }
 
-#ifdef Py_NOGIL
+#ifdef Py_GIL_DISABLED
 #define HASHLIB_INIT_MUTEX(obj) \
     do { \
         (obj)->mutex = (PyMutex){0}; \
index 87c44607df1c4cd9574eb23102f403405ba4970c..a4b8f648c329e3238ed28b944d1a2e22018a1da5 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 // Need limited C API version 3.13 for PySys_Audit()
 #define Py_LIMITED_API 0x030d0000
 #endif
index 21d7e9ba67ad78ce99da75057728216b76d0fd3b..19f61216255cfa1839fe46d805ead9b07a32cb1f 100644 (file)
    */
 
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 // Need limited C API version 3.12 for Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
 #define Py_LIMITED_API 0x030c0000
 #endif
index 04673ea68cfee5f92912b153edc823d5d5dc6ab1..867820a6cb93fae14cfdd4763d92acec128f5c8d 100644 (file)
@@ -6,10 +6,10 @@
  */
 
 #ifndef _MSC_VER
-#include "pyconfig.h"   // Py_NOGIL
+#include "pyconfig.h"   // Py_GIL_DISABLED
 #endif
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 #define Py_LIMITED_API 0x03050000
 #endif
 
index 1f5b2b4f79e5fa91f2b2eb8d8ce6572d6a3bd915..d145674cb3ba34dc00108ce5620a06673e28c957 100644 (file)
@@ -296,7 +296,7 @@ _Py_DecRef(PyObject *o)
     Py_DECREF(o);
 }
 
-#ifdef Py_NOGIL
+#ifdef Py_GIL_DISABLED
 # ifdef Py_REF_DEBUG
 static inline int
 is_shared_refcnt_dead(Py_ssize_t shared)
@@ -414,7 +414,7 @@ _Py_ExplicitMergeRefcount(PyObject *op, Py_ssize_t extra)
     _Py_atomic_store_uintptr_relaxed(&op->ob_tid, 0);
     return refcnt;
 }
-#endif  /* Py_NOGIL */
+#endif  /* Py_GIL_DISABLED */
 
 
 /**************************************/
@@ -2359,7 +2359,7 @@ new_reference(PyObject *op)
         _PyTraceMalloc_NewReference(op);
     }
     // Skip the immortal object check in Py_SET_REFCNT; always set refcnt to 1
-#if !defined(Py_NOGIL)
+#if !defined(Py_GIL_DISABLED)
     op->ob_refcnt = 1;
 #else
     op->ob_tid = _Py_ThreadId();
index d1ff991c934bae0c8cad623b8881b145d0d04baa..b0e416cfec4699686be4b7da627c3fb174330e50 100644 (file)
@@ -35,7 +35,7 @@
    winsound.PlaySound(None, 0)
 */
 
-#ifndef Py_NOGIL
+#ifndef Py_GIL_DISABLED
 // Need limited C API version 3.12 for Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
 #define Py_LIMITED_API 0x030c0000
 #endif
index bb3555bd123089bcec281abe8dee9b7ff1c3a636..0acc7045c39a269df843889a01ad59f1a097e936 100644 (file)
@@ -40,7 +40,7 @@
     <ClCompile>
       <AdditionalIncludeDirectories>$(PySourcePath)Include;$(PySourcePath)Include\internal;$(PySourcePath)Include\internal\mimalloc;$(PySourcePath)PC;$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;$(_Py3NamePreprocessorDefinition);$(_PlatformPreprocessorDefinition)$(_DebugPreprocessorDefinition)$(_PydPreprocessorDefinition)%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(DisableGil)' == 'true'">Py_NOGIL=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(DisableGil)' == 'true'">Py_GIL_DISABLED=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <PreprocessorDefinitions Condition="'$(SupportPGO)' and ($(Configuration) == 'PGInstrument' or $(Configuration) == 'PGUpdate')">_Py_USING_PGO=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 
       <Optimization>MaxSpeed</Optimization>
index ae515780440ecbe3fcf80c95b1c32ab1d957de21..ba234dc5774472975f5f079b01e833c4477e3a88 100644 (file)
 #  error "ceval.c must be build with Py_BUILD_CORE define for best performance"
 #endif
 
-#if !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_NOGIL)
+#if !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_GIL_DISABLED)
 // GH-89279: The MSVC compiler does not inline these static inline functions
 // in PGO build in _PyEval_EvalFrameDefault(), because this function is over
 // the limit of PGO, and that limit cannot be configured.
 // Define them as macros to make sure that they are always inlined by the
 // preprocessor.
-// TODO: implement Py_DECREF macro for Py_NOGIL
+// TODO: implement Py_DECREF macro for Py_GIL_DISABLED
 
 #undef Py_DECREF
 #define Py_DECREF(arg) \
index bc43b1ab192feaa2f344bec2367c155c303a77c6..e9279f0b92a5e79805d37b78116d1d70a24bcf27 100644 (file)
@@ -21,7 +21,7 @@ static const _PyTime_t TIME_TO_BE_FAIR_NS = 1000*1000;
 // Spin for a bit before parking the thread. This is only enabled for
 // `--disable-gil` builds because it is unlikely to be helpful if the GIL is
 // enabled.
-#if Py_NOGIL
+#if Py_GIL_DISABLED
 static const int MAX_SPIN_COUNT = 40;
 #else
 static const int MAX_SPIN_COUNT = 0;
index 89e9bddc6de060d576541313a01ea7f61d3a4886..6196b15da0117a27871ea61bb92afe980244b9bb 100644 (file)
@@ -1857,7 +1857,7 @@ tstate_deactivate(PyThreadState *tstate)
 static int
 tstate_try_attach(PyThreadState *tstate)
 {
-#ifdef Py_NOGIL
+#ifdef Py_GIL_DISABLED
     int expected = _Py_THREAD_DETACHED;
     if (_Py_atomic_compare_exchange_int(
             &tstate->state,
@@ -1877,7 +1877,7 @@ static void
 tstate_set_detached(PyThreadState *tstate)
 {
     assert(tstate->state == _Py_THREAD_ATTACHED);
-#ifdef Py_NOGIL
+#ifdef Py_GIL_DISABLED
     _Py_atomic_store_int(&tstate->state, _Py_THREAD_DETACHED);
 #else
     tstate->state = _Py_THREAD_DETACHED;
index 5e86e8255c03d0d47b495f9581426fd22ddd48af..319009537f461c432b677fc6075f3d1f5536e4e7 100755 (executable)
--- a/configure
+++ b/configure
@@ -7883,7 +7883,7 @@ printf "%s\n" "$disable_gil" >&6; }
 if test "$disable_gil" = "yes"
 then
 
-printf "%s\n" "#define Py_NOGIL 1" >>confdefs.h
+printf "%s\n" "#define Py_GIL_DISABLED 1" >>confdefs.h
 
   # Add "t" for "threaded"
   ABIFLAGS="${ABIFLAGS}t"
index f46e19ba4be3f891f23427afdb767aff9e46fbfb..b78472e04846b784908e35462163839aa77eaf12 100644 (file)
@@ -1505,7 +1505,7 @@ AC_MSG_RESULT([$disable_gil])
 
 if test "$disable_gil" = "yes"
 then
-  AC_DEFINE([Py_NOGIL], [1],
+  AC_DEFINE([Py_GIL_DISABLED], [1],
             [Define if you want to disable the GIL])
   # Add "t" for "threaded"
   ABIFLAGS="${ABIFLAGS}t"
index 2bbc1bdd52dc0e02ebb39f205cb9d474f07e48fc..bf708926e22c435a279f3b4c4387b300832547e6 100644 (file)
 /* Defined if Python is built as a shared library. */
 #undef Py_ENABLE_SHARED
 
+/* Define if you want to disable the GIL */
+#undef Py_GIL_DISABLED
+
 /* Define hash algorithm for str, bytes and memoryview. SipHash24: 1, FNV: 2,
    SipHash13: 3, externally defined: 0 */
 #undef Py_HASH_ALGORITHM
 
-/* Define if you want to disable the GIL */
-#undef Py_NOGIL
-
 /* Define if you want to enable internal statistics gathering. */
 #undef Py_STATS