Nick Coghlan <ncogh...@gmail.com> added the comment:

Even the public implementation of PEP 432 is going to bound by the requirement 
to keep existing embedding logic working, and that's encapsulated in the new 
test Eric added in his PR:

    wchar_t *program = Py_DecodeLocale("spam", NULL);
    Py_SetProgramName(program);
    Py_Initialize();
    Py_Finalize();
    PyMem_RawFree(program);

So even if we were to revert the _PyRuntime.mem change in 3.7, we'd still face 
the same problem in 3.8, because we'd still be exposing the traditional 
configuration API - the new multi-step configuration API would be *optional* 
for folks that wanted to override the default settings more easily, rather than 
a backwards compatibility break with the previously supported way of doing 
things.

As a result, my preferred option is now to make exactly the promises we need to 
ensure that the above code works correctly, and then have Py_Initialize and 
Py_Finalize enforce those constraints:

* the public Py_Initialize API should fail if the memory allocators have 
already been set to something other than the default
* Py_Finalize should revert the memory allocators to their default setting

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32096>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to