Skip to content

Commit d800d88

Browse files
committed
More wording tweaks
1 parent b7f8259 commit d800d88

File tree

1 file changed

+28
-26
lines changed

1 file changed

+28
-26
lines changed

pep-513.rst

+28-26
Original file line numberDiff line numberDiff line change
@@ -230,11 +230,11 @@ Ubuntu systems, ``apt install pythonX.Y`` does not even install
230230
There is one situation where extensions that are linked in this way
231231
can fail to work: if a host program (e.g., ``apache2``) uses
232232
``dlopen()`` to load a module (e.g., ``mod_wsgi``) that embeds the
233-
CPython interpreter, and the host program does *not* set the
234-
``RTLD_GLOBAL`` flag, then the embedded CPython will be unable to load
235-
any extension modules that do not themselves link explicitly to
236-
``libpythonX.Y.so.1``. Fortunately, ``apache2`` *does* set the
237-
``RTLD_GLOBAL`` flag, as do all the other programs that
233+
CPython interpreter, and the host program does *not* pass the
234+
``RTLD_GLOBAL`` flag to ``dlopen()``, then the embedded CPython will
235+
be unable to load any extension modules that do not themselves link
236+
explicitly to ``libpythonX.Y.so.1``. Fortunately, ``apache2`` *does*
237+
set the ``RTLD_GLOBAL`` flag, as do all the other programs that
238238
embed-CPython-via-a-dlopened-plugin that we could locate, so this does
239239
not seem to be a serious problem in practice. The incompatibility with
240240
Debian/Ubuntu is more of an issue than the theoretical incompatibility
@@ -247,30 +247,32 @@ the scope of ``manylinux1``; for more discussion see: [9]_, [10]_,
247247
UCS-2 vs UCS-4 builds
248248
---------------------
249249

250-
All versions of CPython 2.x, plus CPython 3.0-3.2, can be built in two
251-
ABI-incompatible modes: one where Unicode is stored using UCS-2, and
252-
one where it's stored using UCS-4 (controlled by
253-
``--enable-unicode=ucs2`` versus ``--enable-unicode=ucs4``; CPython
254-
3.3 and greater use a different storage method that always supports
255-
UCS-4). If we want to make sure UCS-2 wheels don't get installed into
256-
UCS-4 CPythons and vice-versa, then something must be done.
257-
258-
An earlier version of this PEP included a requirement that manylinux1
259-
wheels targeting these older CPython versions should always use the
260-
UCS-4 ABI. But then, in between the PEP's initial acceptance and its
261-
implementation, ``pip`` and ``wheel`` gained first-class support for
262-
tracking and checking this aspect of ABI compatibility for the
263-
relevant CPython versions, which is a better solution. So we now allow
264-
the ``manylinux1`` platform tags to be used in combination with any
265-
SOABI field. However, to maintain compatibility it is crucial to
266-
ensure that all ``manylinux1`` wheels set a non-trivial abi tag. For
267-
example, a wheel built against a UCS-4 CPython might have a name
268-
like::
250+
All versions of CPython 2.x, plus CPython 3.0-3.2 inclusive, can be
251+
built in two ABI-incompatible modes: builds using the
252+
``--enable-unicode=ucs2`` configure flag store Unicode data in UCS-2
253+
(or really UTF-16) format, while builds using the
254+
``--enable-unicode=ucs4`` configure flag store Unicode data in
255+
UCS-4. (CPython 3.3 and greater use a different storage method that
256+
always supports UCS-4.) If we want to make sure ``ucs2`` wheels don't
257+
get installed into ``ucs4`` CPythons and vice-versa, then something
258+
must be done.
259+
260+
An earlier version of this PEP included a requirement that
261+
``manylinux1`` wheels targeting these older CPython versions should
262+
always use the ``ucs4`` ABI. But then, in between the PEP's initial
263+
acceptance and its implementation, ``pip`` and ``wheel`` gained
264+
first-class support for tracking and checking this aspect of ABI
265+
compatibility for the relevant CPython versions, which is a better
266+
solution. So we now allow the ``manylinux1`` platform tags to be used
267+
in combination with any ABI tag. However, to maintain compatibility it
268+
is crucial to ensure that all ``manylinux1`` wheels include a
269+
non-trivial abi tag. For example, a wheel built against a ``ucs4``
270+
CPython might have a name like::
269271

270272
PKG-VERSION-cp27-cp27mu-manylinux1_x86_64.whl
271273
^^^^^^ Good!
272274

273-
While a wheel built against the UCS-2 ABI might have a name like::
275+
While a wheel built against the ``ucs2`` ABI might have a name like::
274276

275277
PKG-VERSION-cp27-cp27m-manylinux1_x86_64.whl
276278
^^^^^ Okay!
@@ -280,7 +282,7 @@ But you should never have a wheel with a name like::
280282
PKG-VERSION-cp27-none-manylinux1_x86_64.whl
281283
^^^^ BAD! Don't do this!
282284

283-
We note for information that the UCS-4 ABI appears to be much more
285+
We note for information that the ``ucs4`` ABI appears to be much more
284286
widespread among Linux CPython distributors.
285287

286288

0 commit comments

Comments
 (0)