"Ok, now why should _Py_PrintReferences() function be exported?" It probably shouldn't, but it needs an #ifndef Py_LIMITED_API check so it is excluded from the headers (my list was automatically generated).
And ideally, private functions that are deliberately exported would have comments, or if they're new, a version check on Py_LIMITED_API. Top-posted from my Windows Phone -----Original Message----- From: "Victor Stinner" <victor.stin...@gmail.com> Sent: 12/21/2016 6:25 To: "Serhiy Storchaka" <storch...@gmail.com> Cc: "Python Dev" <python-dev@python.org> Subject: Re: [Python-Dev] Issue #23903 - stable API is incomplete 2016-12-21 14:06 GMT+01:00 Serhiy Storchaka <storch...@gmail.com>: >> These functions are private. Would it be possible to not export them? > > Private functions used in public macros (like _Py_NewReference) should be > exported. Ah, _Py_NewReference is used in the PyObject_INIT(op, typeobj) *macro*, right. IMO it's an issue with our public API: for the stable ABI, we should replace such macro with a function which hides implementation details. Example from pystate.h: #ifdef Py_BUILD_CORE PyAPI_DATA(_Py_atomic_address) _PyThreadState_Current; # define PyThreadState_GET() \ ((PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current)) #else # define PyThreadState_GET() PyThreadState_Get() #endif Ok, now why should _Py_PrintReferences() function be exported? This private function is only called from Py_FinalizeEx(). It is not used in a macro. Victor _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/steve.dower%40python.org
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com