Компанія Qt рада оголосити про вихід Qt для Python 5.15.0! 🎊🐍
Ви можете отримати останню версію за допомогою pip install pyside2 або просто оновивши поточну установку: pip install -U pyside2.
У той же час, розробники Qt хотіли випустити ще одну версію для користувачів, які все ще використовують 5.14, тому вирішили випустити 5.14.2.2. Ви можете також отримати його через pip install pyside2==5.14.2.2.
Розробники Qt витратили більшу частину часу на вирішення старої проблеми, пов'язаної з потоками та Python, але все ж таки у них був час попрацювати і над іншими поліпшеннями, які ви можете перевірити у списку змін. Тепер давайте трохи поговоримо про цей випуск.
Потоки в PySide
Давним-давно, ще до офіційного випуску, розробники Qt мали звіт про помилку, що вказує на проблему при запуску Threads у додатку PySide. Вони розуміли, що це потрібно вирішити, але ніколи не очікували, що це вимагатиме абсолютно нового підходу до взаємодії з Python Global Interpreter Lock (GIL).
Витративши багато часу, намагаючись це з'ясувати, і, змішавши різні підходи, якими команда намагалася вирішити проблему, у результаті знайшли правильне рішення.
У двох словах, рішення було знайдено за допомогою:
• Механізму кешування, що дозволяє уникнути виділення GIL, коли методи не мають перевизначення за допомогою функції Python.
• зменшення використання Py_BEGIN_ALLOW_THREAD та Py_BEGIN_ALLOW_THREAD,
• Не дозволяти потоки за замовчуванням у всіх методах, але лише за необхідності.
Ви можете прочитати більше про цю пригоду тут: PYSIDE-803, але насамкінець, ми раді повідомити вам, що реактивність у потоці була значно покращена!
На цьому історія не закінчилася, оскільки тепер з цим суворим підходом розробникам Qt потрібно було виявляти особливу обережність у багатьох «крайніх випадках» (крайній випадок пов'язаний із проблемою чи ситуацією, що виникає лише за межами нормальних робочих параметрів), одним з яких є PYSIDE -813, з якого розробники дізналися, що CPython функція PyDict_GetItem працює зі станом потоку, щоб підтримувати змінні глобальних помилок, але що важливіше, знайшли стан гонки, який стався в диспетчері сигналів.
Ці виправлення були в 5.14, і саме тому компанія Qt хотіла включити останні відкриття та виправлення у дві нові версії поверх 5.14.2.
Комерційна пропозиція
Коли розробники Qt не були зайняті з'ясуванням проблем GIL та Threading у PySide, вони приділили багато часу прослуховування запитів від клієнтів Qt, які хотіли використовувати деякі модулі Qt для автоматизації з Python. Тому компанія Qt рада оголосити, що 5.15.0 – це перша версія Qt для Python з комерційними доповненнями:
• Qt CoAP,
• Qt MQTT и
• Qt OPC UA.
Комерційні клієнти будуть отримувати Python Packages (wheels) не від PyPi , що дозволяє просто набрати pip install pyside2, а за внутрішнім посиланням для скачування. Після завантаження пакетів (packages) можна буде встановити файли, виконавши такі команди:
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
Пам'ятайте, що сюди не входить Shiboken Generator, інструмент створення прив'язок, оскільки для встановлення потрібні додаткові кроки.
Запрошення спільноти
Існує безліч способів створення графічних інтерфейсів (Graphical User Interfaces) з використанням Python, але компанія Qt бачить значний приріст користувальницької бази, тому твердо вірить, що це найважливіша частина проекту.
Компанія Qt приєдналися до заходу Hacktoberfest у Берліні, де люди вирішили допомогти розробникам Qt перенести кілька прикладів з C++ на Python. Компанія Qt дуже вдячна за це.
KDAB як партнер компанії Qt також зробив свій внесок у Qt для Python, тому розробникам Qt вдалося покращити модуль завдяки взаємодії з ними.
Коли користувачі хочуть почати з вкладів, компанія Qt намагається допомогти їм своїми каналами зв'язку. Як приклад, тепер компанія має доступ до QtSerialPort в PySide, завдяки Андреасу, зовнішньому учаснику, який потребував модуля, і вирішив внести його в проект.
І останнє, але не менш важливе: компанія Qt хоче подякувати своїм учасникам, які активно допомагають іншим користувачам в Mailing list, IRC, Matrix, Gitter, Keybase та Telegram.
Що далі?
Компанія Qt розробила Qt 5.15 з урахуванням Qt6 і намагається зосередитися на тому, як покращити поточний стан модуля.
•
Документація:
фрагменти коду C++, відсутні приклади, помилки аргументів і т. д. - ось спільні проблеми, з якими розробники Qt зіткнулися у спільноті, і вони поступово намагаються покращити поточну ситуацію. Але компанія готує посібники для людей, які допоможуть їм покращити поточний стан документів.
• Приклади та навчальні посібники: після Qt Virtual Tech Con 2020 багато хто почав запитувати більше прикладів та можливість проводити більш тривалі заняття для опису найбільш популярних випадків. Для цього компанія Qt планує нові події та матеріали, пов'язані з тим, як змішувати C++ та Python та багато іншого.
• Shiboken: Крім високого попиту на підручники та інші приклади, компанія концентрує свої зусилля на коригуванні поточної поведінки щодо Qt6. Вже почали робити "прибирання будинку" у своєму інструменті генератора прив'язок. Розробники Qt хотіли б почути від вас чого не вистачає. Що вам потрібно, пов'язане із Shiboken?
• PySide: Поліпшення комерційної пропозиції дасть компанії Qt можливість отримувати відгуки від своїх клієнтів, які будуть використовувати різні сценарії комерційних програм, що принесе на стіл нові варіанти використання, з яких розробники зможуть покращити модуль.
Привіт усім проектам OSS, заснованим на PySide, у компанії Qt був прямий контакт з ними, щоб розставити пріоритети помилок і додати нові спеціальні функції для модуля.
Компанія Qt робить все можливе, щоб донести до своїх користувачів всі можливості Qt6 (описані в PYSIDE-904), але розробники були б ще щасливішими почути, що, на вашу думку, необхідно чи відсутнє.