Qbs je komunitou řízený, jazyk agnostický systém automatizace sestavování. Je rychlý a nabízí snadno naučitelný jazyk založený na QML.
Nedávno bylo oznámeno vydání Qbs 2.0, bezplatného, open-source multiplatformního softwaru pro správu procesu vývoje softwaru . Byl navržen pro podporu velkých a složitých projektů psaných v různých programovacích jazycích, především C/C++.
Nová verze 2.0 je významná svým číslem verze, protože je spojena s implementací nového JavaScriptového backendu , který nahradil QtScript, jenž se v Qt 6 stal zastaralým.
Pro ty, kteří nejsou s Qbs obeznámeni, používá zjednodušenou verzi jazyka QML k definování skriptů pro sestavení projektu, což umožňuje poměrně flexibilní pravidla sestavení, která mohou připojovat externí moduly, používat funkce JavaScriptu a vytvářet libovolná pravidla sestavení.
Qbs je unikátní v tom, že nemá žádný mechanismus pro interní sestavení, což zaručuje možnost vytvářet více sestavení z jednoho zdrojového stromu, včetně sestavení z jediného volání příkazu a paralelně.
Toto je klíčová funkce, která zajišťuje, že zdrojové soubory zůstanou nedotčeny, pokud je adresář sestavení smazán , a že do zdrojového adresáře nebudou zapsány žádné výstupní artefakty. Qt je vyžadován jako závislost pro sestavení Qbs, ačkoli samotný Qbs je navržen tak, aby organizoval sestavení jakéhokoli projektu.
Skriptovací jazyk používaný v Qbs je přizpůsoben pro automatizaci generování a analýzy sestavení skriptů pomocí IDE. Kromě toho Qbs negeneruje soubory makefiles a bez prostředníků, jako je nástroj make, řídí vydávání kompilátorů a linkerů, čímž optimalizuje proces sestavení na základě podrobného grafu všech závislostí.
Přítomnost počátečních dat o struktuře a závislostech v projektu umožňuje efektivně paralelizovat provádění operací v několika vláknech. U velkých projektů sestávajících z velkého počtu souborů a podadresářů může být výkon přestaveb pomocí Qbs několikrát lepší než make: přestavba je téměř okamžitá a neztrácí čas vývojářů čekáním.
Hlavní novinky QBS 2.0
Tato nová verze QBS 2.0 je pozoruhodná, jak již bylo zmíněno na začátku, kvůli novému JavaScriptovému enginu, který nahrazuje QtScript, jenž se pro Qt 6 stal zastaralým, jelikož se kvůli složitým vazbám na JavaScriptCore považovalo za nereálné nadále udržovat pouze QtScript.
Vyhlídka na zachování QtScriptu s jeho komplexní závislostí se nezdála nijak zvlášť přitažlivá. Žádný z kandidátů však nenabídl API pro zachycení přístupů k vlastnostem, což vývojáři říkají, že to absolutně potřebují z důvodů výkonu.
Z uživatelského hlediska by nemělo dojít k žádným znatelným změnám; zejména výkon se zdá být přibližně stejný. Nicméně QtScript byl docela shovívavý v přijímání nedefinovaných hodnot v kontextech, kde to nebylo nutné, takže nová implementace může odhalit některé chyby ve vašich projektech.
Engine je kompatibilní se specifikací ES2019 a výrazně překonává své stávající protějšky (XS o 35 %, DukTape více než dvojnásobek, JerryScript třikrát a MuJS sedmkrát). Z pohledu vývoje skriptů by přechod na nový engine neměl vést k žádným znatelným změnám.
Výkon zůstane téměř stejný. Mezi rozdíly patří přísnější požadavky na používání hodnot null, což může odhalit problémy ve stávajících projektech, které při používání QtScriptu zůstaly nepovšimnuty.
Dále je také zmíněno, že byly odstraněny soubory projektu qmake, což vedlo ke snížení údržby pro vývojáře.
Nakonec je zmíněno, že verze 2.1 se dočká přepsání kódu, u kterého vývojáři předpokládají, že bude mít několik nových funkcí a také obecná vylepšení výkonu.
Pokud máte zájem dozvědět se více, podrobnosti naleznete na následujícím odkazu.