gh-104109: Expose Py_NewInterpreterFromConfig() in the Public C-API (gh-104110)

We also expose PyInterpreterConfig. This is part of the PEP 684 (per-interpreter GIL) implementation.  We will add docs as soon as we can.

FYI, I'm adding the new config field for per-interpreter GIL in gh-99114.
This commit is contained in:
Eric Snow 2023-05-02 21:40:00 -06:00 committed by GitHub
parent de64e75616
commit 292076a9aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 22 additions and 16 deletions

View file

@ -546,7 +546,8 @@ pycore_init_runtime(_PyRuntimeState *runtime,
static PyStatus
init_interp_settings(PyInterpreterState *interp, const _PyInterpreterConfig *config)
init_interp_settings(PyInterpreterState *interp,
const PyInterpreterConfig *config)
{
assert(interp->feature_flags == 0);
@ -631,7 +632,7 @@ pycore_create_interpreter(_PyRuntimeState *runtime,
return status;
}
const _PyInterpreterConfig config = _PyInterpreterConfig_LEGACY_INIT;
const PyInterpreterConfig config = _PyInterpreterConfig_LEGACY_INIT;
status = init_interp_settings(interp, &config);
if (_PyStatus_EXCEPTION(status)) {
return status;
@ -1991,7 +1992,7 @@ Py_Finalize(void)
*/
static PyStatus
new_interpreter(PyThreadState **tstate_p, const _PyInterpreterConfig *config)
new_interpreter(PyThreadState **tstate_p, const PyInterpreterConfig *config)
{
PyStatus status;
@ -2079,8 +2080,8 @@ error:
}
PyStatus
_Py_NewInterpreterFromConfig(PyThreadState **tstate_p,
const _PyInterpreterConfig *config)
Py_NewInterpreterFromConfig(PyThreadState **tstate_p,
const PyInterpreterConfig *config)
{
return new_interpreter(tstate_p, config);
}
@ -2089,8 +2090,8 @@ PyThreadState *
Py_NewInterpreter(void)
{
PyThreadState *tstate = NULL;
const _PyInterpreterConfig config = _PyInterpreterConfig_LEGACY_INIT;
PyStatus status = _Py_NewInterpreterFromConfig(&tstate, &config);
const PyInterpreterConfig config = _PyInterpreterConfig_LEGACY_INIT;
PyStatus status = new_interpreter(&tstate, &config);
if (_PyStatus_EXCEPTION(status)) {
Py_ExitStatusException(status);
}