Qt project sees v6.0 landing by end of 2020


Qt has laid out its vision for v6 of the C++ GUI framework, promising a revamped markup language and next generation graphics when it ships next year.

The roadmap was laid out in a lengthy blog-post by Qt CTO Lars Knoll, who said the update from the seven year old Qt 5.0 shouldn’t be disruptive, but “will give us a higher degree of freedom to implement new features, functionality and better support the requirements of today and tomorrow than we currently can within the Qt 5 series.”

He added that some of the features slated for 6.0 will find their way back into ongoing versions of Qt 5.0.

Top of Knoll’s to do list is a next generation QML, which will introduce strong typing, which will make it easier for users to apply large changes to their codebases, and reduce overhead. JavaScript will become an optional feature of QML, and not having a full JavaScript engine built-in should also reduce overhead.

Versioning will be removed, which “in turn, will lead to large simplifications in the QML engine, greatly simplify our workload of maintaining Qt Quick and simplify usage of QML and Qt Quick for our users.” Also slated for removal is duplication of some data structures between QObject and QML, meaning more overhead reduction.

Other planned changes including support for compiling QML to efficient C++ and native code.

The graphics arena has changed somewhat in the last seven years, Knoll notes, and the new Qt will need to work with Vulkan, Metal and Direct3D. To enable that, it will define a new layer abstracting the graphics APIs, dubbed the Rendering Hardware Interface. 

When it comes to 3D, Knoll said, “The new integration of 3D content with Qt Quick is aiming to solve this problem. In this case, a full new renderer will allow rendering 2D and 3D content together and support arbitrary nesting between the two. This will turn QML into our UI definition language for 3D UIs and remove the need for the UIP format.”

On tooling, it has set the ambition of “best in class support for C++, QML and Python” and will shift from QMake to Cmake as the standard build system for building Qt itself, and has pledged better integration.

The project aims to enhance its C++ APIs, without losing backwards compatibility, and “work towards introducing a new property system for QObject and related classes, integrate the binding engine from QML into the core of Qt and make it available from C++.”

Away from the code, Knoll said a new marketplace for components and development tools is planned. “The marketplace will be focused on our direct users developing and designing applications and embedded devices, not targeted at consumers. As such it will be a central rallying point for the Qt ecosystem.”

This all kicks off in the very near future, according to Knoll: “With the feature freeze of Qt 5.14, more R&D focus will shift towards Qt 6, and we’re aiming to have Qt 6.0 ready for a first release by the end of 2020.”