Qt is happy to announce Qt for Python 5.15.0! 🎊🐍
You can get the latest version with: pip install pyside2 or simply upgrade your current installation: pip install -U pyside2.
At the same time, the Qt developers wanted to release another version for users who are still using 5.14, so they decided to release 184.108.40.206. You can also get it via pip install pyside2==220.127.116.11.
The Qt developers spent most of their time fixing the old problem with threads and Python, but they still had time to work on other improvements as well, which you can check out in the changelog. Now let's talk a little about this release.
A long time ago, even before the official release, the Qt developers had a bug report indicating a problem when starting Threads in a PySide application. They understood that this needed to be addressed, but they never expected that it would require a completely new approach to interacting with the Python Global Interpreter Lock (GIL).
After spending a lot of time trying to figure this out, and mixing different approaches that the team tried to solve the problem, they eventually found the right solution.
In a nutshell, the solution was found with:
• A caching mechanism to avoid GIL allocation when methods are not overridden with a Python function.
• reducing the use of Py_BEGIN_ALLOW_THREAD and Py_BEGIN_ALLOW_THREAD,
• Don't allow threads by default in all methods, but only when necessary.
You can read more about this adventure here: PYSIDE-803, but in conclusion, we are happy to tell you that streaming reactivity has been greatly improved!
The story didn't end there, as now with this strict approach, Qt developers had to take extra care in many "edge cases" (an edge case is related to a problem or situation that only occurs outside of normal operating parameters), one of which is PYSIDE -813, from which the developers learned that the CPython function PyDict_GetItem works with thread state to support global error variables, but more importantly found a race condition that happened in the signal manager.
These fixes were in 5.14, which is why Qt wanted to include the latest discoveries and fixes in two new releases on top of 5.14.2.
When the Qt developers weren't busy figuring out the GIL and Threading issues in PySide, they spent a lot of time listening to requests from Qt clients who wanted to use some modules from Qt to automate with Python. Therefore, the Qt company is pleased to announce that 5.15.0 is the first version of Qt for Python with commercial additions:
• Qt CoAP,
• Qt MQTT и
• Qt OPC UA.
Commercial customers will receive Python Packages (wheels) not from PyPi , which allows you to simply type pip install pyside2, but from an internal download link. Once the packages are downloaded, you can install the files by running the following commands:
pip install shiboken2-5.15.0.commercial-5.15.0-cp35.cp36.cp37.cp38-none-win_amd64.whl
pip install PySide2-5.15.0.commercial-5.15.0-cp35.cp36.cp37.cp38-none-win_amd64.whl
Please note that this does not include Shiboken Generator, a binding tool, as installation requires additional steps.
There are many ways to create Graphical User Interfaces using Python, but Qt sees a significant increase in the user base, so they firmly believe that this is the most important part of the project.
The Qt company joined the Hacktoberfest event in Berlin, where people decided to help the Qt developers port a couple of examples from C ++ to Python. The Qt company is very grateful for this.
KDAB, being a partner of the Qt company, also contributed to Qt for Python, so the Qt developers were able to improve the module through interaction with them.
When users want to start with contributions, Qt tries to help them through its various communication channels. As an example, the company now has access to QtSerialPort in PySide thanks to Andreas, an external contributor who needed the module and decided to contribute it to the project.
Last but not least, the Qt company would like to thank its contributors who are actively helping other users on the Mailing list, IRC, Matrix, Gitter, Keybase and Telegram.
Qt has developed Qt 5.15 with Qt6 in mind, and is trying to focus on how to improve the current state of the module.
• Documentation: C++ code snippets, missing examples, argument errors, etc. are common problems that the Qt developers have encountered in the community, and they are gradually trying to improve the current situation. But the company is preparing guides for people to help them improve the current state of the documents.
• Examples and Tutorials: After Qt Virtual Tech Con 2020, many people started asking for more examples and the opportunity to run longer sessions to describe the most popular cases. To do this, Qt is planning new events and materials related to how to mix C++ and Python, and much more.
• Shiboken: In addition to the high demand for tutorials and other examples, the company is focusing its efforts on correcting the current behavior regarding Qt6. Have already started doing "house cleaning" in their binding generator tool. The Qt developers would like to hear from you what is missing. What do you need related to Shiboken?
• PySide: The enhancement of the commercial offering will give Qt the opportunity to receive feedback from its customers who will be using different commercial application scenarios, bringing new use cases to the table from which developers can improve the module.
Hello to all OSS projects based on PySide, Qt has been in direct contact with them to prioritize bugs and add new module-specific features.
Qt is doing its best to bring all the features of Qt6 (described in PYSIDE-904) to its users, but developers would be even happier to hear what you think is needed or missing.