@@ -230,11 +230,11 @@ Ubuntu systems, ``apt install pythonX.Y`` does not even install
230
230
There is one situation where extensions that are linked in this way
231
231
can fail to work: if a host program (e.g., ``apache2 ``) uses
232
232
``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
238
238
embed-CPython-via-a-dlopened-plugin that we could locate, so this does
239
239
not seem to be a serious problem in practice. The incompatibility with
240
240
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]_,
247
247
UCS-2 vs UCS-4 builds
248
248
---------------------
249
249
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::
269
271
270
272
PKG-VERSION-cp27-cp27mu-manylinux1_x86_64.whl
271
273
^^^^^^ Good!
272
274
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::
274
276
275
277
PKG-VERSION-cp27-cp27m-manylinux1_x86_64.whl
276
278
^^^^^ Okay!
@@ -280,7 +282,7 @@ But you should never have a wheel with a name like::
280
282
PKG-VERSION-cp27-none-manylinux1_x86_64.whl
281
283
^^^^ BAD! Don't do this!
282
284
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
284
286
widespread among Linux CPython distributors.
285
287
286
288
0 commit comments