Przedstawiono wydanie zestawu narzędzi do kompilacji Qbs 2.0. Qbs wymaga Qt jako zależności do kompilacji, chociaż sam Qbs jest zaprojektowany do organizowania kompilacji dowolnych projektów. Qbs używa uproszczonej wersji języka QML do definiowania scenariuszy kompilacji projektów, co pozwala na definiowanie dość elastycznych reguł kompilacji, które mogą obejmować moduły zewnętrzne, używać funkcji JavaScript i tworzyć niestandardowe reguły kompilacji.
Język skryptowy używany w Qbs jest przystosowany do automatyzacji generowania i analizowania skryptów kompilacji przez IDE. Dodatkowo Qbs nie generuje plików makefile, a sam, bez pośredników takich jak narzędzie make, kontroluje uruchamianie kompilatorów i linkerów, optymalizując proces kompilacji w oparciu o szczegółowy wykres wszystkich zależności. Obecność początkowych danych o strukturze i zależnościach w projekcie pozwala efektywnie zrównoleglić wykonywanie operacji w kilku wątkach. W przypadku dużych projektów składających się z dużej liczby plików i podkatalogów, wydajność przebudowy przy użyciu Qbs może być kilkukrotnie większa niż make - przebudowa jest niemal natychmiastowa i nie powoduje, że programista traci czas na czekanie.
Przypomnijmy, że w 2018 roku firma Qt podjęła decyzję o zaprzestaniu rozwoju Qbs. Qbs został opracowany jako zamiennik qmake, ale ostatecznie zdecydowano się na użycie CMake jako głównego systemu kompilacji Qt w dłuższej perspektywie. Rozwój Qbs jest obecnie kontynuowany jako niezależny projekt wspierany przez siły społeczne i zainteresowanych programistów. Infrastruktura Qt Company jest w dalszym ciągu wykorzystywana do rozwoju.
Istotna zmiana numeru wersji wynika z implementacji nowego zaplecza JavaScript, które zastąpiło QtScript, które zostało uznane za przestarzałe w Qt 6. Dalsze utrzymywanie QtScript na własną rękę ze względu na złożone powiązania z JavaScriptCore uznano za nierealne, więc jako podstawę nowego zaplecza wybrano samowystarczalny i kompaktowy silnik JavaScript QuickJS, stworzony przez Fabrice'a Bellarda, który założył projekty QEMU i FFmpeg. Silnik obsługuje specyfikację ES2019 i znacznie przewyższa istniejące analogi pod względem wydajności (XS o 35%, DukTape ponad dwukrotnie, JerryScript trzykrotnie, a MuJS siedmiokrotnie).
Jeśli chodzi o tworzenie skryptów kompilacji, przejście na nowy silnik nie powinno spowodować żadnych zauważalnych zmian. Wydajność również pozostanie na mniej więcej tym samym poziomie. Różnice obejmują surowsze wymagania w nowym silniku dotyczące używania niezdefiniowanych wartości, co może ujawnić problemy w istniejących projektach, które pozostały niezauważone podczas korzystania z QtScript.
Źródło: opennet.ru
