
Hi, I'm trying to cleanup the Python C API, especially strictly separate the public C API, the stable C API (Py_LIMITED_API), and the internal C API (Py_BUILD_CORE). Move internal headers to Include/internal/ : https://bugs.python.org/issue35081 Move !Py_LIMITED_API to Include/pycapi/: https://bugs.python.org/issue35134 I tried to ensure that Py_BUILD_CORE is defined when including pycore_xxx.h headers from Include/internal/, but the compilation of the _json module fails. Modules/_json.c contains: /* Core extension modules are built-in on some platforms (e.g. Windows). */ #ifdef Py_BUILD_CORE #define Py_BUILD_CORE_BUILTIN #undef Py_BUILD_CORE #endif I don't understand the difference between Py_BUILD_CORE and Py_BUILD_CORE_BUILTIN defines. Do we need to have two different defines? Can't we compile _json with Py_BUILD_CORE? _json.c uses pycore_accu.h: /* * A two-level accumulator of unicode objects that avoids both the overhead * of keeping a huge number of small separate objects, and the quadratic * behaviour of using a naive repeated concatenation scheme. */ Is it a problem of the visibility/scope of symbols in the python DLL on Windows? Victor