Qt 5.6 vient de sortir en préversion Alpha. Les nouveautés s’égrainent le long des divers modules, avec un grand nombre d’optimisations, notamment au niveau de la mémoire utilisée. Elles sont en grande partie dues à l’utilisation d’analyse statique du code proposée par Clang : utiliser un profileur pour toutes les exécutions possibles dans le code prendrait trop de temps pour un gain trop faible ; par contre, un analyseur statique peut passer sur tout le code et faire remarquer tous les endroits à améliorer. Il est donc très utile quand le problème de performance n’est pas localisé, mais bien réparti sur tout le code. Ce genre d’outil a une compréhension plus fine du C++ qu’un compilateur : là où le compilateur s’arrête à la syntaxe, l’analyseur statique tente de comprendre la sémantique du code (ce qu’il tente de faire) et propose de meilleures manières de l’écrire. Par exemple, un algorithme de la STL pourrait fonctionner plus vite en allouant à l’avance de la mémoire avec std::vector::reserve() ; il pourrait même réécrire automatiquement le code pour suivre les meilleures pratiques concernant QStringLiteral et QLatin1String.
Qt 3D n’est toujours pas finalisé, mais les fonctionnalités de la préversion technologique s’affinent : de nouvelles API pour les tampons et attributs, pour les entrées souris, pour la détection de collisions ; la gestion de l’instanciation, le chargement de scènes glTF (avec un outil pour les compiler : qgltf). De nouveaux exemples ont également été ajoutés.
Dans les modules, quelques changements ont eu lieu. Notamment, des modules désapprouvés par Qt 5.5 ont été supprimés (Qt WebKit et Qt Declarative, qui correspond à Qt Quick 1). De nouveaux modules sont maintenant déconseillés : Qt Script (remplacé par le moteur JavaScript V4, inclus dans Qt QML) et Qt Enginio ; ils pourraient être supprimés dans une prochaine version de Qt. De nouveaux modules font également leur apparition en tant que préversions technologiques : Qt Quick Controls 2.0, des contrôles plus légers, prévus plus particulièrement pour l’embarqué ; Qt Speech pour la reconnaissance vocale, en faisant appel aux API disponibles sur chaque système (le module est actuellement compatible avec Android, OS X et Windows) ; Qt SerialBus, pour faciliter l’accès aux nombreux bus série qui peuplent le monde de l’embarqué, actuellement compatible uniquement avec CAN ; Qt Wayland, avec une API pour le compositeur Wayland stabilisée.
Cependant, la principale avancée concerne les outils utilisés pour le développement de Qt lui-même : l’ancien moteur d’intégration continue, Jenkins, a été remplacé par un nouveau, Coin, développé exclusivement pour Qt (qui pourrait d’ailleurs être distribué sous licence propriétaire ou libre dans le futur). Ainsi, chaque modification apportée au code source de Qt est compilée (voire testée) sur vingt-cinq à trente plateformes, ce qui assure une plus grande stabilité du code.
Sources : Qt 5.6 Alpha released, How to use static analysis to improve performance, New Features in Qt 5.6.