Qt 5.8 refactorise le moteur de rendu de Qt Quick et l'ouvre à Direct3D 12
De nouvelles API facilitent l'authentification par OAuth

Le , par dourouc05, Responsable Qt
Avec quelque retard, la version 5.8 de Qt est sortie. Elle est relativement riche en fonctionnalités : un système de configuration de la compilation nettement plus précis, une API pour aider à la création de compositeurs Wayland, de grands changements du côté de la communication et des réseaux, Qt Quick a vu la plus grande refactorisation de son code de rendu depuis 2012.



Qt Lite ou le renouveau du système de configuration

Peu d’utilisateurs en profiteront, mais ceux-là verront leur vie largement simplifiée. Le système de configuration de Qt est utilisé lorsque l’on compile Qt depuis les sources. Il permet de définir bon nombre d’options, pour choisir les modules à compiler, les bibliothèques à intégrer, etc., mais a subi une évolution chaotique : ce script a été écrit il y a une quinzaine d’années, pour Qt 3, et n’a depuis lors pas subi de refonte majeure, chaque version ajoutant sa petite couche. Le résultat était un script pas toujours cohérent entre les différentes plateformes, pas très modulaire (alors que c’était le thème principal de Qt 5).

Cette nouvelle mouture, au contraire, est unifiée entre les différentes plateformes (les incohérences ont été éliminées), tout en laissant bien plus de flexibilité à l’utilisateur pour les parties à compiler : la version précédente permettait de choisir des modules (et quelques fonctionnalités), celle-ci descend plus bas et permet de désactiver des parties de modules, mais aussi des fonctionnalités précises (l’analyse de contenu HTML ou CSS, souvent utilisée dans les interfaces pour du texte formaté, par exemple).

Sur les plateformes embarquées (téléphone, machine à café, système d’infodivertissement d’une voiture, etc.), cela permet de gagner beaucoup de place, en stockage et en mémoire vive — jusqu’à soixante pour cent en stockage pour une application Qt Quick simple par rapport à Qt 5.6, qui nécessite pourtant une bonne partie de Qt.

Refactorisations pour Qt Quick


Le monde Qt Quick voit de grands changements : avec Qt 5, l’affichage s’est orienté autour d’un graphe de scène et d’OpenGL ; avec Qt 5.8, le graphe de scène reste, mais il s’abstrait de l’API utilisée pour le rendu. Ainsi, une implémentation expérimentale du moteur de rendu utilisant Direct3D 12 est fournie ; cela laisse la porte ouverte à une implémentation Vulkan. Un moteur de rendu purement logiciel est aussi disponible (sans utiliser OpenGL).

Par défaut, le moteur d’exécution Qt Quick met en cache des représentations binaires des fichiers QML et JavaScript, ce qui diminue énormément le temps de chargement — une fois que l’application a déjà été lancée. L’édition commerciale de Qt propose un compilateur Qt Quick, qui effectue ces opérations de traduction en format binaire en amont, élimine les coûts supplémentaires du premier lancement ; les plans actuels sont de l’intégrer dans l’édition libre de Qt dans les versions à venir, en profitant de cette infrastructure de caches.

À un niveau plus mineur, le graphe de scène peut maintenant détecter quand une partie de la scène n’a pas été touchée et ne doit donc pas être redessinée, ce qui améliore franchement la performance, surtout dans le cas du moteur de rendu logiciel.

Les Qt Quick Controls 2 disposent de quelques contrôles supplémentaires, comme des boîtes de dialogue, des boutons arrondis et des séparateurs pour les barres d’outils. Les styles Material et Universal proposent maintenant un thème qui copie l’apparence du système d’exploitation et facilite l’intégration des interfaces.

Compositeur Wayland

Qt Wayland Compositor arrive en version finale (avec Qt 5.7, il était considéré comme une préversion technologique) ; ce module aide à créer des compositeurs pour Wayland. À nouveau, cette fonctionnalité est orientée principalement vers les plateformes embarquées : le module sert notamment à créer des écrans de démarrage et des gestionnaires d’applications quand le système d’exploitation n’en fournit pas. Notamment, dans les systèmes d’infodivertissement d’une voiture, il permet de créer l’environnement nécessaire au bon fonctionnement des applications — sans devoir lancer un serveur X et écrire son propre gestionnaire de fenêtres, puisque Wayland peut s’en occuper.


Dans le détail, ce module gère sans problème plusieurs écrans et propose une API tant en C++ qu’en QML. Chaque application est lancée dans son processus propre, ce qui favorise les bonnes pratiques de développement (le système complet n’est pas monolithique, avec une sécurité améliorée) et la réactivité (une application ne bloque pas le système).



Réseaux

Qt SerialBus est utilisé pour la communication sur des bus série, comme CAN et Modbus (très courants dans l’embarqué), même si son API est générique et ne se limite pas à ces deux protocoles. Ce module est maintenant en version finale.

Pour la sécurité, tant Qt Network que Qt Web Sockets implémentent les algorithmes cryptographiques de TLS PSK. La classe QNetworkAccessManager accepte des paramètres pour l’échange de clés selon le protocole de Diffie-Hellman, ainsi que HTTP 2.

Qt Network Authorization fait son apparition en tant que module en préversion technologique. Il implémente les protocoles OAuth 1 et 2.

Qt WebEngine a été mis à jour pour utiliser Chromium 53. Il est désormais possible d’imprimer des pages Web, ainsi que de personnaliser certaines boîtes de dialogues, infobulles et menus contextuels en QML.

Divers

Bon nombre de changements plus épars ont eu lieu avec cette nouvelle version. Au niveau des plateformes, Qt peut être utilisé avec tvOS et watchOS, respectivement pour l’Apple TV et l’Apple Watch. Cependant, les fonctionnalités graphiques ne fonctionnent pas encore sur watchOS.

Qt Speech est un nouveau module en préversion technologique. Son objectif à terme est d’intégrer les API système pour la reconnaissance et la synthèse vocales. Cette première version se focalise sur la synthèse, c’est-à-dire faire lire un texte à voix haute par l’ordinateur.

Qt 3D n’est toujours pas arrivé à maturité : peu de changements en fonctionnalité, mais de nombreux défauts ont été corrigés, la performance a été améliorée.

Qt Charts propose un nouveau type de graphique, les chandeliers japonais.

Sources : Qt 5.8 released, Creating devices with multiple UI processes using Wayland.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Aurelien.Regat-Barrel Aurelien.Regat-Barrel - Expert éminent https://www.developpez.com
le 25/01/2017 à 14:37
Citation Envoyé par dourouc05 Voir le message
Peu d’utilisateurs en profiteront, mais ceux-là verront leur vie largement simplifiée. Le système de configuration de Qt est utilisé lorsque l’on compile Qt depuis les sources. Il permet de définir bon nombre d’options, pour choisir les modules à compiler, les bibliothèques à intégrer, etc., mais a subi une évolution chaotique
C'est destiné à être utilisé par les développeurs embarqués en particulier. Qt Lite (non dispo en GPL, uniquement en commercial) fournit un configurateur graphique qui permet à coups de clics de choisir les modules que l'on veut, et il ne s'agit pas juste de QtCore, Widgets ou Network, mais de 150 fonctionnalités, donc un granularité beaucoup plus fine au niveau du code compilé. Et c'est ce qui permet de réduire la taille finale des binaires par 5. Pour cela ils ont enrichi qmake pour supporter un système maison de définitions de modules en json. Cela a été l'occasion de remettre à plat la configuration de Qt qui se faisait via des scripts sous Unix et un exécutable dédié (configure.exe) sous Windows, donc double maintenance. Du coup je me demande si Qbs a un avenir (déjà qu'il a du mal à percer)...

Avec cette nouvelle version, Qt cible clairement l'embarqué (IoT) en supportant officiellement comme hardware minimal un ARMv7 300MHz avec 16 / 32 Mo de ROM / RAM. Et surtout, plus besoin de GPU (OpenGL) pour faire tourner QML. Et ils pensent pouvoir réduire encore les besoins dans le futur. C'est une très bonne nouvelle ! Par contre faut payer
Avatar de Jiyuu Jiyuu - Rédacteur/Modérateur https://www.developpez.com
le 28/01/2017 à 9:35


Merci Aurelien pour cette précision que, sauf erreur de ma part, je n'ai vu nul part... Je pouvais toujours le chercher ce Qt Lite
Avatar de Aurelien.Regat-Barrel Aurelien.Regat-Barrel - Expert éminent https://www.developpez.com
le 30/01/2017 à 12:03
Ah oui j'ai oublié de préciser que j'ai eu ces infos dans un webinar dédié au sujet. Il y a d'ailleurs une nouvelle session le 2 février:
https://www.qt.io/event/encore-qt-lite-overview/

Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -