summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2017-05-24 04:46:51 (GMT)
committerGitHub <noreply@github.com>2017-05-24 04:46:51 (GMT)
commit1abcf6700b4da6207fe859de40c6c1bada6b4fec (patch)
tree9257126657803f00035c44cb0d1ae579a78ce999 /Include
parentc842efc6aedf979b827a9473192f46cec53d58db (diff)
downloadcpython-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.h10
-rw-r--r--Include/pystate.h11
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