New submission from STINNER Victor <[email protected]>:
The current implementation of the PEP 587 is not ready for future evolutions of
the PyPreConfig and PyConfig structure. Any change will break the ABI
compatibility. Their _config_version field is useless.
The first versions of the PEP 587 used a macro to statically initialize the
structure. It was decided to get ride of macros to use functions instead.
Example:
PyConfig config;
PyStatus status = PyConfig_InitPythonConfig(&config);
PyConfig_InitPythonConfig() gets unitialized memory and doesn't know the size
of the config variable.
I propose to require to store the size of the structure in the structure
directly:
* Add PyPreConfig.struct_size and PyConfig.struct_size
* Require to initialize these fields to sizeof(PyPreConfig) and
sizeof(PyConfig) respectively
Example:
PyConfig config;
config.struct_size = sizeof(PyConfig);
PyStatus status = PyConfig_InitPythonConfig(&config);
Thanks to the struct_size field, PyConfig_InitPythonConfig() can support old
PyConfig structures without breaking the ABI.
If an old PyConfig is passed to PyConfig_Read(): newer fields will be ignored.
----------
components: Interpreter Core
messages: 353430
nosy: lukasz.langa, vstinner
priority: release blocker
severity: normal
status: open
title: PEP 587 implementation is not ABI forward compatible
versions: Python 3.8
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue38304>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com