summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-11-16 02:11:45 (GMT)
committerGitHub <noreply@github.com>2017-11-16 02:11:45 (GMT)
commita7368ac6360246b1ef7f8f152963c2362d272183 (patch)
tree4fb2375f4d4aa4287f4d7688631111512d9e4446 /Include
parentf7e5b56c37eb859e225e886c79c5d742c567ee95 (diff)
downloadcpython-a7368ac6360246b1ef7f8f152963c2362d272183.zip
cpython-a7368ac6360246b1ef7f8f152963c2362d272183.tar.gz
cpython-a7368ac6360246b1ef7f8f152963c2362d272183.tar.bz2
bpo-32030: Enhance Py_Main() (#4412)
Parse more env vars in Py_Main(): * Add more options to _PyCoreConfig: * faulthandler * tracemalloc * importtime * Move code to parse environment variables from _Py_InitializeCore() to Py_Main(). This change fixes a regression from Python 3.6: PYTHONUNBUFFERED is now read before calling pymain_init_stdio(). * _PyFaulthandler_Init() and _PyTraceMalloc_Init() now take an argument to decide if the module has to be enabled at startup. * tracemalloc_start() is now responsible to check the maximum number of frames. Other changes: * Cleanup Py_Main(): * Rename some pymain_xxx() subfunctions * Add pymain_run_python() subfunction * Cleanup Py_NewInterpreter() * _PyInterpreterState_Enable() now reports failure * init_hash_secret() now considers pyurandom() failure as an "user error": don't fail with abort(). * pymain_optlist_append() and pymain_strdup() now sets err on memory allocation failure.
Diffstat (limited to 'Include')
-rw-r--r--Include/internal/pystate.h2
-rw-r--r--Include/pydebug.h1
-rw-r--r--Include/pystate.h13
3 files changed, 14 insertions, 2 deletions
diff --git a/Include/internal/pystate.h b/Include/internal/pystate.h
index 516f829..67b4a51 100644
--- a/Include/internal/pystate.h
+++ b/Include/internal/pystate.h
@@ -90,7 +90,7 @@ PyAPI_FUNC(_PyInitError) _PyRuntime_Initialize(void);
/* Other */
-PyAPI_FUNC(void) _PyInterpreterState_Enable(_PyRuntimeState *);
+PyAPI_FUNC(_PyInitError) _PyInterpreterState_Enable(_PyRuntimeState *);
#ifdef __cplusplus
}
diff --git a/Include/pydebug.h b/Include/pydebug.h
index 6e23a89..d3b9596 100644
--- a/Include/pydebug.h
+++ b/Include/pydebug.h
@@ -25,6 +25,7 @@ PyAPI_DATA(int) Py_HashRandomizationFlag;
PyAPI_DATA(int) Py_IsolatedFlag;
#ifdef MS_WINDOWS
+PyAPI_DATA(int) Py_LegacyWindowsFSEncodingFlag;
PyAPI_DATA(int) Py_LegacyWindowsStdioFlag;
#endif
diff --git a/Include/pystate.h b/Include/pystate.h
index 9381585..4401225 100644
--- a/Include/pystate.h
+++ b/Include/pystate.h
@@ -30,9 +30,20 @@ typedef struct {
unsigned long hash_seed;
int _disable_importlib; /* Needed by freeze_importlib */
char *allocator;
+ int faulthandler;
+ int tracemalloc; /* Number of saved frames, 0=don't trace */
+ int importtime; /* -X importtime */
} _PyCoreConfig;
-#define _PyCoreConfig_INIT {0, -1, 0, 0, NULL}
+#define _PyCoreConfig_INIT \
+ {.ignore_environment = 0, \
+ .use_hash_seed = -1, \
+ .hash_seed = 0, \
+ ._disable_importlib = 0, \
+ .allocator = NULL, \
+ .faulthandler = 0, \
+ .tracemalloc = 0, \
+ .importtime = 0}
/* Placeholders while working on the new configuration API
*