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
