На прошлой, после девяти месяцев разработки, вышла версия 5.6 кроссплатформенного фреймворка Qt.
Qt позволяет разрабатывать приложения при помощи C++ и декларативного языка программирования QML, поддерживает все основные десктопные и мобильные платформы, а также некоторые встраиваемые и имеет открытый исходный код. Существует коммерческая версия Qt, содержащая дополнительные проприетарные модули.
Новый выпуск принес длительный срок поддержки, новые экспериментальные модули (и удаление устаревших), поддержку новых платформ, а также новый тарифный план для стартапов в коммерческой версии Qt.
Длительной срок поддержки
Версия 5.6 является первым LTS-выпуском в пятом Qt и будет поддерживаться и получать обновления три года, в отличии от обычных выпусков, у которых срок поддержки будет один год. С учетом того, что поддержка предыдущей LTS-версии 4.8 была прекращена в конце прошлого года, рекомендуется переход на Qt 5.6.
Также, в следующих версиях планируется убрать поддержку устаревших компиляторов, в которых недостаточно реализован функционал C++11. Те, кому важна поддержка VS2008, VS2010 и gcc 4.6, смогут остаться на версии 5.6.
Лицензия для стартапов
Для небольших компаний с доходом до 100 000$ появилась новая лицензия "Start-Up", пришедшая на замену Indie Mobile, продажи которой были прекращены. Стоимость лицензии начинается от 49$ (при покупке в течении двух месяцев после выпуска).
Напомню, что Qt 5.6 будет последним минорным выпуском, доступным под лицензией LGPLv2.1. Начиная с версии 5.7, будет использоваться LGPL и GPL третьей версии.
Поддержка экранов с высоким разрешением
В новой версии для всех платформ появилась возможность автоматического масштабирования на экранах с высоким разрешением (HiDPI), как это было раньше на MacOSX. При включении масштабирования, Qt будет автоматически подстраивать размеры графических элементов и шрифтов, а также загружать изображения нужного размера. Масштабирование также автоматически подстраивается при перемещении окна между экранами с разной плотностью точек.
Новые модули
Модуль Qt Location, появившийся в прошлом выпуске как предварительная версия, теперь входит в состав Qt. Добавлена предварительная версия модуля Qt SerialBus, позволяющего работать с шинами CanBUS и ModBus.
Также в состав Qt 5.6 включена предварительная версия модуля Qt Quick Controls 2.0 (в Qt 5.6 он называется Qt Labs Controls), который является новой реализацией библиотеки компонентов для создания пользовательского интерфейса при помощи Qt Quick. Новая версия более легковесная и оптимизирована для использования на встраиваемых устройствах, построена по принципу шаблонов, позволяющих полностью изменить внешний вид компонентов и имеет, помимо стандартной темы, поддержку стилей Material и Universal. Видео с конференции QtWS15, где показана ранняя версия Qt Quick Controls 2.0:
Изменения в существующих модулях
- В Qt WebEngine движок Chromium обновлен до версии 45 и получил поддержку плагинов PPAPI, таких как Flash. С Qt WebKit портирован WebActions API и добавлено низкоуровневое API WebEngineCore. Также появилась возможность использовать системные настройки прокси. Версия для Linux Qt WebEngine может быть собрана с использованием системных библиотек.
- Улучшена совместимость контейнеров с C++11 и STL: добавлены обратные итераторы, key_iterator для QHash и QMap, а также const_iterator для QByteArray. Множество улучшений производительности в QString. QNetworkAccessManager получил поддержку перенаправления запросов HTTP.
- В Qt Multimedia появился новый QML-тип Playlist, а также Audio Role API для медиаплееров. На WinRT в работе с камерой добавлена поддержка использования фокуса и предпросмотра видео.
- Qt QML получил поддержку записи имен JavaScript-функций в вывод для планировщика perf на Linux, а также уменьшенное потребление памяти.
- Qt Canvas 3D теперь может использовать компоненты, основанные на Item из Qt Quick в качестве текстуры, а также поддерживает рендеринг на прямую в сцену Qt Quick.
- В Qt Virtual Keyboard появилось распознавание рукописного ввода.
- Модуль Qt 3D получил значительное количество улучшений и в этом выпуске также поставляется как предварительная версия.
Удаленные и устаревшие модули
Модуль Qt Script объявлен устаревшим и пользователям рекомендуется перейти на Qt QML. Также устаревшим объявлен Qt Enginio. Модули Qt Webkit и Qt Quick 1 (Qt Declarative) удалены из поставки. Помимо этого, по соображениям безопасности, официальные выпуски собираются без поддержки форматов изображений MNG и JPEG2000. При необходимости, Qt может быть собрана из исходников с включением поддержки данных форматов.
Поддержка платформ
- В версии 5.6 включена полноценная поддержка Windows 10, как с ипользованием API win32, так и WinRT. Приложения на Qt могут запускаться на ПК, планшетах и телефонах, а также распространяться через Windows Store. Стали доступны бинарные сборки для Visual Studio 2015. Также добавилась поддержка Windows Embedded Compact 2013. На платформе WinRT появился Qt WebView.
- В Qt 5.6 for Device Creation появилась возможность разработки и развертывания напрямую из под Windows. В стеке Boot to Qt улучшена совместимость с системами на основе Yocto.
- Добавлена поддержка NVIDIA Jetson TK1 с использование нового eglfs-бекенда, использующего DRM, EGLDevice и EGLStream. также добавлена поддержка Intel NUC. Полный список встроенных платформ можно посмотреть здесь.
- Android получил поддержку Qt Nfc. На MacOSX появилась поддержка Qt Positioning и опциональная возможность использования FreeType.
- На Linux появилась возможность записи логов напрямую в syslog.
Изменения в инфраструктуре
При разработке новой версии, на замену предыдущей системе непрерывной интеграции на основе Jenkins, была введена введена в строй новая CI-система собственной разработки — COIN. Новая система позволила повысить скорость тестирования и интеграции изменений в Qt. Помимо этого, COIN позволяет использовать разный набор платформ для разных веток Qt. Еще одним преимуществом является то, что большинство бинарных сборок теперь собирается на таких же системах, на каких и тестируется, т.е. тестируются именно те сборки, которые в последствии и выпускаются.
Дополнительная информация
Автор: BlackRaven86