Forráskód Böngészése

app_python3: initial support for free-threading Python

* free-threading build can be disabled by defining
  -DKSR_PYTHON_DISABLE_FREETHREADING
* this has no effect if Python is a non-free-threading build
S-P Chan 11 hónapja
szülő
commit
effd74b61a
1 módosított fájl, 13 hozzáadás és 1 törlés
  1. 13 1
      src/modules/app_python3/apy_kemi.c

+ 13 - 1
src/modules/app_python3/apy_kemi.c

@@ -530,7 +530,6 @@ static PyObject *init_KSR(void)
 
 	KSR_moduledef.m_methods = _sr_crt_KSRMethods;
 	_sr_apy_ksr_module = PyModule_Create(&KSR_moduledef);
-
 	Py_INCREF(_sr_apy_ksr_module);
 
 	m = 0;
@@ -538,6 +537,13 @@ static PyObject *init_KSR(void)
 	/* special sub-modules - x.modf() can have variable number of params */
 	_sr_apy_ksr_modules_list[m] = PyModule_Create(&KSR_x_moduledef);
 	PyModule_AddObject(_sr_apy_ksr_module, "x", _sr_apy_ksr_modules_list[m]);
+
+#if defined(Py_GIL_DISABLED) && !defined(KSR_PYTHON_DISABLE_FREETHREADING)
+#warning Python Free Threading build
+	PyUnstable_Module_SetGIL(_sr_apy_ksr_module, Py_MOD_GIL_NOT_USED);
+	PyUnstable_Module_SetGIL(_sr_apy_ksr_modules_list[m], Py_MOD_GIL_NOT_USED);
+#endif
+
 	Py_INCREF(_sr_apy_ksr_modules_list[m]);
 	m++;
 
@@ -579,6 +585,12 @@ static PyObject *init_KSR(void)
 			mmodule->m_size = -1;
 
 			_sr_apy_ksr_modules_list[m] = PyModule_Create(mmodule);
+
+#if defined(Py_GIL_DISABLED) && !defined(KSR_PYTHON_DISABLE_FREETHREADING)
+#warning Python Free Threading build
+			PyUnstable_Module_SetGIL(
+					_sr_apy_ksr_modules_list[m], Py_MOD_GIL_NOT_USED);
+#endif
 			PyModule_AddObject(_sr_apy_ksr_module, emods[k].kexp[0].mname.s,
 					_sr_apy_ksr_modules_list[m]);
 			Py_INCREF(_sr_apy_ksr_modules_list[m]);