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

23.01.2017 13:38

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

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

  • Включены наработки по обеспечению гранулированной сборки, позволяющие собирать модули, выборочно активируя только необходимую функциональность. Отныне Qt позволяет не только манипулировать подключением отдельных модулей, но и управлять составом модулей. Отключённая функциональность не включается в сборку, что позволяет создавать урезанные конфигурации, пригодные для использования на встраиваемых системах с ограниченным размером оперативной памяти и хранилища. По предварительным оценкам по сравнению с Qt 5.6 новая система сборки позволяет уменьшить размер статически связанного приложения Qt Quick более чем на 60%;
    Релиз фреймворка Qt 5.8
  • С целью избавления Qt Quick от привязки к OpenGL и обеспечения независимости от графического API значительно переработана архитектура графической подсистемы, что дало возможность применения эффективных программных методов отрисовки на системах, не поддерживающих OpenGL. Кроме программной отрисовки (QT_QUICK_BACKEND=software) также подготовлен бэкенд для DirectX 12 (QT_QUICK_BACKEND=d3d12). Функциональность модуля Qt Quick 2D Renderer интегрирована в Qt Declarative;
  • В движке выполнения QML реализована новая инфраструктура кэширования, позволяющая кэшировать QML-файлы в предкомпилированном бинарном представлении. Кэширование дало возможность значительно ускорить повторную загрузку QML-приложений и сократить потребление памяти. Поддержка упреждающей компиляции Qt Quick будет продолжена в рамках коммерческого продукта Qt Quick Compiler;
  • В Qt Quick Controls 2 добавлены новые QML-типы Dialog, DialogButtonBox, MenuSeparator, RoundButton и ToolSeparator, а также экспериментальные типы MenuBar, Menu, SystemTrayIcon, ColorDialog, FontDialog, MessageDialog, FileDialog и FolderDialog;
  • Обработка событий мыши и тачпада унифицирована и перенесена в единый класс QQuickPointerEvent;
  • Браузерный движок Qt Webengine синхронизирован с кодовой базой Chromium 53. Добавлены средства для вывода web-страниц на печать и обеспечена возможность использования QML API для определения собственных вариантов диалогов, контекстных меню и всплывающих подсказок. Также добавлен интерфейс для просмотра исходного текста страницы (view-source:) и некоторые обработчики URL "chrome:";
  • Переведены в разряд полностью поддерживаемых некоторые модули, ранее помеченные как экспериментальные (Technology Preview):
    • Wayland Compositor - многопоточная система отрисовки для встраиваемых устройств, использующая протокол Wayland. Модуль может использоваться для создания собственных композитных серверов Wayland, применяя QML или C++ API. Имеется поддержка стандарта XDG-Shell и возможность работы в системах с несколькими экранами. В качестве примера применения Qt Wayland Compositor развивается рабочий стол Grefsen;
      Релиз фреймворка Qt 5.8
    • SCXML - фреймворк с реализацией State Chart API;
      Релиз фреймворка Qt 5.8
    • Serial Bus - модуль для для организации доступа приложений к различным промышленным интерфейсам при помощи шин CANBus и ModBus;
  • В состав включён экспериментальный модуль Qt Speech, предоставляющий средства для синтеза речи. Речевое сопровождение может применяться для повышения доступности приложений для людей с ограниченными возможностями или для реализации новых средств фонового информирования пользователя, что особенно востребовано для вывода уведомлений в приложениях для автомобильных информационно-развлекательных систем. В Linux преобразование текста в речь осуществляется при помощи библиотеки Speech Dispatcher (libspeechd), а на других платформах через штатный API операционной системы;
  • Добавлен экспериментальный модуль Qt Network Authentication с реализаций протоколов аутентификации OAuth 1 и OAuth 2;
  • В модули Qt Network и Web Sockets добавлена полноценная поддержка наборов шифров TLS PSK. В Qt Network теперь можно настроить применение собственных параметров Diffie-Hellman. В QNetworkAccessManager появилась поддержка HTTP/2;
  • В модуле Qt Bluetooth появилась поддержка профиля BTLE Peripheral на платформах macOS и iOS, и профиля BTLE Central на платформе WinRT;
  • Обеспечена экспериментальная возможность сборки для устройств Apple на базе tvOS и watchOS. Для tvOS доступно большинство возможностей Qt, поддерживаемых для iOS should also work on tvOS. Для watchOS пока предоставляются только неграфические функции Qt;
  • Проведена работа по стабилизации и расширению производительности модуля Qt 3D;
  • В Qt Charts добавлен новый тип диаграмм Candlestick и реализована возможность использования API QOpenGLTextureBlitter;
  • Для встраиваемых систем, поддерживаемых в наборе Qt for Device Creation, улучшена поддержка конфигураций с несколькими экранами при использовании QPA-плагина eglfs и добавлена возможность поворота содержимого экрана на 90 и 180 градусов;
  • Объявлен устаревшим модуль Qt Script, который будет удалён в одном из будущих выпусков.