Qbs 2.0 assembly tool release

Qbs 2.0 build tool release introduced. To build Qbs, Qt is required as a dependency, 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 in which external modules can be connected, JavaScript functions can be used, and arbitrary build rules can be created.

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.

A significant change in the version number is associated with the implementation of a new JavaScript backend, which replaced QtScript, which was deprecated in Qt 6. It was considered unrealistic to continue maintaining QtScript on its own due to complex bindings to JavaScriptCore, so a self-sufficient and compact one was chosen as the basis for the new backend QuickJS JavaScript engine created by Fabrice Bellard, who founded the QEMU and FFmpeg projects. The engine supports the ES2019 specification and significantly outperforms its existing counterparts in performance (XS by 35%, DukTape by more than two times, JerryScript by three times, and MuJS by seven times).

From the point of view of the development of build scripts, the transition to a new engine should not lead to noticeable changes. Performance will also remain about the same. Of the differences, there are more stringent requirements in the new engine for the use of null values, which can reveal problems in existing projects that went unnoticed when using QtScript.

Source: opennet.ru

Add a comment