The development plan for Qt 6 functionality has been published.

Lars Knoll, the creator of the KHTML engine, project lead of the Qt Project, and CTO of the Qt Company, explained shared plans for the creation of the next major branch of the Qt framework. After the functionality of the Qt 5.14 branch is finalized, development will focus on preparing the release of Qt 6, expected by the end of 2020.

Qt 6 will be developed with compatibility with Qt 5 in mind, but some issues may arise due to planned architectural changes and cleaning up, which cannot be done without losing a certain level of compatibility. To ease the transition, some features of Qt 6 are planned to be included in a limited form in the Qt 5.14 and Qt 5.15 LTS releases. Tools will also be prepared to simplify migration to Qt 6.

Among the main goals for the next major branch are aligning functionality with 2020 requirements, cleaning up the codebase, and simplifying project maintenance. Expected changes include:

  • Significant modernization of QML:
    • Support for strict typing.
    • The ability to compile QML into C++ and machine code representation.
    • Transitioning full JavaScript support to options (using a full-featured JavaScript engine requires significant resources, which hinders the use of QML on hardware such as microcontrollers).
    • Abandoning versioning in QML.
    • Unification of data structures duplicated in QObject and QML (this will reduce memory consumption and speed up startup).
    • Moving away from runtime data structure generation towards compile-time generation.
    • Hiding internal components through the use of private methods and properties.
    • Improved integration with development tools for refactoring and diagnosing errors during compilation;
  • The addition of a new abstract layer, Rendering Hardware Interface (RHI), to ensure seamless use of various graphics APIs, including OpenGL, Vulkan, Metal, and Direct 3D (previously, Qt was tied only to OpenGL). All existing rendering infrastructure, including QPainter, Qt Quick Scenegraph, and Qt3D, will be transitioned to use RHI. It is also planned to add the Qt Shader Tools module to support various shader development languages and ensure cross-compilation of shaders both at build time and during program execution;
  • Preparation of a unified API for creating user interfaces that combine elements of 2D and 3D graphics. The new API will allow the use of QML to define 3D interface elements without involving the UIP format. The new interface aims to address issues such as high overhead when integrating QML with content from Qt 3D or 3D Studio, as well as the inability to synchronize animation and transformations on a frame-by-frame basis between 2D and 3D. Collaborative nested rendering of 2D and 3D will be implemented using a new rendering engine. The preliminary implementation of the new Qt Quick with 3D support is expected in the Qt 5.14 release;
  • Addition of tools for processing graphics-related resources during the compilation stage, such as converting PNG images to compressed textures or converting shaders and meshes into optimized binary formats for specific hardware;
  • Embedding a unified theme engine and styles that achieve the appearance of applications based on Qt Widgets and Qt Quick, native to various mobile and desktop platforms;
  • Unification of tools for creating user interfaces. To eliminate functional duplication and cease the delivery of two separate products, integration of the functionality of Qt 3D Studio into Qt Design Studio is expected, many of whose subsystems and plugin connection framework are built on a shared codebase with Qt Creator.
    Qt Design Studio also plans to ensure high-quality integration with content creation packages such as Photoshop, Sketch, Illustrator, Maya, and 3D Max. The main languages supported in the unified development toolkit are C++, QML, and Python. Unification also implies the ability to access interface design tools from Qt Creator, providing interface designers with developer tool capabilities, such as project compilation or application testing on a device;
  • CMake has been chosen as the build system instead of QMake. Support for building applications with QMake will be maintained, but Qt itself will be built using CMake. CMake was selected because this toolchain has gained wide adoption among C++ project developers and is supported in many integrated development environments. The development of the Qbs build system, which aspired to replace QMake, the distribution of the plugin-container binary has been discontinued.;
  • Transitioning in development to the C++17 standard (previously C++98 was used). Qt 6 plans to implement support for many modern C++ features while maintaining backward compatibility with code based on previous standards.
  • The ability to use certain functionality provided for QML and Qt Quick in C++. This includes a new property system for QObject and similar classes. A binding engine will be integrated from QML into the Qt core, reducing the load and memory consumption for bindings and making them available for all parts of Qt, not just Qt Quick.
  • Continuing the work to expand support for additional languages such as Python and WebAssembly.
  • Restructuring into smaller components and reducing the size of the core product. Developer tools and specialized components will be provided as add-ons, distributed through a new catalog-store. Both free and paid add-ons from third-party developers will be accepted for distribution alongside Qt.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster