Hello,

I'd like to bring up a topic to discussion which I know the QT project
takes very serious and I'd like to know if there are any plans to
implement this also on PySide6 and shiboken6.

Semantic versioning seems to be a widely adopted standard in many
projects (for details, see https://semver.org/). It basically means that
a library maintains backward compatibility when changing the minor
version number and it maintains forward/backward compatibility when
changing the patch version number (this is usually used for bugfix
releases).

In (C++) QT, the rules are even more strict, because QT guarantees also
binary backward compatibility when increasing the minor version number.
This basically means that it should be possible to use QT shared objects
6.4.0 for a project originally compiled against 6.0.0
(https://wiki.qt.io/Qt-Version-Compatibility).

In PySide / Qt for Python the version number seems not to give a lot of
guarantees. For example, the enum change introduced in 6.4.0 (with the
preview introduced in 6.3.1) doesn't seem to maintain backward
compatibility (a project written for 6.0.0 doesn't work anymore with
6.4.0). Admittetly, the "forgiveness mode" solves some (or most) of the
issues, but the blog post does mention cases where this is not going to
work. And I have found also a few cases which broke (see my previous
message). Obviously, the environment variable approach with
PYSIDE63_OPTION_PYTHON_ENUM is not maintaining backward compatibility
either. Therefore, a project respecting semantic versioning rules would
have needed to change the major version number for this change.

The situation gets even more unclear when shiboken comes into the game
additionally. When you have a project which uses shiboken to generate
python bindings for c++ classes (which additionally depend on C++ QT),
even switching between patch numbers has been binary incompatible very
often. I didn't try with 6.x.x versions, but I assume that this is still
the case? This is a pity because this basically means that the PySide6
dependency of such a project is a strict "PySide6==6.minor.patch"
because PySide6 has a dependency to "shiboken6==6.minor.patch". I'd love
to see at least binary compatibility between the patch versions, but
this would require the shiboken API to be binary compatible, which was
not the case in the 5.x.x versions.

So the question is: Are we going to see more backward compatibility in
the future of PySide6 / shiboken6? Will there ever be any guarantees?

Kind Regards
Christoph
_______________________________________________
PySide mailing list
PySide@qt-project.org
https://lists.qt-project.org/listinfo/pyside

Reply via email to