summaryrefslogtreecommitdiff
path: root/docs/markdown/snippets/python-extension-module-visibility.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/markdown/snippets/python-extension-module-visibility.md')
-rw-r--r--docs/markdown/snippets/python-extension-module-visibility.md12
1 files changed, 12 insertions, 0 deletions
diff --git a/docs/markdown/snippets/python-extension-module-visibility.md b/docs/markdown/snippets/python-extension-module-visibility.md
new file mode 100644
index 000000000..ed1fc4815
--- /dev/null
+++ b/docs/markdown/snippets/python-extension-module-visibility.md
@@ -0,0 +1,12 @@
+## Python extension modules now build with hidden visibility
+
+Python extension modules are usually expected to only export a single symbol,
+decorated with the `PyMODINIT_FUNC` macro and providing the module entry point.
+On versions of python >= 3.9, the python headers contain GNU symbol visibility
+attributes to mark the init function with default visibility; it is then safe
+to set the [[shared_module]] inherited kwarg `gnu_symbol_visibility: 'hidden'`.
+
+In the interest of doing the right thing out of the box, this is now the
+default for extension modules for found installations that are new enough to
+have this set, which is not expected to break anything, but remains possible to
+set explicitly (in which case that will take precedence).