C API: What should the leading underscore (`_Py`) mean?

So, extending my earlier classification, we would have something like:

PyAPI_FUNC(int) PyFoo(void) : Public, stable API function
PyAPI_FUNC(int) _PyFoo(void) : Public, unstable API function
extern int _PyFoo(void) : Private function (not visible to dynamically linked libraries)
PyPRIVATE_FUNC(int) _PyFoo(void) : Private function (temporarily visible to dynamically linked libraries)

An example: The public macro Py_DECREF calls the private function _Py_DecRef. The function needs to be visible to the linker, but it’s not part of the API.

Also, how would do you mark private macros? We still have those.