Menü

Cross-Plattform-Entwicklung: Qt-Chef-Maintainer veröffentlicht erste Pläne für Qt 6

Die kommende Hauptversion des Cross-Plattform-Frameworks bringt ein vollständig überarbeitetes QML und einen neuen Layer für 3D-Grafik.

Lesezeit: 3 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 33 Beiträge
Von

Der Qt Chief Maintainer und CTO der Qt Company Lars Knoll hat einen Ausblick auf Qt 6 veröffentlicht. Bis zum Release der nächsten Hauptversion des Cross-Plattform-Frameworks wird planmäßig noch ein gutes Jahr ins Land gehen, aber bereits jetzt steht die grundsätzliche Marschrichtung in vielen Bereichen fest. Vor allem bei der 3D-Grafik und für die Skriptsprache QML sind deutliche Änderungen gegenüber der Qt 5.x geplant.

Lars Knoll

(Bild: Qt)

Erklärtes Ziel für die kommende Hauptversion ist eine möglich große Kompatibilität zu Qt 5. Allerdings wird es in einigen Bereichen Änderungen geben, durch die Anpassungen im Code erforderlich sind. Derweil plant das Team, einige der wichtigen Funktionen für Qt 6 bereits in abgespeckter Form in die kommenden Qt-5-Versionen 5.14 und die darauffolgende Long-term-Support-Variante 5.15 LTS zu integrieren. Ab dem Feature Freeze für Qt 5.14 wird sich das Team verstärkt der Entwicklung von Qt 6 widmen.

Für die Skriptsprache QML (Qt Meta-object Language) plant die Qt Company zahlreiche Änderungen, die so umfangreich sind, dass die Ankündigung von einer neuen QML-Generation spricht. Mit der erstmals vor zehn Jahren veröffentlichten Sprache lassen sich deklarativ Benutzeroberflächen entwickeln. Knoll sieht einige Einschränkungen in der derzeitigen Implementierung, die mit Qt 6 verschwinden sollen.

Unter anderem soll das bisher schwach typisierte QML eine starke Typisierung bekommen. Das soll zum einen die Wartbarkeit des Codes verbessern und zum anderen eine bessere Integration in Entwicklungsumgebungen, Codeeditoren und weitere Tools ermöglichen. Schließlich ermöglicht eine starke Typisierung mehr Optimierungen beim Erstellen von Code.

Die Anbindung an JavaScript ist ebenfalls geplant, allerdings als optionales Feature. Eine JavaScript-Engine bringt zwar mehr Möglichkeiten, bremst allerdings vor allem auf Hardware mit geringen Ressourcen wie Mikrocontrollern die Performance, und Qt kommt häufig im Embedded-Bereich zum Einsatz.

Die Qt Company möchte zudem Doubletten bei den Datenstrukturen zwischen QObject und QML loswerden. Auch sollen möglichst alle Datenstrukturen beim Kompilieren und nicht erst zur Laufzeit erstellt werden. Künftig sollen Entwickler in QML Methoden und Properties als private deklarieren können, um Daten und Funktionen in QML-Komponenten vor der Außenwelt zu verstecken.

Qt 5 setzt auf OpenGL als API für 3D-Grafik. Für das kommende Qt-Release ist eine Anbindung sowohl an den OpenGL-Nachfolger Vulkan als auch an Microsofts Direct3D und Apples Metal geplant. Damit das Framework plattformübergreifend alle Techniken nutzen kann, bekommt es einen eigenen Layer, der die Grafik-API abstrahiert.

Die exakte Definition der Schicht, die Rendering Hardware Interface (RHI) heißen soll, steht noch aus. Als Orientierung dient der Layer zum Abstrahieren der Plattform Qt Platform Abstraction (QPA). Das Qt-Shader-Tools-Modul soll zudem beim Entwickeln von Shadern helfen, die unabhängig von der jeweiligen 3D-Engine arbeiten.

Darüber hinaus ist eine Integration von 3D-Inhalten in das Qt-Quick-Modul geplant. Ein neuer Renderer soll in der Lage sein, 2D- und 3D-Inhalte gemeinsam zu rendern und miteinander zu verschachteln. Damit können Entwickler künftig QML-Benutzerschnittstellen in 3D erstellen. Bereits für Qt 5.14 ist eine erste Einbindung von 3D-Support in Qt Quick geplant.

Darüber hinaus soll Qt 6 eine eigene Engine für Themes beziehungsweise Styles mitbringen, die ein natives Look and Feel für Qt-Anwendungen auf dem Desktop und Mobilgeräten sowohl mit Qt Widgets als auch über Qt Quick ermöglicht.

Seit Version 5.12 bietet Qt eine Anbindung an die Programmiersprache Python. Außerdem hat sich das Framework für WebAssembly geöffnet. Für Qt 6 ist eine Weiterentwicklung in den Bereichen geplant, aber weitere Ergänzungen sind derzeit nicht angekündigt.

Die meisten Entwickler verwenden weiterhin C++ im Zusammenspiel mit Qt. Version 5.x setzt auf C++98, und für die kommende Hauptversion bildet C++17 die allgemeine Grundlage. Ziel für den Versionssprung ist, zahlreiche erweiterte Funktionen des Sprachstandards einzubinden und dabei so kompatibel wie möglich zu Qt 5 zu bleiben.

Außerdem sollen Entwickler die Funktionen von QML und Qt Quick direkt aus C++ ansprechen können. Dazu arbeitet das Team an einem Property-System für QObject und verwandte Klassen, das nicht nur den Zugriff auf die Werte außerhalb von Qt Quick ermöglicht, sondern zudem den Overhead zur Laufzeit deutlich reduzieren soll.

Die Rückwärtskompatibilität soll so weit wie möglich erhalten bleiben. Aufgrund der geplanten Neuerungen sind jedoch einige größere Änderungen unvermeidlich, die zu Breaking Changes führen. Zudem werden einige Elemente von Qt künftig als überholt (deprecated) gelten. Die Klassen, Funktionen und Module, die bereits jetzt als überholt gekennzeichnet sind, werden weitgehend in Qt 6 verschwinden. Geplant sind zudem zahlreiche inkrementelle Verbesserungen bei den Klassen im Kern von Qt.

Bei Inkompatibilitäten sind freilich solche, die beim Kompilieren auftreten denen vorzuziehen, die erst zur Laufzeit auftreten. Das erklärte Ziel ist eine breite Kompatibilität auf Sourcecodeebene, aber eine Binärkompatibilität lässt sich aufgrund der Zahlreichen Anpassungen nicht erreichen. Qt 6 soll vor allem soweit kompatibel zum kommenden Qt 5.15 LTS sein, dass Entwickler auch große Codebasen gegen beide Qt-Versionen verwalten können.

Bei den Werkzeugen sind ebenfalls einige Änderungen geplant, die zu einem konsistenten Tooling führen sollen. Unter anderem will die Qt Company wie bereits Anfang des Jahres angekündigt die beiden Werkzeuge Design Studio und Qt 3D Studio wieder zusammenführen. Außerdem soll CMake das in Qt 5 verwendetet QMake als Build-System ablösen.

Das Qt Design Studio soll die wichtigsten Funktionen von Qt 3D erhalten.

(Bild: Qt)

Schließlich ist ein Marktplatz für Komponenten und Tools geplant, der nicht auf Endanwender, sondern auf Entwickler und Designer ausgerichtet ist. Drittanbieter können ihre Erweiterungen sowohl verkaufen als auch kostenlos auf dem Marketplace bereitstellen. Das Framework soll darüber hinaus modular erhältlich sein. So wird es einen Qt-Kern geben, und die Qt Company wird Add-ons auf dem Marktplatz anbieten. Konkrete Module oder Preise nennt Knoll noch nicht.

Weitere Details zu den geplanten Maßnahmen auf dem Weg zu Qt 6 lassen sich dem Blogbeitrag von Lars Knoll entnehmen. Planmäßig soll Qt 6 Ende 2020 erscheinen. Qt 5.0.0 kam im Dezember 2012 heraus, sodass die aktuelle Hauptversion bereits knappe sieben Jahre zählt. Für die aktuelle Serie sind zwei weitere Releases im November mit Qt 5.14 und im Mai 2020 mit Qt 5.15 vorgesehen. Die Pläne für Qt 6 sind noch nicht in Stein gemeißelt, und Knoll lädt explizit zum Abschluss seines Beitrags zur Beteiligung an der Diskussion und Entwicklung ein. (rme)