Python Stable Binary API

Is anyone familiar with Python Stable Application Binary Interface? Am I reading this correctly that if we build ParaView limiting ourselves to the stable API we can always easily use any compatible version of Python at runtime? If so, does anyone know if the API is adequate enough for our use-cases?

If answer to all of these is yes, that’d be a great way of avoiding having to build and package specific version of Python in ParaView and instead flexibly support whatever version’s available on the user’s system.

It’s not sufficient because we define our own PyObject type structures. To declare them, we need to “access” every structure field. The stable ABI only guarantees that ob_refcnt and ob_type are accessible. You can see this in the field change that happened in 3.9 that we had warnings about the 0/nullptr mismatch.

Though we could declare our own types using this: