De release van de Qbs 2.0 buildtoolkit is gepresenteerd. Voor het bouwen van Qbs zijn afhankelijkheden zoals Qt vereist, hoewel Qbs zelf is ontworpen voor het organiseren van de bouw van elk project. Qbs gebruikt een vereenvoudigde variant van de QML-taal om bouwscenario's voor projecten te definiƫren, wat het mogelijk maakt om flexibele bouwregels te creƫren waaraan externe modules kunnen worden toegevoegd, JavaScript-functies kunnen worden gebruikt en willekeurige bouwregels kunnen worden gemaakt.
De in Qbs gebruikte scripts taal is aangepast voor het automatiseren van de generatie en parsing van bouwscripts voor geĆÆntegreerde ontwikkelomgevingen. Bovendien genereert Qbs geen make-bestanden, maar beheert het zelf, zonder tussenpersonen zoals de make-tool, de uitvoering van compilers en linkers, waarbij het bouwproces wordt geoptimaliseerd op basis van een gedetailleerde grafiek van alle afhankelijkheden. De aanwezigheid van oorspronkelijke gegevens over de structuur en afhankelijkheden in het project maakt het mogelijk om de uitvoering van taken effectief te paralelliseren in meerdere threads. Voor grote projecten, bestaande uit een groot aantal bestanden en subdirectory's, kan de prestaties van een herbouw met Qbs vele malen beter zijn dan die van make ā de herbouw gebeurt bijna onmiddellijk en voorkomt dat de ontwikkelaar tijd verliest met wachten.
Ter herinnering: in 2018 heeft Qt Company besloten om de ontwikkeling van Qbs stop te zetten. Qbs is ontwikkeld als vervanging voor qmake, maar uiteindelijk is besloten om CMake als de belangrijkste bouwsystem voor Qt op lange termijn te gebruiken. De ontwikkeling van Qbs wordt nu voortgezet in de vorm van een onafhankelijk project, ondersteund door de gemeenschap en geĆÆnteresseerde ontwikkelaars. Voor de ontwikkeling wordt voorlopig de infrastructuur van Qt Company nog steeds gebruikt.
De significante wijziging van het versienummer is gerelateerd aan de implementatie van een nieuwe JavaScript-backend, die de verouderde QtScript vervangt die in Qt 6 als verouderd werd beschouwd. Het handhaven van QtScript zelf is onrealistisch gebleken vanwege de complexe bindingen aan JavaScriptCore, daarom is de nieuwe backend gebaseerd op de zelfvoorzienende en compacte JavaScript-engine QuickJS, ontwikkeld door Fabrice Bellard, de oprichter van de QEMU- en FFmpeg-projecten. De engine ondersteunt de ES2019-specificatie en overtreft bestaande alternatieven in prestaties (XS met 35%, DukTape meer dan twee keer, JerryScript drie keer en MuJS zeven keer).
Wat betreft de ontwikkeling van bouwscenario's zou de overgang naar de nieuwe engine niet tot merkbare veranderingen moeten leiden. De prestaties blijven ook ongeveer op hetzelfde niveau. Een van de verschillen is dat de nieuwe engine strengere eisen stelt aan het gebruik van ongedefinieerde waarden, wat problemen in bestaande projecten kan aan het licht brengen die onopgemerkt zijn gebleven bij het gebruik van QtScript.
Bron: opennet.ru
