[pypy-dev] PyPy3: is bytecode really incompatible between releases?

Matti Picus matti.picus at gmail.com
Tue Oct 22 09:34:36 EDT 2019


On 20/10/19 11:21 pm, Armin Rigo wrote:
> Hi Matti,
> if you translate PyPy3.6 and the in-progress PyPy3.7
> then they'll try to use the same ".pypy-XY.pyc" extension, even though
> the internal bytecode version in that file is different.)

I see CPython uses the python {major}{minor} version: 
"example.cpython-36.pyc".

We should probably change our convention to do the same. Any idea where 
that happens?

> As for the precise question you're asking, "do we need to change the
> ABI designation in PyPy2", the answer is yes, imho: we should change
> it as soon as we break the ABI, even if only in a corner case that
> doesn't concern most C extensions...
>
>
> A bientôt,
>
> Armin.


The code in question is in pypy/module/imp/importing.py, and has a comment


# this used to change for every minor version, but no longer does: there
# is little point any more, as the so's tend to be cross-version-
# compatible, more so than between various versions of CPython. Be
# careful if we need to update it again: it is now used for both cpyext
# and cffi so's.  If we do have to update it, we'd likely need a way to
# split the two usages again.
#DEFAULT_SOABI = 'pypy-%d%d' % PYPY_VERSION[:2]
DEFAULT_SOABI = 'pypy-41'


So do we update it across the board for each change in the cpyext ABI?


Matti



More information about the pypy-dev mailing list