diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2017-05-24 04:46:51 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-24 04:46:51 (GMT) |
commit | 1abcf6700b4da6207fe859de40c6c1bada6b4fec (patch) | |
tree | 9257126657803f00035c44cb0d1ae579a78ce999 /Include | |
parent | c842efc6aedf979b827a9473192f46cec53d58db (diff) | |
download | cpython-1abcf6700b4da6207fe859de40c6c1bada6b4fec.zip cpython-1abcf6700b4da6207fe859de40c6c1bada6b4fec.tar.gz cpython-1abcf6700b4da6207fe859de40c6c1bada6b4fec.tar.bz2 |
bpo-22257: Private C-API for core runtime initialization (PEP 432). (#1772)
(patch by Nick Coghlan)
Diffstat (limited to 'Include')
-rw-r--r-- | Include/pylifecycle.h | 10 | ||||
-rw-r--r-- | Include/pystate.h | 11 |
2 files changed, 20 insertions, 1 deletions
diff --git a/Include/pylifecycle.h b/Include/pylifecycle.h index 7d182cf..f1a19c1 100644 --- a/Include/pylifecycle.h +++ b/Include/pylifecycle.h @@ -19,8 +19,14 @@ PyAPI_FUNC(wchar_t *) Py_GetPythonHome(void); */ PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding, const char *errors); + +/* PEP 432 Multi-phase initialization API (Private while provisional!) */ +PyAPI_FUNC(void) _Py_InitializeCore(const _PyCoreConfig *); +PyAPI_FUNC(int) _Py_IsCoreInitialized(void); +PyAPI_FUNC(int) _Py_InitializeMainInterpreter(int install_sigs); #endif +/* Initialization and finalization */ PyAPI_FUNC(void) Py_Initialize(void); PyAPI_FUNC(void) Py_InitializeEx(int); #ifndef Py_LIMITED_API @@ -29,6 +35,8 @@ PyAPI_FUNC(void) _Py_InitializeEx_Private(int, int); PyAPI_FUNC(void) Py_Finalize(void); PyAPI_FUNC(int) Py_FinalizeEx(void); PyAPI_FUNC(int) Py_IsInitialized(void); + +/* Subinterpreter support */ PyAPI_FUNC(PyThreadState *) Py_NewInterpreter(void); PyAPI_FUNC(void) Py_EndInterpreter(PyThreadState *); @@ -85,7 +93,7 @@ PyAPI_FUNC(void) _PyImportHooks_Init(void); PyAPI_FUNC(int) _PyFrame_Init(void); PyAPI_FUNC(int) _PyFloat_Init(void); PyAPI_FUNC(int) PyByteArray_Init(void); -PyAPI_FUNC(void) _Py_HashRandomization_Init(void); +PyAPI_FUNC(void) _Py_HashRandomization_Init(_PyCoreConfig *core_config); #endif /* Various internal finalizers */ diff --git a/Include/pystate.h b/Include/pystate.h index 5e54da1..13e4d73 100644 --- a/Include/pystate.h +++ b/Include/pystate.h @@ -23,6 +23,16 @@ typedef struct _is PyInterpreterState; #else typedef PyObject* (*_PyFrameEvalFunction)(struct _frame *, int); + +typedef struct { + int ignore_environment; + int use_hash_seed; + unsigned long hash_seed; + int _disable_importlib; /* Needed by freeze_importlib */ +} _PyCoreConfig; + +#define _PyCoreConfig_INIT {0, -1, 0, 0} + typedef struct _is { struct _is *next; @@ -42,6 +52,7 @@ typedef struct _is { int codecs_initialized; int fscodec_initialized; + _PyCoreConfig core_config; #ifdef HAVE_DLOPEN int dlopenflags; #endif |