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.
]https://youtu.be/9vWMUTvFgdU[/video]
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.