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

31.05.2017 15:53

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

Основные изменения:

  • В состав модуля Qt Core включено два новых класса: qfloat16 для манипуляции 16-разрядными числами с плавающей запятой, позволяющий улучшить совместимость с API, связанными с GPU; QOperatingSystemVersion для определения операционной системы и версии запущенного приложения;
  • В модуль Qt Network добавлена поддержка протокола HSTS (HTTP Strict Transport Security), позволяющего владельцам сайтов указать о необходимости использования шифрованного соединения и определить правила для переброса на соответствующую HTTPS-область;
  • В модуль Qt NFC добавлена серия улучшений, специфичных для платформы Android;
  • В модуль Qt Web Sockets добавлена возможность использования внешних TCP-сокетов;
  • В Qt Bluetooth обеспечена поддержка платформы WinRT и появились средства для управления периферийными устройствами Bluetooth в Android;
  • В модуле Qt GUI реализован кэш шейдеров, в котором могут сохраняться скомпилированные шейдеры OpenGL для последующего повторного использования. Добавлена поддержка вычислительных шейдеров (Compute Shaders). В движок отрисовки через OpenGL добавлена возможность работы с профилями OpenGL Core;
  • Продолжено усовершенствование модуля Qt 3D, который уже можно рассматривать как полнофункциональный 3D-движок. Добавлена поддержка интеграции Qt Quick в сцены Qt 3D для представления двумерных интерфейсов в трёхмерном окружении. Также имеется обратная возможность интеграции трёхмерной сцены в двухмерный интерфейс на базе Qt Quick. Добавлены два новых материала QMetalRoughMaterial и QTexturedMetalRoughMaterial, а также новый тип освещения QEnvironmentLight, при отрисовке которых используются реалистичные алгоритмы PBR (Physics Based Rendering). В Qt 3D Animation добавлена поддержка анимации по ключевым кадрам с интерполяцией промежуточных кадров на основе кривых Безье. Добавлены новые компоненты QLevelOfDetail и QLevelOfDetailSwitch, позволяющие управлять уровнем детализации рендеринга, варьируя между скоростью и качеством. Добавлен класс QExtrudedTextGeometry для трёхмерной отрисовки текста;
  • В JavaScript и QML движок добавлен новый сборщик мусора, обеспечивающий более высокую производительность и снижающий фрагментацию памяти;
  • Представлена новая инфраструктура кэширования QML, поддерживающая два режима: создание бинарного кэша для QML-файлов при первом запуске приложения и упреждающее формирование кэша скомпилированных компонентов QML на этапе сборки программы
  • В Qt Quick задействован новый кэш шейдеров OpenGL, реализованный в Qt GUI. Также представлен специальный обработчик для обеспечения совместного использования данных изображений между разными процессами и новый бэкенд OpenVG, позволяющий организовать работу на оборудовании, поддерживающем только 2D-ускорение;
  • Проведена большая работа по повышению стабильности и производительности Qt Quick Controls 2, добавлена поддержка мультитач;
  • Модуль Qt Location добавлена поддержка наклонных проекций вращения карт, управляемых через API или экранные жесты. Добавлен новый плагин для работы с Mapbox, использующий для отрисовки движок на базе OpenGL;
  • Qt Webengine обновлён до кодовой базы Chromium 56;
  • В виртуальной клавиатуре появилась поддержка смены раскладки;
  • Представлен новый экспериментальный модуль Qt Remote Objects с реализацией механизма межпроцессного взаимодействия;
  • Добавлена поддержка новых платформ QNX 7.0 и INTEGRITY OS;
  • Добавлена поддержка сборки Qt в режиме оптимизации размера "-Os", позволяющая сократить размер исполняемых файлов приложений и библиотек на 5-20%;
  • Внесена большая порция улучшений в Qt Wayland Compositor, многопоточную систему отрисовки для встраиваемых устройств, использующую протокол Wayland.