]> granicus.if.org Git - python/commit
bpo-32030: Enhance Py_Main() (#4412)
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 16 Nov 2017 02:11:45 +0000 (18:11 -0800)
committerGitHub <noreply@github.com>
Thu, 16 Nov 2017 02:11:45 +0000 (18:11 -0800)
commita7368ac6360246b1ef7f8f152963c2362d272183
tree4fb2375f4d4aa4287f4d7688631111512d9e4446
parentf7e5b56c37eb859e225e886c79c5d742c567ee95
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.
12 files changed:
Include/internal/pystate.h
Include/pydebug.h
Include/pystate.h
Lib/test/test_tracemalloc.py
Modules/_tracemalloc.c
Modules/clinic/_tracemalloc.c.h
Modules/faulthandler.c
Modules/main.c
Python/bootstrap_hash.c
Python/import.c
Python/pylifecycle.c
Python/pystate.c