L’année 2016 promet sa dose d’actualité Qt, avec trois versions qui devraient voir le jour : Qt 5.6 en mars, Qt 5.7 en mai et Qt 5.8 en octobre. De manière générale, Qt vise une haute qualité sur toutes les plateformes gérées (qu’elles soient plus ou moins mobiles) tout en limitant le temps de mise sur le marché pour ses utilisateurs. C’est pourquoi Qt 5.6 a été retardé : cette version aurait dû voir le jour en décembre dernier. Le cÅ“ur de Qt n’est pas très spécifique à un environnement ou l’autre, même si un bon nombre de fonctionnalités plus orientées vers l’une ou l’autre industrie en particulier : par exemple, les débats ont récemment tourné autour du protocole CAN, prévu pour la communication entre microcontrôleurs dans l’automobile ; l’implémentation a mené à un module Qt SerialBus, qui est bien plus général que le type de bus visé au départ, l’API pouvant alors être généralisée à d’autres types de bus en série, comme Modbus ou OPC-UA.
Qt 5.6 : première version avec support à long terme
Qt 4.8 est sorti en 2013, mais a été maintenu pendant plusieurs années, alors qu’une version de Qt normale ne l’est que pendant quelques mois. Il n’y avait pas encore eu de version avec un support à long terme dans la branche Qt 5 et cela arrivera avec Qt 5.6. Par rapport à Qt 4.8, les améliorations sont très nombreuses, avec notamment une accélération matérielle pour l’affichage, peu importe la technologie employée ; Qt Quick y voit sa deuxième version majeure, avec une plus grande maturité ; les plateformes mobiles sont mieux gérées.
Qt 5.6 aura droit à du support pendant trois ans à compter de sa date de sortie, c’est-à -dire jusqu’en 2019. Les nouveautés des versions de Qt qui suivront ne seront pas réintégrées, à l’exception des corrections de défauts, notamment de sécurité. Pour son développement, Qt 5.6 a vu les efforts converger vers une amélioration générale de la qualité du code et la parité entre plateformes au niveau des fonctionnalités. Cette version avec support à long terme permettra de limiter en partie la rétrocompatibilité pour les versions à venir : Qt se tournera vers C++11, sans plus chercher à être compatible avec les plus vieux compilateurs et la norme C++98.
La fonctionnalité phare de Qt 5.6 sera la gestion des écrans à haute résolution, un mouvement initié par Apple avec ses écrans Retina. Qt ajustera automatiquement son affichage à la résolution de l’écran : taille de police, icônes, graphiques, etc. Surtout, les applications s’ajusteront automatiquement lors du passage d’un écran à un autre possédant une résolution plus élevée, chose traditionnellement mal gérée par les applications.
Qt 5.7 : des modules en tout sens
Puisque Qt 5.6 sera là pour les compilateurs les plus anciens, Qt 5.7 pourra s’orienter définitivement vers C++11 : là où il n’était pas impossible d’utiliser certaines nouvelles fonctionnalités du langage dans Qt (comme la connexion de signaux à des fonctions anonymes), Qt 5.7 pourra utiliser C++11 directement dans l’implémentation de ses modules, nouveaux ou plus anciens, sans contrainte particulière. Le module Qt SerialBus sera le premier à profiter de ce traitement de faveur.
Qt 5.7 arrivera avec une pléthore de nouvelles fonctionnalités, changements qui viennent en parallèle avec une évolution des licences. Tout d’abord, trois modules quitteront le statut de préversion technologique (sans support officiel, donc) :
- Qt Quick Controls 2, un ensemble de composants Qt Quick réécrits et optimisés ;
- Qt 3D, un moteur 3D multifil pour Qt en C++ et Qt Quick ;
- Qt SerialBus, un système de communication par bus série depuis une application Qt, actuellement pour CAN et Modbus.
Ensuite, plusieurs modules seront libérés : ils étaient disponibles exclusivement sous licence commerciale, ils seront disponibles dans l’édition libre. Ces modules sont au nombre de cinq :
- Qt Charts, pour la visualisation en 2D de données ;
- Qt Data Visualization, pour la visualisation en 3D de données ;
- Qt Purchasing, une API multiplateforme pour gérer les achats depuis les différentes boutiques en ligne pour chaque plateforme ;
- Qt Virtual Keyboard, un clavier virtuel adaptable, gérant plusieurs langues et la reconnaissance d’écriture ;
- Qt Quick 2D Renderer, un moteur d’affichage pour les applications Qt Quick 2 sans accélération OpenGL.
Finalement, deux nouveaux modules feront leur apparition en qualité de préversion technologique : Qt Wayland Compositor et Qt SCXML, qui généralise les fonctionnalités de machines d’états.
Qt 5.8 : plus modulaire, plus optimisé, plus Vulkan
Qt 5.8 devrait arriver fin de cette année. Quand Qt 5.7 apportera bon nombre de fonctionnalités plus incrémentales, Qt 5.8 retournera au niveau des fondations pour préparer le futur, des changements qui continueront dans les versions futures et qui s’inscrivent dans la lignée de Qt 5.0 (une modularisation accrue, une utilisation d’OpenGL pour tout l’affichage). Un des points sera l’optimisation de l’utilisation de la mémoire, rapidement problématique dans l’embarqué.
Qt 5.0 est venu avec une architecture bien plus modulaire qu’auparavant, avec une série de modules formant le cÅ“ur de Qt et des ajouts : il n’est pas nécessaire d’inclure tous les modules dans une application (contrairement à Qt 3), avec une séparation plus claire que du temps de Qt 4. Par contre, les interdépendances entre modules sont toujours fortes : il est parfois nécessaire d’inclure un module pas très utile pour bénéficier de fonctionnalités dans un autre, ce qui est rapidement problématique dans les applications embarquées, par définition limitées, y compris au niveau du stockage. L’objectif est de créer une configuration minimale pour Qt Quick pour limiter le nombre de dépendances, ce qui impliquera des changements au moins dans les modules Qt Core, Qt GUI et Qt Declarative.
KDAB et la Qt Company sont membres de Khronos, le consortium qui se charge de la spécification de normes comme OpenGL ou Vulkan. Ce n’est pas un hasard : Qt 5.8 devrait retirer la dépendance directe envers OpenGL au niveau du graphe de scène, qui devrait être remplacée par une abstraction permettant de choisir entre différentes API. Les premiers pas devraient venir avec Qt 5.8, avec à terme l’utilisation des dernières API graphiques disponibles sur chaque plateforme — et la suppression d’ANGLE côté Windows (une implémentation d’OpenGL utilisant DirectX).
Finalement, une dernière technologie anciennement propriétaire devrait être libérée : le Qt Quick Compiler. Il ne sera plus disponible sous la forme de module séparé, mais bien directement dans Qt Declarative, pour compiler en code natif les interfaces Qt Quick. Les objectifs sont multiples : améliorer fortement la performance sur les plateformes qui ne peuvent pas bénéficier de technologies JIT (iOS et Windows RT), mais aussi diminuer les temps de démarrage des applications.
Qt Creator 4.0 : une apparence plus moderne, plus de Clang, plus de CMake
Une nouvelle version majeure de Qt Creator, l’EDI Qt, fera également son apparition, normalement en avril. Tout comme Qt, une série de fonctionnalités transitera de l’édition commerciale vers la version libre, comme un profilage avancé, un analyseur statique de code ou encore un éditeur visuel Qt Quick bien plus poussé. L’interface sera rafraîchie avec de nouvelles icônes, plus modernes. L’interface des extensions sera également revisitée ; Clang sera de plus en plus utilisé, lui qui arrive petit à petit dans l’éditeur depuis plusieurs versions. Également, CMake sera mieux géré dans l’éditeur.
Source : Qt Roadmap for 2016.