Релиз фреймворка Qt 5.12 и среды разработки Qt Creator 4.8.0
После полугода разработки подготовлен релиз кроссплатформенного фреймворка Qt 5.12. Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2, инструменты Qt для разработчиков, такие как Qt Creator и qmake, а также некоторые модули поставляются под лицензией GPLv3. Ветка 5.12 отнесена к категории выпусков с длительным сроком поддержки (LTS), обновления для которой будут формироваться в течение трёх лет.
При подготовке новой версии основное внимание было уделено обеспечению высокого качества работы и стабильности. По сравнению с прошлой LTS-веткой в Qt 5.12 устранено более 2000 ошибок. Основные новшества:
- В число полностью поддерживаемых переведён набор модулей «Qt for Python» для создания графических приложений на языке Python с использованием Qt5 (для разработчиков на языке Python предоставляется большая часть C++ API Qt). Qt for Python основан на модуле PySide2 и продолжает его развитие (по сути под новым именем предлагается первый выпуск PySide с поддержкой Qt 5);
- Подготовлена вторая экспериментальная версия модуля «Qt for WebAssembly», который позволяет компилировать графические приложения на базе Qt в виде модулей на WebAssembly, которые можно запускать непосредственно в web-браузере. Для компиляции применяется Emscripten. OpenGL транслируется в WebGL;
- Обеспечена полная поддежка модуля Qt Remote Objects, позволяющем обмениваться данными через IPC-вызовы между процессами на базе Qt. Поддерживается передача свойств и отправка другим процессам сигналов и слотов QObject;
- Обеспечена полная поддержка модуля Qt WebGL Streaming Plugin, позволяющего по сети транслировать состояние интерфейса приложения для просмотра в любом современном браузере;
- Внесены значительные изменения в JavaScript-движок, используемый для выполнения сценариев QML. Обеспечена поддержка стандарта ECMAScript 7 (ранее поддерживался ECMAScript 5), что дало возможность использовать представленные в последние годы новые возможности JavaScript и упростить интеграцию с JavaScript-библиотеками. Например добавлена поддержка JavaScript-модулей, которые можно загружать как из QML, так из кода на C++;
- В Qt Quick добавлена поддержка элемента TableView в качестве высокопроизводительной альтернативы ItemView, способной отображать сразу несколько столбцов;
- Появившиеся в прошлом выпуске обработчики Pointer Handlers переименованы в Input Handlers и предложены в Qt Quick как полноценно поддерживаемая возможность. Указанные обработчики упрощают создание сложных взаимодействий с тачпадом, которые трудно обработать по отдельности при помощи MouseArea и TouchArea. В том числе добавлено два новых обработчика Input Handlers для удержания и перетаскивания элементов;
- В Qt Quick добавлена поддержка использования заранее сгенерированных текстур для полей ввода, которые включают глифы, необходимые для отображения текста. Генерация подобных текстур на этапе компиляции позволяет сократить время запуска приложения на маломощных устройствах;
- В Qt Core добавлена поддержка бинарного формата CBOR (Concise Binary Object Representation), похожего на JSON, но более гибкого позволяющего использовать значительно больше типов данных;
- В класс QRegularExpression добавлена поддержка сопоставления по маскам (wildcard), что позволило полностью перевести старый класс QRegExp в разряд устаревших;
- В Qt Network добавлена поддержка DTLS поверх UDP. В окружениях macOS и iOS обеспечена возможность использования ALPN и HTTP/2 через бэкнд TransportSecurity, а в базовый бэкенд SSL добавлена поддержка PKCS#8;
- В QGradient добавлена большая порция предопределённых градиентов, основанных на наработках webgradients.com;
- В QImage добавлена поддержка изображений в формате RGBA64 (16 бит на цветовой канал). Подобные изображения могут быть прочитаны из из файлов PNG и TIFF или загружены из OpenGL;
- В Qt for Automation обновлены модули с поддержкой протоколов для управления домашней автоматизацией MQTT и KNX. Добавлен экспериментальный модуль с поддержкой промышленного коммуникационного стандарта OPC/UA;
- Для виртуальной клавиатуры подготовлено 13 дополнительных раскладок клавиатуры и добавлена поддержка распознавания рукописного ввода с использованием технологий MyScript;
- Движок Qt WebEngine обновлён до состояния Chromium 69 и получил поддержку клиентских сертификатов;
- Проведена большая работа по снижению потребления памяти и оптимизации производительности при использовании QML и Qt Quick. По сравнению с прошлым LTS-релизом потребление памяти QML-движком в тестовом приложении, использующем Qt Quick Controls, снизилось на 30%, а производительность возросла в среднем на 21%.
Одновременно подготовлен выпуск интегрированной среды разработки Qt Creator 4.8.0, предназначенной для создания кроссплатформенных приложений с использованием библиотеки Qt. Поддерживается как разработка классических программ на языке C++, так и использование языка QML, в котором для определения сценариев используется JavaScript, а структура и параметры элементов интерфейса задаются CSS-подобными блоками.
В новой версии Qt Creator:
- Добавлена поддержка протокола LSP (Language Server Protocol) для подключения к серверным обработчикам, реализующим поддержку различных языков программирования. При использовании LSP на сторону сервера выносятся все базовые операции поддержки языка программирования, связанные с разбором семантики языка, такие как автодополнение кода, анализ опечаток, поиск ссылок, построение карты определений переменных и функций для быстрого перехода. Подключение обработчиков для дополнительный языков осуществляется через плагин LanguageClient (Help > About Plugins).
До состояния LLVM 7.0 обновлён построитель модели кода для языка С++, основанный на Clang. Добавлена возможность применения операции «Follow Symbol» для определений с ключевым словом «auto». В подсказке, вводимой системой автодополнения для функций, теперь отображаются доступные перезагрузки параметров. Добавлена поддержка экспорта модели кода в форме БД для компилции (Build > Generate Compilation Database);
- Добавлен плагин автоматического форматирования кода ClangFormat;
- Реализована поддержка интеграции в редактор диагностики, сгенерированной утилитой Cppcheck;
- Реализован плагин CompilationDatabaseProjectManager, позволяющий открывать БД компиляции (список файлов и флагов для их сборки) как проекты;
- Добавлена поддержка одновременного запуска нескольких отладчиков и переключения между ними через меню в панели, появляющейся в режиме отладки.
© OpenNet