On 19/10/19 11:55 pm, Michał Górny wrote:
Hello,
I've noticed that the compiled module suffix keeps changing between
PyPy3 releases: it's been .pypy3-71-*.so for 7.1, now it's .pypy3-72-
*.so (also .pyc). However, this is a bit surprising to me given that
for PyPy2 it's still at .pypy-41.so.
Is the bytecode generated by successive PyPy3 releases really
incompatible between them? Or are the suffix changes only incidental?
They cause quite some trouble for us, since they make it necessary to
recompile installed modules on Gentoo, and PyPy's overzealous compiling
causes access violations for our users.
TIA for any help.
For c-extensions the major-minor version becomes the PEP 425 ABI tag
https://www.python.org/dev/peps/pep-0425/#abi-tag. My operating
assumption is that any change in the ABI requires a change in that
field. Our support for the massive CPython C-API changes between
versions, which changes the ABI. In particular, between 7.1 and 7.2 the
PyDateTime_CAPI structure size changed, and we changed the order of
fields in Py_Buffer, as well as adding many missing functions and
macros. The complete log is here
http://doc.pypy.org/en/latest/release-v7.2.0.html#c-api-cpyext-and-c-extensions
for both versions and here
http://doc.pypy.org/en/latest/release-v7.2.0.html#python-3-6-c-api for
the pypy3.6 specific ones.
The fact that the PyPy2 ABI tag did **not** change is most likely a bug
in the release process. I think there will be cases where pypy2-v7.1.1
and pypy2-v7.2.0 c-extension modules will be slightly incompatible with
eachother, although a cursory test of mixing NumPy across versions
(building on 7.2, copying into 7.1) seems to pass "np.test()". Perhaps a
better test would be to mix the pygolang c-extension modules, which seem
to stress-test the C-API more extensively given the number of issues it
exposes.
The pyc files should always be rebuilt in each python environment, so I
am not sure what problems could be caused by bumping the ABI tag. Does
Gentoo somehow mix the byte-compiled pyc files across versions?
I am not sure what you mean by "compiling causes access violations for
our users", could you point to a discussion of the problem?
Matti
_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev