Release of the Qbs 1.21 build tool and start testing Qt 6.3

The Qbs 1.21 build tools release has been announced. This is the eighth release since the Qt Company left the development of the project, prepared by the community interested in continuing the development of Qbs. To build Qbs, Qt is required among the dependencies, although Qbs itself is designed to organize the assembly of any projects. Qbs uses a simplified version of the QML language to define project build scripts, which allows you to define fairly flexible build rules that can connect external modules, use JavaScript functions, and create custom build rules.

The scripting language used in Qbs is adapted to automate the generation and parsing of build scripts by IDEs. In addition, Qbs does not generate makefiles, and itself, without intermediaries such as the make utility, controls the launch of compilers and linkers, optimizing the build process based on a detailed graph of all dependencies. The presence of initial data on the structure and dependencies in the project allows you to effectively parallelize the execution of operations in several threads. For large projects consisting of a large number of files and subdirectories, the performance of rebuilds using Qbs can outperform make by several times - the rebuild is almost instantaneous and does not make the developer spend time waiting.

Recall that in 2018, the Qt Company decided to stop developing Qbs. Qbs was developed as a replacement for qmake, but ultimately it was decided to use CMake as the main build system for Qt in the long run. The development of Qbs has now continued as an independent project supported by community forces and interested developers. The Qt Company infrastructure continues to be used for development.

Key innovations in Qbs 1.21:

  • The mechanism of module providers (module generators) has been redesigned. For frameworks such as Qt and Boost, it is now possible to use more than one provider, specify which provider to run using the new qbsModuleProviders property, and specify a priority for selecting modules generated by different providers. For example, you can specify two providers "Qt" and "qbspkgconfig", the first of which will try to use the user's Qt installation (via a qmake search), and if no such installation is found, the second provider will try to use the Qt provided by the system (via a call to pkg-config) : CppApplication { Depends { name: "Qt.core" } files: "main.cpp" qbsModuleProviders: ["Qt", "qbspkgconfig"] }
  • Added the "qbspkgconfig" provider, which replaced the "fallback" module provider, which attempted to generate a module using pkg-config if the requested module was not generated by other providers. Unlike “fallback”, “qbspkgconfig” instead of calling the pkg-config utility uses a built-in C++ library to directly read “.pc” files, which speeds up work and provides additional information about package dependencies that is not available when calling the pkg-config utility.
  • Added support for the C++23 specification, which defines the future C++ standard.
  • Added support for the Elbrus E2K architecture for the GCC toolkit.
  • For the Android platform, the Android.ndk.buildId property has been added to override the default value for the "--build-id" linker flag.
  • The capnproto and protobuf modules implement the ability to use runtimes provided by the qbspkgconfig provider.
  • Resolved issues with change tracking in source files on the FreeBSD platform due to milliseconds being dropped when estimating file modification times.
  • Added the ConanfileProbe.verbose property to make it easier to debug projects that use the Conan package manager.

Additionally, we can note the beginning of alpha testing of the Qt 6.3 framework, which implements a new module “Qt Language Server” with support for the Language Server and JsonRpc 2.0 protocols, a large portion of new functions has been added to the Qt Core module, and the QML type MessageDialog has been implemented in the Qt Quick Dialogs module To use the dialog boxes provided by the platform, a composite Qt Shell server and an API for creating your own custom shell extensions have been added to the Qt Wayland Compositor module.

The Qt QML module offers an implementation of the qmltc (QML type compiler) compiler, which allows you to compile QML object structures into classes in C++. For commercial users of Qt 6.3, testing of the Qt Quick Compiler product has begun, which, in addition to the above-mentioned QML Type Compiler, includes the QML Script Compiler, which allows you to compile QML functions and expressions into C++ code. It is noted that the use of Qt Quick Compiler will bring the performance of QML-based programs closer to native programs; in particular, when compiling extensions, there is a reduction in startup and execution time by approximately 30% compared to using the interpreted version.

Source: opennet.ru

Add a comment