[Python-Dev] Python initialization and embedded Python

Serhiy Storchaka storchaka at gmail.com
Sun Nov 19 02:53:30 EST 2017

19.11.17 04:17, Nick Coghlan пише:
> 1. Breaking calling Py_DecodeLocale() before calling Py_Initialize()
> is a compatibility break with the API implied by our own usage
> examples, and we'll need to revert the breakage for 3.7, and ensure at
> least one release's worth of DeprecationWarning before requiring
> either the use of an alternative API (where the caller controls the
> memory management), or else a new lower level pre-initialization API
> (i.e. making `PyRuntime_Initialize` a public API)

There is a way to to control the memory manager. The caller should just 
define their own PyMem_RawMalloc(), PyMem_RawFree(), etc. It seems to me 
that the reasons of introducing these functions were:

1. Get around the implementation detail when malloc(0) could return 
NULL. PyMem_RawMalloc() always should return an unique address (unless 

2. Allow the caller to control the memory management by providing their 
own implementations.

Let use existing possibilities and not expand the API. I don't think the 
deprecation and breaking compatibility are needed here.

More information about the Python-Dev mailing list