- Compatibility level 1: APIs and ABIs are stable across three major releases
- Compatibility level 2: APIs and ABIs are stable within one major release
The libraries listed in the legacy (i.e. pre-perennial manylinux) policies fall into the following categories:
- ncurses-libs (
In theory, this means that RHEL 9 could drop versioned symbols for the GNU libc version shipped in RHEL 6, or even that RHEL 7 drops the versioned symbols from glib2 which were present in RHEL 6. I think this is pretty unlikely as it would affect a lot of existing binary wheels, but it is conceivable that this can happen on some Linux distros for very old library versions.
I was wondering if we should perform backwards compatibility ABI checks on the symbols to detect this across distros. As an example, knowing what symbols and symbol versions were present in
manylinux_2_12, we could check that all those are present on newer
manylinux distro versions. We could probably do this in @mayeut’s PEP 600 compliance tool.
I’m not quite sure what do to with the results, but ideally tools like
pip should be able to reject wheels which are incompatible with the runtime platform due missing versioned symbols.
Is this a valid concern? I couldn’t find anything concrete on this issue in the manylinux PEPs.