Lars Knoll, créateur du moteur KHTML, chef de projet du projet Qt et directeur technique de la société Qt, sur les projets de création de la prochaine branche importante du framework Qt. Une fois les fonctionnalités de la branche Qt 5.14 terminées, le développement se concentrera sur la préparation de la sortie de Qt 6, attendue fin 2020.
Qt 6 sera développé en vue d'assurer la compatibilité avec Qt 5, mais des problèmes individuels peuvent survenir, car les modifications architecturales et les nettoyages prévus ne pourront pas être mis en œuvre sans perdre un certain niveau de compatibilité. Pour faciliter la transition, certaines fonctionnalités de Qt 6 devraient être incluses sous une forme réduite dans le cadre des versions Qt 5.14 et Qt 5.15 LTS. Une boîte à outils sera également préparée pour simplifier la migration vers Qt 6.
Parmi les principaux objectifs de la prochaine branche importante figurent la mise en conformité des fonctionnalités avec les exigences de 2020, le nettoyage de la base de code et la simplification de la maintenance du projet. Changements attendus :
- Modernisation significative de QML :
- Forte prise en charge de la frappe.
- Capacité à compiler QML en représentation C++ et en code machine.
- Rendre la prise en charge complète de JavaScript une option (l'utilisation d'un moteur JavaScript complet nécessite beaucoup de ressources, ce qui empêche l'utilisation de QML sur des équipements tels que les microcontrôleurs).
- Refus du versionnage en QML.
- Unification des structures de données dupliquées dans QObject et QML (réduira la consommation de mémoire et accélérera le démarrage).
- S'éloigner de la génération de structures de données au moment de l'exécution au profit de la génération au moment de la compilation.
- Masquage des composants internes grâce à l’utilisation de méthodes et de propriétés privées.
- Intégration améliorée avec les outils de développement pour le refactoring et le diagnostic des erreurs au moment de la compilation ;
- Ajout d'une nouvelle couche abstraite, l'interface matérielle de rendu (RHI), pour permettre une utilisation transparente de diverses API graphiques, notamment OpenGL, Vulkan, Metal et Direct 3D (auparavant, Qt était uniquement OpenGL). Toutes les infrastructures de rendu existantes seront converties pour utiliser RHI, notamment QPainter, Qt Quick Scenegraph et Qt3D. Il est également prévu d'ajouter le module Qt Shader Tools pour prendre en charge divers langages de développement de shaders et fournir une compilation croisée de shaders à la fois au stade de la construction et au moment de l'exécution ;
- Préparation d'une API unifiée pour créer des interfaces utilisateur combinant des éléments graphiques 2D et 3D. La nouvelle API vous permettra d'utiliser QML pour définir des éléments d'interface 3D sans utiliser le format UIP. La nouvelle interface d'intégration de contenu 3D avec Qt Quick prévoit de résoudre des problèmes tels que la surcharge élevée liée à l'intégration de QML avec le contenu de Qt 3D ou 3D Studio, et l'incapacité de synchroniser les animations et les transformations au niveau des images entre la 2D et la 3D. Le rendu combiné 2D et 3D imbriqué sera implémenté à l'aide d'un nouveau moteur de rendu. Un aperçu du nouveau Qt Quick avec prise en charge 3D est attendu dans la version Qt 5.14 ;
- Ajout d'outils pour traiter les actifs liés aux graphiques au moment de la compilation, tels que la conversion d'images PNG en textures compressées ou la conversion de shaders et de maillages en formats binaires optimisés pour un matériel spécifique ;
- Intégration d'un moteur unifié pour les thèmes et les styles, vous permettant d'obtenir l'apparence d'applications basées sur Qt Widgets et Qt Quick, natives sur différentes plates-formes mobiles et de bureau ;
- Unification des outils de création d'une interface utilisateur. Pour éviter la duplication des fonctionnalités et l'arrêt de la livraison de deux produits distincts, il est prévu que les fonctionnalités de Qt 3D Studio soient intégrées à Qt Design Studio, dont la plupart des sous-systèmes et le cadre de connexion des plugins sont construits sur la même base de code que Créateur Qt.
Qt Design Studio prévoit également de fournir une intégration de haute qualité avec des packages de création de contenu tels que Photoshop, Sketch, Illustrator, Maya et 3D Max. Les principaux langages pris en charge dans la boîte à outils de développement unifiée sont C++, QML et Python. L'unification signifie également la possibilité d'accéder aux outils de conception d'interface de Qt Creator et de fournir aux concepteurs d'interfaces des fonctionnalités d'outils de développement, par exemple, compiler un projet ou tester une application sur un appareil ; - Il a été décidé d'utiliser CMake au lieu de QMake comme système de construction. La prise en charge de la création d'applications à l'aide de QMake restera, mais Qt lui-même sera construit à l'aide de CMake. CMake a été choisi car cette boîte à outils est largement utilisée par les développeurs de projets C++ et est prise en charge dans de nombreux environnements de développement intégrés. Développement du système d'assemblage Qbs, qui prétendait remplacer QMake, ;
- Transition vers le standard C++17 pendant le développement (auparavant C++98 était utilisé). Qt 6 prévoit d'implémenter la prise en charge de nombreuses fonctionnalités C++ modernes, mais sans perdre la compatibilité ascendante avec le code basé sur les normes antérieures.
- Capacité à utiliser depuis C++ certaines fonctionnalités proposées pour QML et Qt Quick. En particulier, un nouveau système de propriétés pour QObject et les classes similaires sera présenté. Un moteur pour travailler avec les liaisons sera intégré de QML dans le noyau Qt, ce qui réduira la charge et la consommation de mémoire pour les liaisons et les rendra disponibles pour toutes les parties de Qt, et pas seulement pour Qt Quick ;
- Poursuite des travaux pour étendre la prise en charge de langages supplémentaires tels que Python et WebAssembly ;
- Restructuration en décomposant en composants plus petits et en réduisant la taille du produit sous-jacent. Les outils de développement et les composants personnalisés seront fournis sous forme de modules complémentaires distribués via le nouveau magasin de catalogues. Les ajouts à Qt provenant de développeurs tiers, gratuits et payants, seront également acceptés pour la distribution.
Source: opennet.ru
