@@ -21,20 +21,11 @@ static PyMethodDef _simd_methods[] = {
21
21
{NULL ,NULL ,0 ,NULL }
22
22
};
23
23
24
- PyMODINIT_FUNC PyInit__simd (void )
24
+ static int
25
+ _simd_exec (PyObject * m )
25
26
{
26
- static struct PyModuleDef defs = {
27
- .m_base = PyModuleDef_HEAD_INIT ,
28
- .m_name = "numpy._core._simd" ,
29
- .m_size = -1 ,
30
- .m_methods = _simd_methods
31
- };
32
27
if (npy_cpu_init ()< 0 ) {
33
- return NULL ;
34
- }
35
- PyObject * m = PyModule_Create (& defs );
36
- if (m == NULL ) {
37
- return NULL ;
28
+ return -1 ;
38
29
}
39
30
PyObject * targets = PyDict_New ();
40
31
if (targets == NULL ) {
@@ -88,13 +79,27 @@ PyMODINIT_FUNC PyInit__simd(void)
88
79
NPY_MTARGETS_CONF_DISPATCH (NPY_CPU_HAVE ,ATTACH_MODULE ,MAKE_MSVC_HAPPY )
89
80
NPY_MTARGETS_CONF_BASELINE (ATTACH_BASELINE_MODULE ,MAKE_MSVC_HAPPY )
90
81
91
- #if Py_GIL_DISABLED
82
+ return 0 ;
83
+ err :
84
+ return -1 ;
85
+ }
86
+
87
+ static struct PyModuleDef_Slot _simd_slots []= {
88
+ {Py_mod_exec ,_simd_exec },
89
+ {Py_mod_multiple_interpreters ,Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED },
92
90
// signal this module supports running with the GIL disabled
93
- PyUnstable_Module_SetGIL (m ,Py_MOD_GIL_NOT_USED );
94
- #endif
91
+ {Py_mod_gil ,Py_MOD_GIL_NOT_USED },
92
+ {0 ,NULL },
93
+ };
95
94
96
- return m ;
97
- err :
98
- Py_DECREF (m );
99
- return NULL ;
95
+ static struct PyModuleDef defs = {
96
+ .m_base = PyModuleDef_HEAD_INIT ,
97
+ .m_name = "numpy._core._simd" ,
98
+ .m_size = 0 ,
99
+ .m_methods = _simd_methods ,
100
+ .m_slots = _simd_slots ,
101
+ };
102
+
103
+ PyMODINIT_FUNC PyInit__simd (void ) {
104
+ return PyModuleDef_Init (& defs );
100
105
}