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