Merge pull request #3502 from mejrs/interpreterapi

add PyInterpreterConfig api
This commit is contained in:
Bruno Kolenbrander 2023-10-08 21:22:01 +00:00 committed by GitHub
commit 36b4a79930
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 53 additions and 1 deletions

View File

@ -0,0 +1 @@
Added the `PyInterpreterConfig` struct, its constants and `Py_NewInterpreterFromConfig`.

View File

@ -44,5 +44,56 @@ extern "C" {
// skipped _Py_LegacyLocaleDetected // skipped _Py_LegacyLocaleDetected
// skipped _Py_SetLocaleFromEnv // skipped _Py_SetLocaleFromEnv
// skipped _Py_NewInterpreter
} }
#[cfg(Py_3_12)]
pub const PyInterpreterConfig_DEFAULT_GIL: c_int = 0;
#[cfg(Py_3_12)]
pub const PyInterpreterConfig_SHARED_GIL: c_int = 1;
#[cfg(Py_3_12)]
pub const PyInterpreterConfig_OWN_GIL: c_int = 2;
#[cfg(Py_3_12)]
#[repr(C)]
pub struct PyInterpreterConfig {
pub use_main_obmalloc: c_int,
pub allow_fork: c_int,
pub allow_exec: c_int,
pub allow_threads: c_int,
pub allow_daemon_threads: c_int,
pub check_multi_interp_extensions: c_int,
pub gil: c_int,
}
#[cfg(Py_3_12)]
pub const _PyInterpreterConfig_INIT: PyInterpreterConfig = PyInterpreterConfig {
use_main_obmalloc: 0,
allow_fork: 0,
allow_exec: 0,
allow_threads: 1,
allow_daemon_threads: 0,
check_multi_interp_extensions: 1,
gil: PyInterpreterConfig_OWN_GIL,
};
#[cfg(Py_3_12)]
pub const _PyInterpreterConfig_LEGACY_INIT: PyInterpreterConfig = PyInterpreterConfig {
use_main_obmalloc: 1,
allow_fork: 1,
allow_exec: 1,
allow_threads: 1,
allow_daemon_threads: 1,
check_multi_interp_extensions: 0,
gil: PyInterpreterConfig_SHARED_GIL,
};
extern "C" {
#[cfg(Py_3_12)]
pub fn Py_NewInterpreterFromConfig(
tstate_p: *mut *mut crate::PyThreadState,
config: *const PyInterpreterConfig,
) -> PyStatus;
}
// skipped atexit_datacallbackfunc
// skipped _Py_AtExit