<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body><div><div style="font-family: Calibri,sans-serif; font-size: 11pt;">"Ok, now why should _Py_PrintReferences() function be exported?"<br><br>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).<br><br>And ideally, private functions that are deliberately exported would have comments, or if they're new, a version check on Py_LIMITED_API.<br><br>Top-posted from my Windows Phone</div></div><div dir="ltr"><hr><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">From: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:victor.stinner@gmail.com">Victor Stinner</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">Sent: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;">‎12/‎21/‎2016 6:25</span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">To: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:storchaka@gmail.com">Serhiy Storchaka</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">Cc: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:python-dev@python.org">Python Dev</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">Subject: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;">Re: [Python-Dev] Issue #23903 - stable API is incomplete</span><br><br></div>2016-12-21 14:06 GMT+01:00 Serhiy Storchaka <storchaka@gmail.com>:<br>>> These functions are private. Would it be possible to not export them?<br>><br>> Private functions used in public macros (like _Py_NewReference) should be<br>> exported.<br><br>Ah, _Py_NewReference is used in the PyObject_INIT(op, typeobj) *macro*, right.<br><br>IMO it's an issue with our public API: for the stable ABI, we should<br>replace such macro with a function which hides implementation details.<br><br>Example from pystate.h:<br><br>#ifdef Py_BUILD_CORE<br>PyAPI_DATA(_Py_atomic_address) _PyThreadState_Current;<br>#  define PyThreadState_GET() \<br>             ((PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current))<br>#else<br>#  define PyThreadState_GET() PyThreadState_Get()<br>#endif<br><br><br>Ok, now why should _Py_PrintReferences() function be exported? This<br>private function is only called from Py_FinalizeEx(). It is not used<br>in a macro.<br><br>Victor<br>_______________________________________________<br>Python-Dev mailing list<br>Python-Dev@python.org<br>https://mail.python.org/mailman/listinfo/python-dev<br>Unsubscribe: https://mail.python.org/mailman/options/python-dev/steve.dower%40python.org<br></body></html>