Long time ago, even before the the official release, we had a bug report pointing out a problem while running Threads in a PySide application. We thought it was an important thing to solve, but we never expected that it will require a whole new way on how we interact with Python's Global Interpreter Lock (GIL).
We invested a lot of time trying to figure it out, and by mixing different approaches the team thought to solve the issue, we ended up finding a proper solution.
In a nutshell, the solution was done with:
A caching mechanism to avoid allocating the GIL when methods have no override with a Python Function.
Reduce the usage of Py_BEGIN_ALLOW_THREAD and Py_END_ALLOW_THREAD,
Not allowing threads by default in all the methods, but just when required.
You can read more about this adventure here: PYSIDE-803 but in summary, we are happy to let you all know that the reactivity in threading was greatly enhanced!🎉
The story didn't end there, since now with this strict approach we needed to take special care with many corner cases, one of them being PYSIDE-813, from which we learn that the CPython function PyDict_GetItem works with a thread state to maintain the global error variables, but more importantly we found a race condition that happened in our Signal Manager.
These fixes were in 5.14, and that's the reason we wanted to include the latest discoveries and fixes in two new version on top of 5.14.2.
When we were not busy figuring out the GIL and Threading issues in PySide, we spent our time listening to many request from Qt Customers who wanted to use some modules from Qt for Automation with Python. We are really happy to announce that 5.15.0 is the first release of Qt for Python with commercial additions:
Commercial customers will get the Python Packages (wheels) not from PyPi, which is it what enables you to just type pip install pyside2, but via an internal download link. After downloading the packages, it will be possible to install the files by running the following commands:
Remember that this does not include the Shiboken Generator, the binding generation tool, because the installation require extra steps, which you can follow here.
There are many ways to build Graphical User Interfaces with Python out there, but we have been seeing a large increment in our user base, and we firmly believe that that's the most important part of the project.
We joined a Hacktoberfest event in Berlin, where people decided to help us porting a couple of examples from C++ to Python. We are really thankful for that.
Our partner KDAB also contributed to Qt for Python, and we have managed to improve the module due to the interaction with them.
When users want to get started with contributions, we try to help them in our various communication channels. As an example, now we have QtSerialPort available in PySide, thanks to Andreas, an external contributor, who needed the module, and decided to contribute it to the project.
Last but not least, we want to thank our contributors who are actively helping other users on the Mailing list, IRC, Matrix, Gitter, Keybase, and Telegram.
If you are interested you can join us in any of these platforms here!.
We were developing Qt 5.15 with Qt6 in mind, and we are trying to focus in how to improve the current state of the module.
Documentation: C++ Snippets, missing examples, arguments errors, etc, those are the common problems we hear the community is having, and we are trying little by little to improve the current situation. Luckily, we are preparing guides for people to help us improve the current state of the docs.
Examples and Tutorials: After the Qt Virtual Tech Con 2020 many people started to ask for more examples, and the possibility to have longer sessions to describe the most popular cases. For this we are planning new events, and materials related to how to mix C++ and Python, and more.
Shiboken: Besides the high demand for tutorials and more examples, we are focusing our efforts on adjust the current behavior towards Qt6. We already started do some house cleaning in our binding generator tool. We would love to hear from you what's missing. What do you need related to Shiboken?
PySide: Improving the commercial offering will give us the opportunity of getting feedback from our customers, which will be using different commercial application scenarios, that will bring to the table new use cases from which we can improve the module.