[Python-Dev] Usefulness of binary compatibility accross Python versions? (original) (raw)
Antoine Pitrou solipsis at pitrou.net
Sat Dec 16 14:14:06 EST 2017
- Previous message (by thread): [Python-Dev] Usefulness of binary compatibility accross Python versions?
- Next message (by thread): [Python-Dev] Usefulness of binary compatibility accross Python versions?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, 16 Dec 2017 19:37:54 +0100 Antoine Pitrou <solipsis at pitrou.net> wrote:
Currently, you can pass a
moduleapiversion
to PyModuleCreate2(), but that function is for specialists only :-) ("""Most uses of this function should be using PyModuleCreate() instead; only use this if you are sure you need it.""")
Ah, it turns out I misunderstood that piece of documentation and also what PEP 3121 really did w.r.t the module API check.
PyModule_Create() is actually a macro calling PyModule_Create2() with the version number is was compiled against!
#ifdef Py_LIMITED_API
#define PyModule_Create(module)
PyModule_Create2(module, PYTHON_ABI_VERSION)
#else
#define PyModule_Create(module)
PyModule_Create2(module, PYTHON_API_VERSION)
#endif
And there's already a check for that version number in moduleobject.c: https://github.com/python/cpython/blob/master/Objects/moduleobject.c#L114
That check is always invoked when calling PyModule_Create() and PyModule_Create2(). Currently it merely invokes a warning, but we can easily turn that into an error.
(with apologies to Martin von Löwis for not fully understanding what he did at the time :-))
Regards
Antoine.
- Previous message (by thread): [Python-Dev] Usefulness of binary compatibility accross Python versions?
- Next message (by thread): [Python-Dev] Usefulness of binary compatibility accross Python versions?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]