• Victor Stinner's avatar
    bpo-32030: Split Py_Main() into subfunctions (#4399) · f7e5b56c
    Victor Stinner yazdı
    * Don't use "Python runtime" anymore to parse command line options or
      to get environment variables: pymain_init() is now a strict
      separation.
    * Use an error message rather than "crashing" directly with
      Py_FatalError(). Limit the number of calls to Py_FatalError(). It
      prepares the code to handle errors more nicely later.
    * Warnings options (-W, PYTHONWARNINGS) and "XOptions" (-X) are now
      only added to the sys module once Python core is properly
      initialized.
    * _PyMain is now the well identified owner of some important strings
      like: warnings options, XOptions, and the "program name". The
      program name string is now properly freed at exit.
      pymain_free() is now responsible to free the "command" string.
    * Rename most methods in Modules/main.c to use a "pymain_" prefix to
      avoid conflits and ease debug.
    * Replace _Py_CommandLineDetails_INIT with memset(0)
    * Reorder a lot of code to fix the initialization ordering. For
      example, initializing standard streams now comes before parsing
      PYTHONWARNINGS.
    * Py_Main() now handles errors when adding warnings options and
      XOptions.
    * Add _PyMem_GetDefaultRawAllocator() private function.
    * Cleanup _PyMem_Initialize(): remove useless global constants: move
      them into _PyMem_Initialize().
    * Call _PyRuntime_Initialize() as soon as possible:
      _PyRuntime_Initialize() now returns an error message on failure.
    * Add _PyInitError structure and following macros:
    
      * _Py_INIT_OK()
      * _Py_INIT_ERR(msg)
      * _Py_INIT_USER_ERR(msg): "user" error, don't abort() in that case
      * _Py_INIT_FAILED(err)
    f7e5b56c
import.h 4.89 KB