Qt 6 will be released by the end of 2020, after a lapse of eight major version update which Aspect?

Two months ago, Qt 5.13 stable version released , according to the official release schedule, Qt 5.14 will be released at the end of this year, next year to launch in mid-Qt 5.15 (perhaps the last version of Qt 5), then that might be the  end of the year 2020 the advent of Qt 6.

This means that from Qt 5 to Qt 6, experienced a period of time of up to eight years, such a large span, what it means for an open source framework? Qt 6 will usher in what kind of change? Qt team recently published an article in the blog describes them in technical aspects of Qt 6 placed vision . Here's a look at how the official is to look Qt 6.

Officially, Qt 6 will maintain the continuity of Qt 5 - to continue their work in Qt 5 series, and as far as possible not to Qt 5 users have a devastating effect in the use. But Qt 6, after all, as a major new version available, it also has its own mission, which will provide us with greater freedom to implement new features to better support current and future requirements , which is not currently Qt 5 family can be satisfied.

Qt 6 will clean up the code base and make it easier to maintain. Therefore, the focus will be on projects that require architectural changes in Qt, the impact of that is, if you do not destroy the Qt 5.x some degree of compatibility will not be able to complete these changes.

Premise combined with the continuity of the Qt 5, so Qt is one of the goals in 6 to meet the new requirements, the greatest extent possible to ensure compatibility with the Qt 5 series . Since the new version of Qt 5 is still in development, the official said some of the features will be Qt 6 into implementation 5.15 LTS Qt 5.14 and Qt. With Qt properties 5.14 freeze, the focus of R & D work will shift to Qt 6, and hopes to release the first version by the end of 2020.

As we all know, one of the biggest bright spot is its Qt cross-platform features - all desktop, mobile and embedded platforms can be deployed to developers through the use of a single code base technologies and applications. The desktop platform is based on the fundamental Qt, Qt in terms of which is the most central and most important market. Therefore, to maintain the health and growth of Qt in the desktop market is a prerequisite in other markets can also be growth.

The following describes some of the key technical changes made in Qt to enable it to adapt to technological development in the coming years.

The next generation of QML

QML and Qt Quick is the main technology to promote the sustainable growth of the Qt framework over the past few years. By using these techniques in an intuitive way to create the user interface is a unique selling point for their products.

But after all QML Qt 5 is created, there are some weird actions and their limitations. Therefore, the development team plans to borrow Qt 6 in order to achieve a significant improvement over the QML. The main changes are currently planned:

  • The introduction of a strong type system
  • JavaScript has become the optional features of QML
  • Remove QML version control features
  • Remove duplicate data and structure between QObject QML
  • To avoid generating a data structure at runtime phase
  • QML support will be compiled into efficient C ++ and native code
  • Support hide implementation details
  • Better integration tool

Next-generation graphics stack

Since Qt 5 release, the graphics field has undergone many changes, so Qt graphics stack frame had to make significant improvements to remain competitive.

Qt 5 as a unified API 3D using OpenGL graphics. But also since then, the industry gave birth to many new API. Vulkan is designated successor OpenGL on Linux platform, Apple is promoting the development of Metal, while Microsoft launched a Direct 3D. This means that Qt future must work seamlessly with all of these API. To achieve this, Qt must define a new layer on the basis of abstract graphics API (such as an integrated platform for QPA), this layer is called the official rendering hardware interfaces (Rendering Hardware Interface, RHI), they need to render all facilities (QPainter, Qt Quick Scenegraph and support for 3D is) built on top of this layer.

In addition, the team also intends to bring Qt 6 unifying theme / style engine, which will allow us to get a native look Qt Quick and Qt Widgets on the desktop and mobile platforms.

Enhancements to the C ++ API

C ++ tremendous changes taken place in the past few years. Qt 5 or C ++ 98 using standard Qt 6 now have begun to use C ++ 17. C ++ 17 provides more functionality out of the box, which in Qt 5 is not used, so Qt Goal 6 is to better integrate new features in C ++ 17, and to maintain compatibility with the Qt 5.

In addition, the team also plans to introduce by C ++ Qt Quick and QML as some new features, is committed to introducing a new system for the QObject property and related classes, the binding engine will QML Qt integrated into the kernel, and through C ++ for use.

New properties and binding engine system will greatly reduce the binding runtime overhead and memory consumption, and all other parts of Qt can access them, not just the Qt Quick.

Support for new languages

Qt 5.12 introduces support for Python in addition the team also tried through the introduction of Qt for WebAssembly technology will add a browser to the new platform. After the 6.0 release, to maintain and further expand its Qt cross-platform features will be an important part of the 6 series.

And improved compatibility of the incremental Qt 5

To maintain compatibility with older versions of the very important, the official said this is one of the main requirements 6 they develop Qt. Team in a blog said, they will indeed remove some deprecated features of Qt, but will also ensure that the desired user function is not affected. This means that critical functions, such as Qt Widgets and other functions most users will maintain its availability.

The team also plans to core classes and functions Qt 5 series can not be completed incremental improvements, aimed at maintaining full source code compatibility , but binary compatibility is not required, so the team will continue to achieve can not be completed in Qt 5 code cleanup and improvements.

The ultimate goal should be the  Qt 6 and Qt 5.15 LTS  has enough compatibility, this way developers can easily maintain a while for the two versions of the compiler of a large code base.

Guess you like

Origin www.oschina.net/news/109075/technical-vision-qt-6