Lars Knoll, der Schöpfer der KHTML-Engine, Projektleiter des Qt Project und technischer Direktor der Qt Company, hat PlÀne zur Schaffung der nÀchsten bedeutenden Version des Qt-Frameworks. Nach der Fertigstellung der FunktionalitÀt der Version Qt 5.14 wird die Entwicklung auf die Vorbereitung der Veröffentlichung von Qt 6 konzentriert, die Ende 2020 erwartet wird.
Qt 6 wird mit Blick auf die GewĂ€hrleistung der KompatibilitĂ€t zu Qt 5 weiterentwickelt, jedoch sind einzelne Probleme nicht ausgeschlossen, da die geplanten architektonischen Ănderungen und Bereinigungen nicht ohne einen Verlust bestimmter KompatibilitĂ€tsstufen umgesetzt werden können. Um den Ăbergang zu erleichtern, sollen einige Funktionen von Qt 6 in reduzierter Form in die Versionen Qt 5.14 und Qt 5.15 LTS integriert werden. AuĂerdem wird ein Werkzeugset zur Vereinfachung der Migration auf Qt 6 vorbereitet.
Zu den Hauptzielen der nĂ€chsten bedeutenden Version gehört die Anpassung der FunktionalitĂ€t an die Anforderungen des Jahres 2020, die Bereinigung des Codefundaments und die Vereinfachung der Projektbetreuung. Erwartete Ănderungen:
- Wesentliche Modernisierung von QML:
- UnterstĂŒtzung strenger Typisierung.
- Möglichkeit, QML in eine C++-Darstellung und in Maschinencode zu kompilieren.
- Die vollstĂ€ndige UnterstĂŒtzung von JavaScript wird zu einer Option (die Verwendung einer voll funktionsfĂ€higen JavaScript-Engine erfordert erhebliche Ressourcen, was die Verwendung von QML auf GerĂ€ten wie Mikrocontrollern behindert).
- Verzicht auf Versionsverwaltung in QML.
- Vereinheitlichung von Datenstrukturen, die in QObject und QML dupliziert werden (ermöglicht eine Reduzierung des Speicherverbrauchs und beschleunigt den Start).
- Abkehr von der Generierung von Datenstrukturen zur Laufzeit zugunsten der Generierung zur Compile-Zeit.
- Verstecken interner Komponenten durch die Verwendung von privaten Methoden und Eigenschaften.
- Verbesserte Integration mit Entwicklungstools fĂŒr Refactoring und Fehlerdiagnose wĂ€hrend der Kompilierung;
- HinzufĂŒgung einer neuen abstrakten Schicht, der Rendering Hardware Interface (RHI), um eine nahtlose Nutzung verschiedener grafischer APIs wie OpenGL, Vulkan, Metal und Direct 3D zu gewĂ€hrleisten (frĂŒher war Qt ausschlieĂlich an OpenGL gebunden). Die gesamte vorhandene Rendering-Infrastruktur, einschlieĂlich QPainter, Qt Quick Scenegraph und Qt3D, wird auf RHI umgestellt. Es wird auch geplant, das Qt Shader Tools-Modul hinzuzufĂŒgen, um verschiedene Shader-Entwicklungssprachen zu unterstĂŒtzen und die Cross-Kompilierung von Shadern sowohl wĂ€hrend des Builds als auch zur Laufzeit des Programms zu ermöglichen;
- Vorbereitung einer einheitlichen API zur Erstellung von BenutzeroberflĂ€chen, die Elemente der 2D- und 3D-Grafik kombinieren. Die neue API ermöglicht die Verwendung von QML zur Definition von 3D-Elementen in BenutzeroberflĂ€chen, ohne das Format UIP zu verwenden. Im neuen Interface zur Integration von 3D-Inhalten mit Qt Quick plant man, Probleme wie hohe Kosten bei der Integration von QML mit Inhalten aus Qt 3D oder 3D Studio sowie die Unmöglichkeit der Synchronisation von Animationen und Transformationen auf der Ebene einzelner Frames zwischen 2D und 3D zu lösen. Eine gemeinsame, verschachtelte Darstellung von 2D und 3D wird mit Hilfe einer neuen Rendering-Engine realisiert. Eine vorlĂ€ufige Implementierung des neuen Qt Quick mit 3D-UnterstĂŒtzung wird in der Version Qt 5.14 erwartet;
- HinzufĂŒgung von Werkzeugen zur Verarbeitung von grafikbezogenen Ressourcen in der Compilierungsphase, zum Beispiel zur Umwandlung von PNG-Bildern in komprimierte Texturen oder zur Konvertierung von Shadern und Meshes in optimierte binĂ€re Formate fĂŒr spezifische Hardware;
- Integration einer einheitlichen Engine fĂŒr Designs und Stile, die das Erscheinungsbild von Anwendungen basierend auf Qt Widgets und Qt Quick auf verschiedenen mobilen und Desktop-Plattformen vereinheitlicht;
- Vereinheitlichung der Werkzeuge zur Erstellung von BenutzeroberflÀchen. Um die Duplizierung von FunktionalitÀten zu vermeiden und die Lieferung von zwei separaten Produkten zu beenden, wird die Integration der FunktionalitÀt von Qt 3D Studio in Qt Design Studio erwartet, dessen viele Teilsysteme und das Plugin-Anschlusssystem auf einer einheitlichen Codebasis mit Qt Creator basieren.
In Qt Design Studio plant man auĂerdem, eine qualitativ hochwertige Integration mit Content-Erstellungs-Paketen wie Photoshop, Sketch, Illustrator, Maya und 3D Max zu gewĂ€hrleisten. Zu den Hauptsprachen, die im einheitlichen Entwicklungstool unterstĂŒtzt werden, gehören C++, QML und Python. Die Vereinheitlichung umfasst auch die Möglichkeit, aus Qt Creator auf die Werkzeuge zur Gestaltung von BenutzeroberflĂ€chen zuzugreifen und den Designern der BenutzeroberflĂ€che Funktionen aus den Entwicklertools zur VerfĂŒgung zu stellen, wie z.B. die Kompilierung des Projekts oder die Testung der Anwendung auf dem GerĂ€t; - Als Build-System wurde entschieden, CMake anstelle von QMake zu verwenden. Die UnterstĂŒtzung von Anwendungen, die mit QMake erstellt wurden, bleibt erhalten, aber Qt selbst wird mit CMake aufgebaut. CMake wurde gewĂ€hlt, da dieses Werkzeug in der C++-Projektentwicklung weit verbreitet ist und von vielen integrierten Entwicklungsumgebungen unterstĂŒtzt wird. Die Entwicklung des Build-Systems Qbs, das als Ersatz fĂŒr QMake vorgesehen war, ;
- Wechsel zur Entwicklung auf den Standard C++17 (zuvor wurde C++98 verwendet). In Qt 6 wird die UnterstĂŒtzung vieler moderner C++-Funktionen geplant, ohne die AbwĂ€rtskompatibilitĂ€t zu bestehendem Code, der auf frĂŒheren Standards basiert, zu verlieren.
- Die Möglichkeit, bestimmte Funktionen aus C++ zu nutzen, die fĂŒr QML und Qt Quick angeboten werden. Dazu wird ein neues Eigenschaften-System fĂŒr QObject und Ă€hnliche Klassen vorgestellt. Eine Engine fĂŒr das Arbeiten mit Bindings wird in den Qt-Kern integriert, was die Last und den Speicherverbrauch fĂŒr Bindings reduziert und sie allen Teilen von Qt verfĂŒgbar macht, nicht nur Qt Quick;
- Fortsetzung der Arbeiten zur Erweiterung der UnterstĂŒtzung weiterer Sprachen wie Python und WebAssembly;
- Restrukturierung in kleinere Komponenten und Reduzierung der GröĂe des Basisprodukts. Entwicklungswerkzeuge und spezialisierte Komponenten werden als Plugins verfĂŒgbar gemacht, die ĂŒber einen neuen Katalog-Shop verbreitet werden. Auch Plugins von Drittanbietern fĂŒr Qt, sowohl kostenlose als auch kostenpflichtige, werden akzeptiert.
Quelle: opennet.ru
