PEP 587 version 4 by vstinner · Pull Request #1056 · python/peps

@vstinner

The main change is the introduction of "Python Configuration" and
"Isolated Configuration" default configuration which are well better
defined. Replace all macros with functions.

Changes:

* PyPreConfig: no longer uses dynamically memory allocation,
  allocator type becomes an enum, add parse_argv and configure_locale
  field.
* PyConfig: Remove program field, rename module_search_path_env to
  pythonpath_env
* New functions:

  * PyPreConfig_InitIsolatedConfig()
  * PyPreConfig_InitPythonConfig()
  * PyConfig_InitIsolatedConfig()
  * PyConfig_InitPythonConfig()

* parse_argv default becomes 0
* Replace Py_INIT_xxx() macros with functions
* Document default values
* Remove PyConfig.dll_path
* Explain how PyConfig preinitializes Python and the relationship
  between command line arguments and the pre-initialization.
* Rename use_module_search_paths to module_search_paths_set
* Rename PyInitError_Err() to PyInitError_Error()
* "Pre-initialization" => "Preinitialization"
* Reject preconfig=NULL and config=NULL
* Replace "wchar_t**" with "wchar_t * const *", same for "char**".