Udgivelsen af build-værktøjet Qbs 2.0 er blevet præsenteret. For at bygge Qbs kræves Qt i afhængighederne, selvom Qbs er designet til at organisere bygningen af enhver form for projekter. Qbs bruger en forenklet version af QML-sproget til at definere bygget scripts, hvilket giver mulighed for at definere tilstrækkeligt fleksible bygge regler, hvor eksterne moduler kan tilsluttes, Javascript-funktioner kan anvendes, og vilkårlige bygge regler kan oprettes.
Det script-sprog, der bruges i Qbs, er tilpasset til at automatisere generation og parsing af bygge-scripts i integrerede udviklingsmiljøer. Desuden genererer Qbs ikke make-filer, men kontrollerer selv, uden mellemmænd som make-nytteprogrammet, udførelsen af compilere og linker, hvilket optimerer byggeprocessen baseret på en detaljeret graf over alle afhængigheder. Tilgængeligheden af originale data om strukturen og afhængighederne i projektet tillader effektiv paralleldeling af operationer i flere tråde. For store projekter, der består af mange filer og undermapper, kan ydeevnen ved genopbygning ved hjælp af Qbs overgå make mange gange—genopbygningen udføres næsten øjeblikkeligt og tvinger udvikleren ikke til at bruge tid på at vente.
Det skal bemærkes, at Qt Company i 2018 traf beslutning om at stoppe udviklingen af Qbs. Qbs blev udviklet som en erstatning for qmake, men det blev i sidste ende besluttet at bruge CMake som det primære bygesystem for Qt på lang sigt. Udviklingen af Qbs fortsættes nu i form af et uafhængigt projekt støttet af fællesskabet og interesserede udviklere. Infrastruktur fra Qt Company bruges stadig til udvikling.
Det signifikante versionsskift skyldes implementeringen af en ny JavaScript-backend, der erstatter QtScript, som er blevet erklæret forældet i Qt 6. Det er anerkendt som urealistisk at fortsætte med at vedligeholde QtScript på grund af komplekse bindinger til JavaScriptCore, så en selvforsynende og kompakt JavaScript-motor, QuickJS, der er udviklet af Fabrice Bellard, skaber grundlaget for den nye backend. QuickJS understøtter ES2019-specifikationen og overgår betydeligt eksisterende alternativer i ydeevne (XS med 35%, DukTape mere end dobbelt, JerryScript tre gange, og MuJS syv gange).
Fra udviklingsperspektiv bør overgangen til den nye motor ikke medføre betydelige ændringer i opbygningen af scripts. Ydeevnen vil forblive på nogenlunde samme niveau. Blandt forskellene er der strengere krav i den nye motor til brugen af ubestemte værdier, hvilket kan afsløre problemer i eksisterende projekter, der har været uset under brug af QtScript.
Kilde: opennet.ru
