- PVSM.RU - https://www.pvsm.ru -

Новости Qt, май 2018 — декабрь 2018

Очередной сборник новостей Qt, на этот раз за последние полгода с прошлой статьи [1]. Релизы 5.11 и 5.12, реинкарнация PySide, внезапные похороны Qbs, выход Qt Design Studio и значительное улучшение условий лицензий для стартапов.

ДДПВ

Интересной КПДВ я не придумал, потому вместо неё просто ДДПВ — это к нам летом в офис приходил фотограф на корпоративную фотосессию, из которой я и подрезал фотку коллеги.

Начнём с нарушенных обещаний. В конце предыдущей статьи были размещены два голосования: за перевод поста из официального блога [2] про портирование Qt на микроконтроллеры и за написание обзора Safe Renderer [3], и голосование показало, что обе статьи заслуживают публикации. Но в размещении микроконтроллерной статьи НЛО автору отказало: "Публикации рекламного характера вне корпоративного блога и хаба «Я пиарюсь» запрещены правилами сайта". Сложно сказать, что именно там было рекламного (можете посмотреть английский оригинал и оценить), но в таком случае про Safe Renderer не было даже и смысла пытаться (потому что это исключительно коммерческая фича). Так что простите, если кто ждал.

Содержание на сегодня:

Новые релизы

Qt 5.11

22 мая вышел Qt 5.11 [17].

Не могу выделить какие-то особо значительные нововведения, кроме переработанного [18] процесса компиляции QML, который должен существенно улучшить производительность Qt Quick приложений:

QML compiler pipeline

Также в релизе:

  • поддержка High-DPI для Qt Widgets на Windows (до этого было только в Mac OS и Linux);
  • поддержка сжатых текстур в Qt Quick [19];
  • превью реализации коммуникационного протокола OPC UA [20];
  • превью Qt for WebAssembly [21]. Но зачем.

Qt 5.12

6 декабря вышел Qt 5.12 [22] (обзор от CTO [23]), очередной LTS релиз, который будет поддерживаться 3 года.

Улучшена производительность [24]. В основном это касается движка QML и JavaScript, который теперь соответствует стандарту ECMAScript 7 [25].

Релиз Qt Remote Object [26] — механизма межпроцессорного взаимодействия как на одном хосте, так и между разными хостами по сети.

Релиз Qt Quick WebGL [27], он же Qt WebGL streaming — то есть возможность транслировать GUI приложения, работающего на удалённом хосте (устройстве без дисплея), и отображать его в браузере на десктопе или планшете. Как пример — Raspberry Pi с камерой, Qt-приложение стримит GUI вместе с выводом камеры, а рендерится всё в обычном Safari на iPad:

Qt Quick WebGL

Очень прикольная штука, я прямо восторгом с ней поигрался, но откровенно говоря я не представляю, кто и зачем будет этим пользоваться. Если и так подразумевается работа с девайсом из браузера, то зачем городить GUI на Qt Quick и стримить его в WebGL? Не проще ли тогда просто запустить на девайсе нормальный веб-сервер, а GUI на клиенте будет с HTML/CSS/JS без вот этого всего? Странная фича, в общем.

В Qt Quick Controls 2 наконец-то добавили TableView [28]. Вот даже сравнение [29] производительности аналога из Qt Quick Controls 1. К сожалению, по-прежнему никаких новостей про TreeView [30].

Pointer Handlers вышли из статуса превью и переименовались в Input Handlers [31]. Это новый модуль для обработки ввода с мыши, клавиатуры и тачскрина. В связи с этим в какой-то момент следует ожидать "устаревания" MouseArea [32].

В Qt Virtual Keyboard [33] помимо прочего добавлены новые языки а также новый движок рукописного ввода — MyScript [34].

В Qt for Device Creation появились так называемые Qt Board Support Packages [35]. Это те же самые Yocto образы и тулчейны, только теперь в виде отдельно загружаемых и подключаемых к установщику пакетов. Смысл QBSP заключается [36] в поддержке партнёров-вендоров железа, чтобы им было удобнее создавать и распространять Boot to Qt образы для своих устройств.

Развивается поддержка Wayland [37].

Обновления инструментов

Qt Creator

За полгода вышло две версии Qt Creator: 4.7 [38] и 4.8 [22].

Из наиболее значимых нововведений — поддержка Language Server Protocol [39], то есть возможность расширения Qt Creator для работы с большим количеством языков программирования. В то же время, "родной" QML до сих пор не в курсе последних версий модулей для импорта, из-за чего их приходится перебирать научным тыком.

В версии 4.8 также должен был быть добавлен модуль телеметрии [40], но в этот релиз он не попал, так что ожидайте в 4.9.

Qt Design Studio

Тот самый полусекретный проект [41]:

Как вы знаете, в составе Qt есть прекрасный инструмент для создания GUI на Widgets — Qt Designer [44]. С ним можно работать как из Qt Creator (вкладка Design), так и запустив его как самостоятельное приложение для работы с .iu файлами.

С появлением Qt Quick добавился инструмент Qt Quick Designer [45], который уже нельзя запустить как отдельное приложение, так как он насмерть прибит гвоздями к Qt Creator.

И вот Qt Design Studio [46] — это тот же самый Qt Quick Designer, но с дополнительным функционалом. Также это теперь самостоятельное приложение, хотя по факту это просто покалеченная копия Qt Creator, которая запускается сразу в режиме дизайна Qt Quick (с возможностью переключения в режим редактирования QML).

Из нового функционала: линия времени для работы с анимациями, удобные диалоги для настройки этих анимаций и компонент live-preview для предпросмотра изменений на лету как в отдельном окне, так и на присоединённом планшете или другом устройстве. Примечательно, что все эти вещи вряд ли когда-нибудь попадут обратно в Qt Quick Designer.

Qt Design Studio предназначена для дизайнеров, и подразумевается, что они будут создавать в ней дизайн приложения, передавать результат (.ui.qml файлы) разработчикам, а разработчики будут работать с ними в полноценном Qt Creator.

Также ведётся разработка плагинов для существующих популярных инструментов дизайна, чтобы дизайнеры могли экспортировать свои наработки из этих инструментов в QML. Первым был создан плагин для Adobe Photoshop [50], следующим ожидается плагин для Sketch [51], затем Adobe XD [52] и другие.

Я не дизайнер, потому мне сложно оценить полезность Qt Design Studio. Когда в Qt были только Widgets, я с плохо скрываемым удовольствием работал в Qt Designer, это отличный инструмент для создания GUI и по сей день. Когда появился Qt Quick, я несколько раз пытался пользоваться Qt Quick Designer, но в итоге бросил и просто пишу QML, для меня так удобнее и быстрее. А так как Qt Design Studio это почти что и есть Qt Quick Designer, то лично я ей пользоваться буду вряд ли. В то же время, насколько мне известно, ряд дизайнерских агентств, которые получили Qt Design Studio на "тест-драйв", отзываются о ней положительно.

В плане лицензирования инструмент вроде как заявлен в Open Source (GPLv3), но в то же время вроде как для распространения результатов работы требуется коммерческая лицензия. Да и просто загрузить установщик не так-то просто, требуется наличие Qt Account [53]. В общем, менеджеры продукта пока ещё не совсем определились.

Qt 3D Studio

Продолжается развитие Qt 3D Studio [54]. За это время вышли версии 2.0 [55] (более подробный обзор [56]), 2.1 [57] и 2.2 [58].

Наиболее значительно изменение — переход с движка оригинальной NVIDIA DRIVE Design Studio на собственный движок на основе Qt 3D и значительное улучшение производительности [59].

Также был обозначен план объединения Qt 3D Studio и Qt Design Studio в единый инструмент, то есть вместо двух это будет одно приложение для работы с 2D и 3D.

Анонс Kuesa

Говоря о 3D, тут KDAB выпустили своё решение для работы с 3D — Kuesa [60].

В отличие от Qt 3D Studio, они не стали тратить ресурсы на собственный инструмент для 3D моделирования, а позволяют дизайнерам работать с их привычными инструментами (3DS Max, Blender), и далее разработчик может использовать экспортированные glTF [61] модели в Qt. Для удобства в наличии также есть приложение для предпросмотра модели и наименований компонентов, чтобы разработчик знал как к ним обращаться у себя в коде, не открывая модель в оригинальном 3D редакторе.

На мой взгляд Kuesa является конкурирующим Qt 3D Studio решением (и судя по всему, более удачным), и это досадно, потому что вместо того, чтобы параллельно заниматься одним и тем же, эти усилия можно было бы потратить на что-то более полезное (я сейчас не обязательно про KDAB). Тут кстати будет напомнить что сам Qt 3D это тоже вклад KDAB [62].

Релиз PySide2 / Qt for Python

PySide [63] вернулся, переименовался сначала в PySide2 [64], а потом в скучный Qt for Python [65].

Первый релиз [66] вышел с Qt 5.11, но он всё ещё не считался за полноценный, а вот буквально на днях выпустили уже официальный релиз [67] вместе с Qt 5.12.

Вряд ли я могу рассказать здесь что-то новое. Как и раньше, PySide — это возможность использовать Qt (в основном, для GUI) из Python. Распространяется через PyPI [68], то есть в состав официального установщика Qt не входит, и устанавливается отдельно через pip. Поддержка на embedded платформах пока отсутствует, хотя и запланирована.

Списка отличий от PyQt [69] нет, хотя разработчики и заверяют, что PySide почти ни в чём не уступает, а скоро будет ещё и превосходить. С точки зрения коммерческого лицензирования, с PySide "всё включено" в стоимость лицензии Qt без дополнительной платы, а с PyQt надо ещё платить в Riverbank; с точки зрения Open Source, PySide доступен как под GPLv3, так и под LGPLv3, в то время как PyQt доступен только под GPLv3.

Дальнейшее портирование на MCU

Продолжается работа над портированием Qt на железо уровня микроконтроллеров. Помимо RTEMS [70] были опробованы FreeRTOS [71] (которая стала выглядеть чуть получше после того как Amazon добавил туда некоторую поддержку POSIX) и uClinux [72], и пока вывод такой, что мы всё-таки рекомендуем именно RTEMS.

Говоря о конкретных устройствах, помимо STM32F4/F7 [73] удалось достичь хороших результатов на NXP i.MX RT1050 [74].

Отказ от Qbs

Топ 10 предательств в аниме! Вероломно, без объявления войны, в официальном блоге было заявлено [75] об отказе от Qbs [76].

Вкратце: разработка Qbs прекращается, хотя и будет выпущен ещё один релиз, поддержка закончится в конце 2019 года, qmake пока останется, но в перспективе (Qt 6) будет осуществлён переход на CMake как основную систему сборки.

Пост собрал две сотни комментариев (рекорд для нашего блога), и собрал бы больше, но комментарии к постам автоматически закрываются через две недели после публикации. Вот тут [77] ещё есть комментарии на русском.

Опуская техническое обоснование решения, основное возмущение вызвал тот факт, что несколько лет сообществу твердили о том как Qbs прекрасен и какой это шаг вперёд, не говоря уже о заверениях что это будет официальная система сборки в Qt 6 и всем надо на неё переходить (и народ таки начал переходить), и тут вдруг Qbs закрывается таким стремительным домкратом.

Изменения в коммерческом лицензировании

Коммерческое лицензионное соглашение [78] обновилось до версии 4.1. Добавился аппендикс с перечислением лицензируемого/распространяемого ПО.

Значительно улучшились условия лицензии для стартапов [79]: во-первых, она теперь не со скидкой, а вообще полностью бесплатная, а во-вторых, теперь доступны компоненты и из Device Creation тоже (готовые образы на основе Yocto Linux, тулчейны для кросс-компиляции и т.д.), однако для распространения продуктов-устройств рантаймы покупать всё равно потребуется (логика такая, что если есть деньги на железо, то должны найтись и на рантаймы).

Лицензия для стартапов выдаётся на год и потом может быть продлена ещё на год. Юридически это полноценная коммерческая лицензия без необходимости выполнять требования GPL/LGPL. После первого года (или двух) она превращается в обычную лицензию за полную стоимость.

У стартапных лицензий действуют следующие ограничения:

  • годовой доход компании должен быть меньше 100 000 долларов, иначе вы не квалифицируетесь как стартап;
  • получить лицензии можно максимум на 3 разработчиков;
  • техническая поддержка сильно урезана: 5 тикетов в месяц и низкий приоритет в очереди.

Кстати, не исключено, что вашу заявку на стартапную лицензию будет рассматривать как раз девушка с обложки статьи.

Другие новости

В этом году Qt World Summit [80] прошёл два раза: Бостоне и потом в Берлине. Записей выступлений пока нет, есть только короткий видео-обзор [81] берлинского и пост от KDAB [82].

Грядёт обновление иконок приложений:

Новые иконки Qt

Как вам? Мне тоже. А главное, откуда опять эта нужда в редизайне, не так давно был уже один, и довольно неплохой.

Компания Forrester провела исследование [83], в котором изучила влияние Qt на бизнес, всякие там ROI показатели и прочее. Вроде как это должно помочь компаниям оценить пользу от Qt и принять решение о приобретении коммерческой лицензии. Есть даже онлайн-калькулятор [84] для подсчёта сэкономленных попугаев.

На этом с новостями пока всё, следующий выпуск будет где-нибудь в мае или как наберётся достаточно материала.

Автор: abagnale

Источник [85]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/qt-2/303366

Ссылки в тексте:

[1] прошлой статьи: https://www.pvsm.ru/post/354972

[2] поста из официального блога: http://blog.qt.io/blog/2018/05/03/qt-microncontrollers-mcu/

[3] Safe Renderer: https://doc.qt.io/QtSafeRenderer/qtsr-overview.html

[4] Новые релизы: #releases

[5] Qt 5.11: #qt511

[6] Qt 5.12: #qt512

[7] Обновления инструментов: #tools

[8] Qt Creator 4.8: #qtc

[9] Qt Design Studio 1.0: #qds

[10] Qt 3D Studio 2.2: #q3ds

[11] Анонс Kuesa: #kuesa

[12] Релиз PySide / Qt for Python: #pyside

[13] Дальнейшее портирование на MCU: #mcu

[14] Отказ от Qbs: #qbs

[15] Изменения в коммерческом лицензировании: #license

[16] Другие новости: #other

[17] вышел Qt 5.11: http://www.opennet.ru/opennews/art.shtml?num=48641

[18] переработанного: http://blog.qt.io/blog/2018/05/22/optimizing-qml-compiler-pipeline/

[19] сжатых текстур в Qt Quick: https://blog.qt.io/blog/2018/05/07/compressed-textures-in-qt-5-11/

[20] OPC UA: https://blog.qt.io/blog/2018/05/16/opc-ua-support-qt-5-11/

[21] Qt for WebAssembly: http://blog.qt.io/blog/2018/05/22/qt-for-webassembly/

[22] вышел Qt 5.12: http://www.opennet.ru/opennews/art.shtml?num=49731

[23] обзор от CTO: https://youtu.be/IDMvhb0GOFs

[24] Улучшена производительность: http://blog.qt.io/blog/2018/11/16/qt-quick-performance-improvements-qt-5-12-lts/

[25] соответствует стандарту ECMAScript 7: https://bugreports.qt.io/browse/QTBUG-47735

[26] Qt Remote Object: https://doc.qt.io/qt-5.11/qtremoteobjects-gettingstarted.html

[27] Qt Quick WebGL: http://blog.qt.io/blog/2018/11/23/qt-quick-webgl-release-512/

[28] TableView: https://doc.qt.io/qt-5.12/qml-qtquick-tableview.html

[29] сравнение: http://blog.qt.io/blog/2018/12/20/tableview-performance/

[30] TreeView: https://bugreports.qt.io/browse/QTBUG-61630

[31] Input Handlers: https://doc.qt.io/qt-5/qtquickhandlers-index.html

[32] MouseArea: https://doc.qt.io/qt-5/qml-qtquick-mousearea.html

[33] Qt Virtual Keyboard: http://doc.qt.io/qt-5/qtvirtualkeyboard-index.html

[34] MyScript: http://blog.qt.io/blog/2018/11/28/handwriting-essential-input-method-successful-user-experience/

[35] Qt Board Support Packages: https://doc.qt.io/QtForDeviceCreation/qtdc-qbsp.html

[36] заключается: http://blog.qt.io/blog/2018/12/14/board-support-package-commercial-build-enablers-qt-partners/

[37] Wayland: http://blog.qt.io/blog/2018/12/14/whats-new-wayland-platform-plugin-qt-5-12/

[38] 4.7: http://www.opennet.ru/opennews/art.shtml?num=48987

[39] Language Server Protocol: https://en.wikipedia.org/wiki/Language_Server_Protocol

[40] модуль телеметрии: https://bugreports.qt.io/browse/QTCREATORBUG-20250

[41] полусекретный проект: https://habr.com/post/354972/#anchordsanchorqt-design-studio

[42] официальный анонс: http://blog.qt.io/blog/2018/06/26/qt-design-studio-the-new-age-of-ui-development/

[43] релиз: http://www.opennet.ru/opennews/art.shtml?num=49499

[44] Qt Designer: http://doc.qt.io/qt-5/qtdesigner-manual.html

[45] Qt Quick Designer: http://doc.qt.io/qtcreator/creator-using-qt-quick-designer.html

[46] Qt Design Studio: https://doc.qt.io/qtdesignstudio/index.html

[47] рекламный ролик: https://youtu.be/EgjCvZWEPWk

[48] краткий обзор: https://youtu.be/kVdQ0V8mJE4

[49] пример работы с проектом: https://youtu.be/aV6kFxH3Xws

[50] Adobe Photoshop: https://www.adobe.com/products/photoshop.html

[51] Sketch: https://www.sketchapp.com

[52] Adobe XD: https://www.adobe.com/products/xd.html

[53] Qt Account: https://account.qt.io/

[54] Qt 3D Studio: https://doc.qt.io/qt3dstudio/qt3dstudio-index.html

[55] 2.0: http://blog.qt.io/blog/2018/06/26/qt-3d-studio-2-0-released/

[56] более подробный обзор: http://blog.qt.io/blog/2018/06/27/whats-qt-3d-studio-scene/

[57] 2.1: http://blog.qt.io/blog/2018/10/01/qt-3d-studio-2-1-released/

[58] 2.2: http://blog.qt.io/blog/2018/12/13/qt-3d-studio-2-2-released/

[59] улучшение производительности: http://blog.qt.io/blog/2018/12/19/qt-3d-studio-performance-improvements/

[60] Kuesa: https://www.kdab.com/kdab-releases-kuesa-for-3d-asset-creation-and-integration-workflow/

[61] glTF: https://en.wikipedia.org/wiki/GlTF

[62] вклад KDAB: http://blog.qt.io/blog/2016/06/16/introducing-qt-3d/

[63] PySide: https://wiki.qt.io/PySide

[64] PySide2: https://wiki.qt.io/Qt_for_Python

[65] Qt for Python: https://www.qt.io/qt-for-python

[66] Первый релиз: http://blog.qt.io/blog/2018/06/13/qt-python-5-11-released/

[67] официальный релиз: http://blog.qt.io/blog/2018/12/18/qt-python-5-12-released/

[68] PyPI: https://pypi.org/project/PySide2/

[69] PyQt: https://riverbankcomputing.com/software/pyqt/intro

[70] RTEMS: https://www.rtems.org

[71] FreeRTOS: https://www.freertos.org

[72] uClinux: http://www.uclinux.org

[73] STM32F4/F7: https://www.st.com/en/microcontrollers/stm32f7-series.html?querycriteria=productId=SS1858

[74] NXP i.MX RT1050: https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/i.mx-applications-processors/i.mx-rt-series/i.mx-rt1050-crossover-processor-with-arm-cortex-m7-core:i.MX-RT1050

[75] было заявлено: http://blog.qt.io/blog/2018/10/29/deprecation-of-qbs/

[76] Qbs: http://doc.qt.io/qbs/

[77] тут: http://www.opennet.ru/opennews/art.shtml?num=49519

[78] лицензионное соглашение: https://www.qt.io/terms-conditions/

[79] лицензии для стартапов: https://www.qt.io/start-up-plan/

[80] Qt World Summit: https://www.qt.io/qtws18/home/

[81] видео-обзор: https://youtu.be/qSGVv0HFcIM

[82] пост от KDAB: https://www.kdab.com/kdab-demos-at-qt-world-summit-berlin/

[83] исследование: https://www.qt.io/forrester-tei

[84] онлайн-калькулятор: https://www.qt.io/roi-calculator

[85] Источник: https://habr.com/post/434338/?utm_campaign=434338