Skip to content

Commit

Permalink
Merge pull request #3502 from mejrs/interpreterapi
Browse files Browse the repository at this point in the history
add PyInterpreterConfig api
  • Loading branch information
mejrs committed Oct 8, 2023
2 parents 234c7b3 + 0cccb9f commit 36b4a79
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 1 deletion.
1 change: 1 addition & 0 deletions newsfragments/3502.added.md
@@ -0,0 +1 @@
Added the `PyInterpreterConfig` struct, its constants and `Py_NewInterpreterFromConfig`.
53 changes: 52 additions & 1 deletion pyo3-ffi/src/cpython/pylifecycle.rs
Expand Up @@ -44,5 +44,56 @@ extern "C" {
// skipped _Py_LegacyLocaleDetected
// 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

0 comments on commit 36b4a79

Please sign in to comment.