De release van de Qbs 2.0 build toolkit wordt gepresenteerd. Qbs vereist Qt als afhankelijkheid om te kunnen bouwen, hoewel Qbs zelf is ontworpen om de bouw van projecten te organiseren. Qbs gebruikt een vereenvoudigde versie van de QML-taal om projectbouwscenario's te definiëren, waardoor u vrij flexibele bouwregels kunt definiëren die externe modules kunnen bevatten, JavaScript-functies kunnen gebruiken en aangepaste bouwregels kunnen maken.
De scripttaal die in Qbs wordt gebruikt, is aangepast om het genereren en ontleden van buildscripts door IDE's te automatiseren. Bovendien genereert Qbs geen makefiles en regelt het zelf, zonder tussenpersonen zoals het make-hulpprogramma, de lancering van compilers en linkers, waarbij het bouwproces wordt geoptimaliseerd op basis van een gedetailleerde grafiek van alle afhankelijkheden. Door de aanwezigheid van initiële gegevens over de structuur en afhankelijkheden in het project kunt u de uitvoering van bewerkingen in verschillende threads effectief parallelliseren. Voor grote projecten die uit een groot aantal bestanden en submappen bestaan, kan het opnieuw opbouwen met behulp van Qbs vele malen beter presteren dan make - het opnieuw opbouwen gebeurt vrijwel onmiddellijk en de ontwikkelaar hoeft niet lang te wachten.
Bedenk dat de Qt Company in 2018 besloot te stoppen met de ontwikkeling van Qbs. Qbs is ontwikkeld als vervanging voor qmake, maar uiteindelijk werd besloten om op de lange termijn CMake te gebruiken als het belangrijkste bouwsysteem voor Qt. De ontwikkeling van Qbs is nu voortgezet als een onafhankelijk project, ondersteund door gemeenschapskrachten en geïnteresseerde ontwikkelaars. De infrastructuur van Qt Company wordt nog steeds gebruikt voor ontwikkeling.
De significante wijziging in het versienummer is te danken aan de implementatie van een nieuwe JavaScript-backend, die QtScript verving, dat in Qt 6 verouderd was verklaard. Het werd onrealistisch geacht om QtScript zelf te blijven onderhouden vanwege complexe bindingen met JavaScriptCore. Daarom werd de zelfstandige en compacte JavaScript-engine QuickJS, ontwikkeld door Fabrice Bellard, oprichter van de QEMU- en FFmpeg-projecten, gekozen als basis voor de nieuwe backend. De engine ondersteunt de ES2019-specificatie en presteert aanzienlijk beter dan bestaande analogen (XS met 35%, DukTape meer dan twee keer, JerryScript drie keer en MuJS zeven keer).
Wat betreft het ontwikkelen van buildscripts zou de overgang naar de nieuwe engine geen merkbare veranderingen moeten opleveren. Ook de prestaties blijven ongeveer gelijk. De verschillen omvatten strengere eisen in de nieuwe engine voor het gebruik van ongedefinieerde waarden, wat problemen in bestaande projecten aan het licht kan brengen die bij gebruik van QtScript onopgemerkt bleven.
Bron: opennet.ru
