После полугода разработки представлен (https://blog.qt.io/blog/2018/05/22/qt-5-11-released/) релиз кроссплатформенного фреймворка Qt 5.11 (https://www.qt.io/). Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2, инструменты Qt для разработчиков, такие как Qt Creator и qmake, а также некоторые модули поставляются под лицензией GPLv3. Основные новшества (https://wiki.qt.io/New_Features_in_Qt_5.11):
- В движке QML отмечаются (http://blog.qt.io/blog/2018/05/22/optimizing-qml-compiler-pi... серьёзные внутренние изменения: полностью переписаны стадии парсинга и компиляции QML, что отразилось в увеличении производительности и удобства сопровождения. Новый компилятор теперь формирует на базе QML не привязанный к конкретной платформе байткод, который может кэшироваться в файлах qmlc.
Байткод также можно компилировать отдельно при помощи qmlcompiler и включать в поставку продукта. Для выполнения байткода применяется новый интерпретатор, который на 80-90% опережает по производительности интерпретатор, применявшийся в прошлом выпуске. Поверх интерпретатора байткода применяется Hotspot JIT, во всех областях обгоняющий по производительности старый JIT;
- В Qt Quick добавлена поддержка загрузки сжатых текстур, поставляемых в форматах ktx и pkm, что позволяет сократить потребление памяти и ускорить запуск приложения за счёт применения формата изображений, который напрямую может быть обработан GPU, без отдельных стадий распаковки изображений jpeg/png;
- Представлена порция мелких улучшений (https://www.kdab.com/new-in-qt-5-11-improvements-to-the-mode... в Qt Core, например, добавлены новые методы для более полной совместимости с STL. Классы QChar, QString, QTextBoundaryFinder, а также алгоритм обработки двунаправленного текста, приведены к полной совместимости со спецификацией Unicode 10;
- В Qt Quick Controls 2 добавлено множество мелких новшеств и исправлений, таких как свойство auto-repeat для кнопок, улучшенное позиционирование для ScrollBars и более качественная настройка стилей для SpinBoxes;
- Значительно переработан диалог вывода на печать для платформы Linux, расширена поддержка всех опций, предоставляемых системой печати CUPS;
- В Qt Widgets проведена работа по устранению ошибок. В классе QLineEdit добавлена поддержка режима быстрого выделения текста мышью;
- В Qt Location добавлена экспериментальная поддержка пошаговой навигации (turn-by-turn). Представлен API для создания картографических объектов, не привязанных к классу QQuickItems. Значительно увеличена производительность объектов MapPolyline, в которых также появилась поддержка слоёв в комбинации с элементами объекта Map. API Routing и Places доработаны для поддержки расширений,
добавлен новый элемент WayPoint. В плагине MapBox появилась поддержка геокодирования и объектов Places;
- Qt WebEngine обновлён до кодовой базы Chromium 65. Добвлена поддержка встроенных инструментов для web-разработчиков, не требующая запуска отдельного браузера;
- В набор Qt for Device Creation, предназначенный для создания полноценных загрузочных мобильных систем с окружением на базе Qt и QML, добавлена возможность использования графических слоёв на базе оборудования, поддерживающего аппаратный композитинг (VSP2), что позволяет повысить производительность, снизить энергопотребление и реализовать такие возможности как вывод видео в нижележащем слое;
- В классе SerialBus улучшена поддержка CAN Bus, а в Bluetooth поддержка BTLE. Обновлён модуль QtKNX (https://blog.qt.io/blog/2018/05/18/qtknx-updates-5-11/) с поддержкой одноимённого стандарта для управления (https://doc-snapshots.qt.io/qtknx/qtknx-overview.html) домашней автоматизацией. Добавлен (https://blog.qt.io/blog/2018/05/16/opc-ua-support-qt-5-11/) экспериментальный модуль (https://blog.qt.io/blog/2018/05/16/opc-ua-support-qt-5-11/) с поддержкой промышленного коммуникационного стандарта OPC/UA (https://ru.wikipedia.org/wiki/OPC_UA);
- В Qt Network для платформы iOS добавлена поддержка TLS-расширения ALPN, применяемого для установки защищённого соединения в HTTP/2. В QNetworkRequest добавлена операция Http2DirectAttribute для запуска сеанса HTTP/2 без первого согласования соединения;
- Расширена поддержка средств для людей с ограниченными возможностями, предоставляемых на платформе Windows. Связанный с accessibility код полдностью переписан с использованием Microsoft UI Automation вместо старого фреймворка Microsoft Active Accessibility;
- Проведена работа по улучшению стилей виджетов на платформе Windows, при использовании экранов с высокой плотностью пикселей (High-DPI);
- Утилита qdoc переведена на libclang для разбора кода на C++
- Удалена поддержка некоторых старых компиляторов и платформ, включая MSVC 2013, QNX 6.6 и macOS 10.10;
- Представлена (http://blog.qt.io/blog/2018/05/22/qt-for-webassembly/) ...экспериментальная версия Qt для WebAssembly, которая позволяет компилировать графические приложения на базе Qt в виде модулей на WebAssembly, которые можно запускать непосредственно в web-браузере. Для компиляции применяется (https://wiki.qt.io/Qt_for_WebAssembly) Emscripten (http://emscripten.org/). OpenGL транслируется в WebGL. Из поддерживаемых классов отмечаются QtBase, QtDeclarative, QtCharts, QtGraphicalEffects, QtQuickControls, QtQuickControls2, QtWebSockets,
QtMqtt;
- Проходит тестирование Qt for Python (https://wiki.qt.io/Qt_for_Python), набор модулей для создания графических приложений на языке Python с использованием Qt5. На текущем этапе содержимое Qt for Python полностью аналогично PySide2.
URL: https://blog.qt.io/blog/2018/05/22/qt-5-11-released/
Новость: https://www.opennet.ru/opennews/art.shtml?num=48641