summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-04-25 18:13:10 (GMT)
committerGitHub <noreply@github.com>2019-04-25 18:13:10 (GMT)
commit8c3ecc6bacc8d0cd534f2b5b53ed962dd1368c7b (patch)
treedec5a169a27fde398d57e508f0eb383f1975e418 /Doc
parentd7befad328ad1a6d1f812be2bf154c1cd1e01fbc (diff)
downloadcpython-8c3ecc6bacc8d0cd534f2b5b53ed962dd1368c7b.zip
cpython-8c3ecc6bacc8d0cd534f2b5b53ed962dd1368c7b.tar.gz
cpython-8c3ecc6bacc8d0cd534f2b5b53ed962dd1368c7b.tar.bz2
bpo-21536: C extensions are no longer linked to libpython (GH-12946)
On Unix, C extensions are no longer linked to libpython. It is now possible to load a C extension built using a shared library Python with a statically linked Python. When Python is embedded, libpython must not be loaded with RTLD_LOCAL, but RTLD_GLOBAL instead. Previously, using RTLD_LOCAL, it was already not possible to load C extensions which were not linked to libpython, like C extensions of the standard library built by the "*shared*" section of Modules/Setup. distutils, python-config and python-config.py have been modified.
Diffstat (limited to 'Doc')
-rw-r--r--Doc/distutils/apiref.rst4
-rw-r--r--Doc/whatsnew/3.8.rst11
2 files changed, 11 insertions, 4 deletions
diff --git a/Doc/distutils/apiref.rst b/Doc/distutils/apiref.rst
index a825efc..c3cdfc8 100644
--- a/Doc/distutils/apiref.rst
+++ b/Doc/distutils/apiref.rst
@@ -277,6 +277,10 @@ the full reference.
| | simply skip the extension. | |
+------------------------+--------------------------------+---------------------------+
+ .. versionchanged:: 3.8
+
+ On Unix, C extensions are no longer linked to libpython.
+
.. class:: Distribution
diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst
index 344656b..2270334 100644
--- a/Doc/whatsnew/3.8.rst
+++ b/Doc/whatsnew/3.8.rst
@@ -851,16 +851,19 @@ Changes in the Python API
Changes in the C API
--------------------
+* On Unix, C extensions are no longer linked to libpython. When Python is
+ embedded, ``libpython`` must not be loaded with ``RTLD_LOCAL``, but
+ ``RTLD_GLOBAL`` instead. Previously, using ``RTLD_LOCAL``, it was already not
+ possible to load C extensions which were not linked to ``libpython``, like C
+ extensions of the standard library built by the ``*shared*`` section of
+ ``Modules/Setup``.
+
* Use of ``#`` variants of formats in parsing or building value (e.g.
:c:func:`PyArg_ParseTuple`, :c:func:`Py_BuildValue`, :c:func:`PyObject_CallFunction`,
etc.) without ``PY_SSIZE_T_CLEAN`` defined raises ``DeprecationWarning`` now.
It will be removed in 3.10 or 4.0. Read :ref:`arg-parsing` for detail.
(Contributed by Inada Naoki in :issue:`36381`.)
-
-Changes in the C API
---------------------------
-
* Instances of heap-allocated types (such as those created with
:c:func:`PyType_FromSpec`) hold a reference to their type object.
Increasing the reference count of these type objects has been moved from