Релиз фреймворка Qt 5.11

После полугода разработки представлен релиз кроссплатформенного фреймворка Qt 5.11. Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2, инструменты Qt для разработчиков, такие как Qt Creator и qmake, а также некоторые модули поставляются под лицензией GPLv3.

Основные новшества

  • В движке QML отмечаются серьёзные внутренние изменения: полностью переписаны стадии парсинга и компиляции QML, что отразилось в увеличении производительности и удобства сопровождения. Новый компилятор теперь формирует на базе QML не привязанный к конкретной платформе байткод, который может кэшироваться в файлах qmlc.
    Байткод также можно компилировать отдельно при помощи qmlcompiler и включать в поставку продукта. Для выполнения байткода применяется новый интерпретатор, который на 80-90% опережает по производительности интерпретатор, применявшийся в прошлом выпуске. Поверх интерпретатора байткода применяется Hotspot JIT, во всех областях обгоняющий по производительности старый JIT;

  • В Qt Quick добавлена поддержка загрузки сжатых текстур, поставляемых в форматах ktx и pkm, что позволяет сократить потребление памяти и ускорить запуск приложения за счёт применения формата изображений, который напрямую может быть обработан GPU, без отдельных стадий распаковки изображений jpeg/png;
  • Представлена порция мелких улучшений в 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 с поддержкой одноимённого стандарта для управления домашней автоматизацией. Добавлен экспериментальный модуль с поддержкой промышленного коммуникационного стандарта 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;
  • Представлена экспериментальная версия Qt для WebAssembly, которая позволяет компилировать графические приложения на базе Qt в виде модулей на WebAssembly, которые можно запускать непосредственно в web-браузере. Для компиляции применяетсяEmscripten. OpenGL транслируется в WebGL. Из поддерживаемых классов отмечаются QtBase, QtDeclarative, QtCharts, QtGraphicalEffects, QtQuickControls, QtQuickControls2, QtWebSockets, QtMqtt;
  • Проходит тестирование Qt for Python, набор модулей для создания графических приложений на языке Python с использованием Qt5. На текущем этапе содержимое Qt for Python полностью аналогично PySide2.

Источник: OpenNET