Die Veröffentlichung des Build-Tools Qbs 2.0 wurde vorgestellt. Für den Build von Qbs sind als Abhängigkeiten Qt erforderlich, obwohl Qbs darauf ausgelegt ist, den Build beliebiger Projekte zu organisieren. Qbs verwendet eine vereinfachte Version der QML-Sprache zur Definition von Build-Szenarien, was es ermöglicht, ausreichend flexible Build-Regeln zu definieren, bei denen externe Module integriert, JavaScript-Funktionen verwendet und benutzerdefinierte Build-Regeln erstellt werden können.
Die in Qbs verwendete Skriptsprache ist auf die Automatisierung der Generierung und Analyse von Build-Skripten in integrierten Entwicklungsumgebungen (IDEs) angepasst. Darüber hinaus generiert Qbs keine Makefiles, sondern steuert direkt, ohne Zwischeninstanzen wie die Make-Utility, den Start von Compilern und Linkern und optimiert den Build-Prozess basierend auf einem detaillierten Graphen aller Abhängigkeiten. Das Vorhandensein von Ausgangsdaten zur Struktur und zu den Abhängigkeiten im Projekt ermöglicht eine effiziente Parallelisierung von Abläufen in mehreren Threads. Für große Projekte mit einer Vielzahl von Dateien und Unterverzeichnissen kann die Leistung bei der erneuten Erstellung mit Qbs um ein Vielfaches schneller sein als bei Make – die erneute Erstellung erfolgt nahezu augenblicklich und zwingt den Entwickler nicht, Zeit mit Warten zu verbringen.
Erinnern wir uns, dass die Qt Company im Jahr 2018 beschlossen hat, die Entwicklung von Qbs einzustellen. Qbs wurde als Ersatz für qmake entwickelt, doch letztendlich wurde entschieden, CMake als primäres Build-System für Qt in der langfristigen Perspektive zu verwenden. Die Entwicklung von Qbs wird nun in Form eines unabhängigen Projekts fortgesetzt, das von der Community und interessierten Entwicklern unterstützt wird. Für die Entwicklung wird vorerst weiterhin die Infrastruktur der Qt Company genutzt.
Eine signifikante Änderung der Versionsnummer ist mit der Implementierung des neuen JavaScript-Backends verbunden, das QtScript ersetzt hat, welches in Qt 6 als veraltet eingestuft wurde. Die Fortsetzung der Unterstützung von QtScript in Eigenregie wurde aufgrund der komplexen Bindungen an JavaScriptCore als unrealistisch anerkannt. Daher wurde als Grundlage für das neue Backend die autarke und kompakte JavaScript-Engine QuickJS gewählt, die von Fabrice Bellard entwickelt wurde, der auch die Projekte QEMU und FFmpeg ins Leben gerufen hat. Die Engine unterstützt die ES2019-Spezifikation und übertrifft in der Leistung deutlich die verfügbaren Alternativen (XS um 35 %, DukTape mehr als doppelt, JerryScript um das Dreifache und MuJS um das Siebenfache).
Aus der Perspektive der Entwicklung von Build-Skripten sollte der Wechsel zur neuen Engine nicht zu nennenswerten Änderungen führen. Die Leistung bleibt ebenfalls ungefähr auf demselben Niveau. Zu den Unterschieden gehören die strengeren Anforderungen der neuen Engine im Umgang mit undefinierten Werten, was Probleme in bestehenden Projekten aufdecken kann, die bei der Verwendung von QtScript unbemerkt geblieben sind.
Quelle: opennet.ru
