Найти в Дзене

Релиз Qt 6.2 LTS

Telegram Teletype vc.ru dzen.ru Об этом заявил Ларс Кнолл 30 октября 2021 года в блоге. Попытаемся максимально близко к тексту оригинала познакомиться с изменениями. Наконец-то получим в Qt 6.x всё, чем пользовались в Qt 5.15: Я рад объявить о выпуске Qt 6.2. Qt 6.2 - это выпуск, над которым мы все работали с тех пор, как начали наш путь к новой основной версии Qt. Он выигрывает от всех архитектурных обновлений, которые мы сделали для Qt 6, и включает в себя практически все дополнительные модули, которые вам понравились с Qt 5.15. Дождались версию LTS: Qt 6.2 также является первым выпуском Qt 6, который будет долгосрочно поддерживаться компанией Qt для коммерческих клиентов Qt. Далее идет вода, про то как они зачем-то переписывали заново Qt 5.15: Наш план при переходе на Qt 6 заключался в том, чтобы сначала сосредоточиться на ядре Qt и внести архитектурные изменения, которые, по нашему мнению, были необходимы для поддержания конкурентоспособности Qt в ближайшие годы. Но это внимание та
Оглавление

Telegram Teletype vc.ru dzen.ru

Об этом заявил Ларс Кнолл 30 октября 2021 года в блоге.

Попытаемся максимально близко к тексту оригинала познакомиться с изменениями.

Наконец-то получим в Qt 6.x всё, чем пользовались в Qt 5.15:

Я рад объявить о выпуске Qt 6.2. Qt 6.2 - это выпуск, над которым мы все работали с тех пор, как начали наш путь к новой основной версии Qt. Он выигрывает от всех архитектурных обновлений, которые мы сделали для Qt 6, и включает в себя практически все дополнительные модули, которые вам понравились с Qt 5.15.
Релиз Qt 6.2 LTS
Релиз Qt 6.2 LTS

Дождались версию LTS:

Qt 6.2 также является первым выпуском Qt 6, который будет долгосрочно поддерживаться компанией Qt для коммерческих клиентов Qt.

Далее идет вода, про то как они зачем-то переписывали заново Qt 5.15:

Наш план при переходе на Qt 6 заключался в том, чтобы сначала сосредоточиться на ядре Qt и внести архитектурные изменения, которые, по нашему мнению, были необходимы для поддержания конкурентоспособности Qt в ближайшие годы. Но это внимание также означало, что нам пришлось пойти на компромисс в отношении дополнений, которые мы поддерживали, когда выпустили (https://www.qt.io/blog/qt-6.0-released?hsLang=en) Qt 6.0 (https://www.qt.io/blog/qt-6.0-released?hsLang=en). Таким образом, несмотря на то, что Qt 6.0 лучше и продвинутее, чем Qt 5.15, ему не хватало некоторых функций, которые обеспечивал Qt 5.15. С Qt 6.2 мы закрыли этот пробел и включили все широко используемые функции из Qt 5.15, а также новые функции, добавленные для Qt 6.

Вот следующее высказывание настораживает, получается не так просто будет перейти с Qt 5 на Qt 6:

С выпуском Qt 6.2 почти все наши пользователи должны иметь возможность перенести свой код с Qt 5 на Qt 6. Мы сделали это с помощью собственной оснастки. А именно, Qt Design Studio 2.2 (https://www.qt.io/blog/qt-design-studio-2.2-released?hsLang=en)

И конечно же новый Qt Creator:

и скоро выйдет бета-версия Qt Creator 6 основаны на Qt 6.2 LTS.

Далее, аж слезы на глазах:

Помимо добавления недостающих функций, Qt 6.2 был ориентирован на повышение стабильности, производительности и качества жизни разработчиков.

Особенно понравилось про качество жизни! Зачет!

Давайте резюмируем некоторые из основных изменений в Qt 6, прежде чем присмотреться к тому, что нового в 6.2.

Далее дословно по тексту:

Архитектурные изменения в Qt 6

Мы внесли пару более обширных архитектурных изменений в Qt 6, на которые мы сейчас опираемся в Qt 6.2 и любой будущий выпуск. Эти изменения включают:

  • Использование C++17. Мы хотели развить современный стандарт C++ при работе над Qt 6. C++17 был последней выпущенной версией, и Qt 6 теперь полагается на компилятор, совместимый с C++17. Это позволило как очистить, так и улучшить нашу кодовую базу, а также предложить нашим пользователям более современные API.
  • Улучшения в наших низкоуровневых классах контейнеров в отношении обработки больших наборов данных и производительности.
  • QML следующего поколения. Мы начали больше усилий по обновлению языка QML и сделать его более безопасным и простым в использовании в будущем. Qt 6.0 – 6.2 заложили здесь фундамент, но эти постоянные усилия будут продолжаться на протяжении всей серии Qt 6.
  • Приведение привязок свойств к C++. Привязка свойств была одной из концепций, которые сделали QML таким успешным. С Qt 6 мы делаем эту концепцию доступной на C++ (https://www.qt.io/blog/property-bindings-in-qt-6?hsLang=en).
  • Новая графическая архитектура Qt 6 открыла совершенно новую архитектуру (https://www.qt.io/blog/graphics-in-qt-6.0-qrhi-qt-quick-qt-quick-3d?hsLang=en) о том, как обрабатывать интеграцию с API базовой операционной системы. Благодаря новому аппаратному интерфейсу рендеринга (Rendering Hardware Interface - RHI), Qt 6 теперь использует лучший графический API, доступный в каждой системе по умолчанию, что значительно повышает совместимость - особенно на настольных и мобильных операционных системах, таких как Windows и macOS, а также iOS.
  • Унифицированные 2D и 3D для Qt Quick Qt Quick традиционно были основой для создания анимированных и плавных 2D-интерфейсов пользователей. С Qt 6 мы также упростили интеграцию 3D-контента в ваше приложение на основе QML. Глубокая интеграция делает тривиальным смешивание 2D и 3D-контента на любом уровне, получая при этом максимальную производительность системы.
  • Система сборки CMake. С Qt 6 мы переключили нашу систему сборки (https://www.qt.io/blog/qt-and-cmake-the-past-the-present-and-the-future?hsLang=en) с qmake на cmake, стандартную систему сборки для приложений на основе C++ в настоящее время. В то время как qmake по-прежнему поддерживается в течение всего срока службы Qt 6, предварительные отчеты пользователей указывают на значительные улучшения после перехода на cmake.

Несмотря на все эти изменения, перенос существующей кодовой базы на Qt 6 должен быть простым. Вы можете прочитать больше об этом дальше в блоге.

Теперь давайте подробнее рассмотрим, что нового в Qt 6.2.

Добавлены модули

Одним из основных усилий при разработке Qt 6.2 было добавление всех модулей и функциональности, которые мы пропустили в Qt 6.0. За очень немногими исключениями, все модули, которые были поддержаны в Qt 5.15, теперь также поддерживаются в Qt 6.2.

В Qt 6.2 мы добавили поддержку следующих дополнительных модулей (в дополнение к тому, что у нас уже было в Qt 6.1):

  • Qt Bluetooth (https://doc.qt.io/qt-6/qtbluetooth-index.html)
  • Qt Multimedia (https://doc.qt.io/qt-6/qtmultimedia-index.html)
  • Qt NFC (https://doc.qt.io/qt-6/qtnfc-index.html)
  • Qt Positioning (https://doc.qt.io/qt-6/qtpositioning-index.html)
  • Qt Quick Dialogs (https://doc.qt.io/qt-6/qtquickdialogs-index.html)
  • Qt RemoteObjects (https://doc.qt.io/qt-6/qtremoteobjects-index.html)
  • Qt Sensors (https://doc.qt.io/qt-6/qtsensors-index.html)
  • Qt SerialBus (https://doc.qt.io/qt-6/qtserialbus-index.html)
  • Qt SerialPort (https://doc.qt.io/qt-6/qtserialport-index.html)
  • Qt WebChannel (https://doc.qt.io/qt-6/qtwebchannel-index.html)
  • Qt WebEngine (https://doc.qt.io/qt-6/qtwebengine-index.html)
  • Qt WebSockets (https://doc.qt.io/qt-6/qtwebsockets-index.html)
  • Qt WebView (https://doc.qt.io/qt-6/qtwebview-index.html)

API для этих модулей в основном обратно совместим с Qt 5 и потребует только незначительных настроек пользовательского кода при переносе на Qt 6.

Полный список модулей (https://doc.qt.io/qt-6/qtmodules.html), поддерживаемых Qt 6.2, можно найти в нашей документации (https://doc.qt.io/).

Новые возможности Qt 6.2

В дополнение ко многим модулям, которые мы принесли из Qt 5, у нас также есть большой набор новых функций (https://wiki.qt.io/New_Features_in_Qt_6.2) и возможностей в 6.2. Давайте посмотрим.

Qt Quick 3D

Qt Quick 3D получил некоторые интересные новые функции и теперь поддерживает экземплярную визуализацию (instanced rendering) (https://www.qt.io/blog/qtquick3d-instanced-rendering?hsLang=en), позволяя отображать большие объемы одного и того же объекта с различными преобразованиями. Мы также добавили новый API для добавления 3D particle effects (https://www.qt.io/blog/introducing-qt-quick-3d-particles?hsLang=en)в сцену.

Улучшена обработка ввода, и теперь мы корректно создаем события ввода Qt Quick для 2D-элементов, встроенных в 3D-сцену. Мы также добавили новый API для выбора на основе лучей из произвольных точек в сцене.

Инструментарий QML

Инструментарий для QML претерпел некоторые более крупные улучшения с Qt 6.2. Теперь у нас есть публичный API CMake (https://www.qt.io/blog/introduction-to-the-qml-cmake-api?hsLang=en), который значительно упрощает процесс создания собственного модуля QML (https://www.qt.io/blog/qml-modules-in-qt-6.2?hsLang=en).

QML linter (qmllint) - это инструмент, который проверяет исходный код QML на предмет лучших практик, потенциальных проблем с кодированием и производительностью и помогает писать более обслуживаемый QML. Инструмент претерпел большие изменения и теперь полностью настраивается как на уровне командной строки, через файлы конфигурации, так и даже для отдельных блоков в самом файле QML. Кроме того, теперь он может генерировать выход JSON для упрощения интеграции с другими инструментами или автоматизированными системами.

QML formatter (qmlformat) теперь использует библиотеку QML dom, что дает значительные улучшения в генерации вывода.

Взгляните на этот пост в блоге (https://www.qt.io/blog/whats-new-in-qml-tooling-in-qt-6.2?hsLang=en)для получения более подробной информации.

Мультимедиа Qt

Qt Multimedia претерпела некоторые довольно значительные изменения с Qt 6. Это был один из API, которыми мы не были довольны в течение всего срока службы Qt 5. Из-за этого мы сделали шаг назад и внесли некоторые более обширные API и архитектурные изменения в модуль без слишком большого уважения к обратной совместимости.

Тем не менее, должно быть относительно просто портировать Qt Multimedia из Qt 5 в Qt 6.

Qt Multimedia в Qt 6 поддерживает несколько очень востребованных функций, которые нам так и не удалось правильно поддерживать в Qt 5. Примеры включают в себя поддержку выбора субтитров и языка для воспроизведения, а также настраиваемую настройку для захвата мультимедиа.

Внутренняя архитектура была очищена и больше не отображается через общедоступный API, как в Qt 5. Это позволит нам быстрее исправлять ошибки и значительно облегчит добавление новых функций в будущем. Вы можете найти более подробную информацию в отдельном сообщении в блоге о Qt Multimedia в Qt 6. (https://www.qt.io/blog/qt-multimedia-in-qt-6?hsLang=en)

Однако из-за этих массовых изменений модуль все еще имеет "шероховатеости или грубые края" и, вероятно, довольно много ошибок в реализации. Тем не менее, мы считаем, что мультимедиа является настолько важной функциональностью, что мы будем полностью поддерживать модуль в Qt 6.2.

Из-за этого мы немного отклонимся от нашей обычной политики фиксации для выпусков на уровне патчей и можем включить некоторые меньшие дополнения API, если они необходимы для устранения более крупных проблем.

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

Небольшие улучшения во всем

Почти во всех других модулях было много небольших дополнений и улучшений API.

Мы портировали многие API, чтобы использовать новую систему свойств, чтобы вы могли использовать привязки свойств из C++. Эти усилия еще не завершены, и мы продолжим в будущих выпусках.

Мы также исправили многие недостатки API и отсутствующие функции в различных местах. Упомяну всего несколько примеров:

  • Qt Charts получила новый API, чтобы улучшить удобство и сделать вещи более настраиваемыми.
  • Мы добавили форматы изображений с плавающей запятой в QImage.
  • QByteArray::number() теперь правильно обрабатывает отрицательные значения для баз, отличных от 10.
  • QLockFile теперь имеет перегрузки, которые принимают std::chrono
  • Qt Network поддерживает несколько серверных устройств SSL, которые могут сосуществовать во время выполнения.

Для получения подробной информации ознакомьтесь со страницей новых функций (https://wiki.qt.io/New_Features_in_Qt_6.2) в нашей вики.

Qt Creator и Qt Design Studio

Много работы также было поработано в Qt Creator и Qt Design Studio, чтобы убедиться, что они обеспечивают первоклассную поддержку Qt 6.2. Qt Creator 5 поставляется со всем необходимым для разработки для Qt 6.2.

Сегодня мы также выпустили совершенно новую версию Qt Design Studio. Qt Design Studio 2.2 основана на Qt 6.2 и обеспечивает отличную поддержку создания пользовательских интерфейсов Qt Quick и Qt Quick 3D в одном графическом инструменте. И вы можете легко протестировать их на своем целевом оборудовании, будь то настольный компьютер, мобильный телефон или встроенное устройство. Взгляните на отдельное сообщение в блоге о Qt Design Studio 2.2 (https://www.qt.io/blog/qt-design-studio-2.2-released?hsLang=en) для получения более подробной информации.

Новые платформы

В Qt 6.2 была проделана большая работа по улучшению нашей поддержки поддерживаемых в настоящее время платформ, как настольной, так и мобильной, путем, например, улучшения нашей поддержки рендеринга HighDPI и добавления серверной части NFC на iOS.

Новые платформы в Qt 6.2
Новые платформы в Qt 6.2

Кроме того, Qt 6.2 значительно расширил сферу поддерживаемых платформ:

Qt 6.2 полностью поддерживает macOS на Apple Silicon (https://www.qt.io/blog/qt-on-apple-silicon?hsLang=en). Qt теперь упрощает создание универсальных двоичных файлов и разработку для macOS как на Intel, так и на Apple Silicon. Конечно, эта версия также полностью протестирована в нашей системе CI. Всегда было возможно запускать приложения Qt на Apple Silicon через Rosetta, но Qt 6.2 теперь обеспечивает полную поддержку для изначальной работы на процессоре Apple.

Qt 6.2 также возвращает поддержку операционных систем реального времени INTEGRITY и QNX. Для поддержки требуется цепочка инструментов C++17 и актуальная версия операционной системы. Минимальное требование для QNX - версия 7.1, на INTEGRITY мы поддерживаем версию 19.0.13.

Проверка webOS по Qt 6.2 также была завершена для дальнейшего укрепления приверженности Qt webOS.

В настоящее время проводится большая работа по поддержке Windows 11, и мы ожидаем, что сможем обеспечить полную поддержку ее в выпуске на уровне патчей 6.2. Windows на ARM HW также доступна в качестве технологического предварительного просмотра с Qt 6.2.

Наконец, мы проделали дальнейшую работу по улучшению нашей поддержки WebAssembly, которая поддерживается в качестве предварительного просмотра технологии в Qt 6.2.

Qt для Python также был выпущен сегодня, так что вы можете попробовать. Отдельное сообщение в блоге будет опубликовано в ближайшие пару дней, чтобы выделить все функции в дополнение к принятию из последних изменений Qt 6.2. Оставайтесь с нами!

Портирование из Qt 5

При работе над Qt 6 совместимость исходного кода с Qt 5 всегда была важной частью нашей работы.

Есть несколько мест, где нам пришлось в некоторой степени нарушить эту совместимость, чтобы внести некоторые необходимые архитектурные изменения или дать нам некоторые большие преимущества производительности.

Портирование с Qt 5 на Qt 6 должно в большинстве случаев быть простым. В руководстве по переносу Qt 6 (https://doc.qt.io/qt-6/portingguide.html) перечислены необходимые шаги и содержится дополнительная информация. Вы также можете получить помощь в переносе от одного из наших партнеров (https://www.qt.io/contact-us/partners?hsLang=en) или наших консультантов (https://www.qt.io/qt-consulting/?hsLang=en).

Типичными шагами для переноса на Qt 6 являются:

  • Убедитесь, что у вас есть поддерживаемая версия компилятора и платформы
  • Сначала скомпилируйте с Qt 5.15 в режиме Qt 6 (с помощью макроса QT_DISABLE_DEPRECATED_BEFORE)
  • Затем скомпилируйте с помощью Qt 6.x - при необходимости используйте модули совместимости на этапе переноса

С их помощью у вас есть приложение, работающее на Qt 6, и вы можете начать использовать все новые функции и возможности, которые оно предоставляет. Например, если ваше приложение использует QML, запустите инструмент qmllint и исправьте его предупреждения.

В этом контексте я также хотел бы упомянуть новую версию 0.9 онлайн-книги (https://www.qt.io/product/qt6/qml-book?hsLang=en) о QML и Qt 6. (https://www.qt.io/product/qt6/qml-book?hsLang=en) Это отличный ресурс для начала работы с QML или получения больших знаний о нем. Мы хотим поблагодарить основных авторов книги, которых являются Йохан Телин, Юрген Райанелл и Сирил Лорке (https://www.qt.io/product/qt6/qml-book/preface-authors?hsLang=en), а также хотели бы поблагодарить членов сообщества (https://www.qt.io/product/qt6/qml-book/preface-acknowledgements?hsLang=en), которые также участвовали. Проект спонсируется компанией The Qt и является живым документом, который будет получать дальнейшие обновления. Посмотрите, и, пожалуйста, отдайте должное и отзыв проекту.

Попробуйте сегодня

Прежде чем предоставить вам ссылки для загрузки Qt 6.2, я хотел бы указать вам на примечания к выпуску (https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.2.0/release-note.md) Qt 6.2. (https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.2.0/release-note.md) Примечания к выпуску также содержат много подробностей о наших изменениях, начиная с Qt 6.1, включая полный список исправленных ошибок.

Они также содержат полный список всех, кто внес исправления в Qt 6.2. Список слишком длинный, чтобы воспроизвести здесь, но я хотел бы поблагодарить всех за помощь и создание Qt 6.2.

Самый простой способ получить Qt 6.2 - через онлайн-установщик, если у вас уже установлен Qt. Если нет, вы можете загрузить его со своей учетной записи Qt (https://account.qt.io/) или через нашу веб-страницу (https://www.qt.io/download?hsLang=en).

Надеюсь, вам понравится Qt 6.2. Сообщите нам, как идут дела, и сообщите о любых ошибках, которые вы можете найти, чтобы сделать Qt 6.2 еще лучше с предстоящими выпусками патчей.

Следите за новостями

И последнее, но не менее важное: вот краткое обновление того, что еще у нас будет в ближайшем будущем. Хорошим местом для отслеживания и получения обзора происходящего является специальная веб-страница Qt 6. (https://www.qt.io/product/qt6?hsLang=en)

Затем я хотел бы пригласить вас присоединиться к Tuukka Turunen и мне на предстоящем вебинаре AMA, где вы можете задать нам свои вопросы о новом выпуске. Вы можете бесплатно зарегистрироваться на нашем портале вебинаров и задать свои вопросы заранее через форму. Для вашего удобства мы проведем два вебинара в разных часовых поясах. Выберите тот, который вам удобнее, или присоединяйтесь к обоим.

Всемирный саммит Qt 2021 также проходит быстро, и я хотел бы призвать вас присоединиться к нам. Мы услышим гораздо больше о предстоящих основных моментах в Qt 6 от себя, наших клиентов и членов экосистемы Qt. Вы можете зарегистрироваться на бесплатное онлайн-мероприятие на сайте Всемирного саммита Qt.

Спасибо всем, и мы из компании The Qt надеемся, что вам понравится новый Qt 6.2 LTS!

От автора перевода: вот как-то так приходится обходиться, когда компания The Qt не хочет поддерживать мультиязычность в описании своих релизов. И несомненно хочу присоединиться к высказыванию Ларса Кнолл в том, что мы все надеемся, что нам понравится новый Qt 6.2 LTS.

Спасибо за внимание.

(оригинал статьи на английском - https://www.qt.io/blog/qt-6.2-lts-released)

Ссылка на скачивание Qt 6.2.

Телеграм-канал t.me/zqtprog