diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2017-11-16 02:11:45 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-16 02:11:45 (GMT) |
commit | a7368ac6360246b1ef7f8f152963c2362d272183 (patch) | |
tree | 4fb2375f4d4aa4287f4d7688631111512d9e4446 /Include | |
parent | f7e5b56c37eb859e225e886c79c5d742c567ee95 (diff) | |
download | cpython-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.h | 2 | ||||
-rw-r--r-- | Include/pydebug.h | 1 | ||||
-rw-r--r-- | Include/pystate.h | 13 |
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 * |