> requires some newer tools like -fvisibility=hidden that work
> differently across different platforms, and so far no-one's done the
> work to sort out the details.

I've started looking at this, but quite apart from the specifics of applying 
-fvisibility=hidden, there are some things that aren't yet clear to me about 
the intent behind some of our symbol definitions. For example, the file 
Include/fileutils.h contains the definitions

PyAPI_FUNC(wchar_t *) Py_DecodeLocale(const char *arg, size_t *size);

and 

PyAPI_FUNC(int) _Py_DecodeLocaleEx(const char *arg,
    wchar_t **wstr,
    size_t *wlen,
    const char **reason,
    int current_locale,
    _Py_error_handler errors);

However, only the first of these is documented, though the definition via 
PyAPI_FUNC implies that both are part of the public API. If this is the case, 
why aren't both documented? If _Py_DecodeLocaleEx is not part of the public API 
(and the leading underscore suggests so), should it be polluting the symbol 
space?

The comment for PyAPI_FUNC is "Declares a public Python API function and return 
type". Is this really the case, or has PyAPI_FUNC been coopted to provide 
external linkage for use by Python-internal code in different compilation 
units?  _Py_DecodeLocaleEx is called in Modules/_testcapimodule.c and also in 
Objects/unicodeobject.c.

If we want to take steps to restrict symbol visibility, it will potentially 
affect all of the code base - so presumably, a PEP would be required, even 
though it's an implementation detail from the point of view of the language 
itself?

Regards,

Vinay Sajip
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/H726K4PDW6PI34VVBX6HN26MAE5IZUNG/

Reply via email to