È stata rilasciata la versione 2.0 dell'insieme di strumenti di build Qbs. Per costruire Qbs, è necessario Qt tra le dipendenze, anche se Qbs è progettato per gestire la build di qualsiasi progetto. Qbs utilizza una variante semplificata del linguaggio QML per definire gli script di build del progetto, permettendo di stabilire regole di build abbastanza flessibili, dove possono essere collegati moduli esterni, utilizzate funzioni JavaScript e create regole di build personalizzate.
Il linguaggio di scripting utilizzato in Qbs è stato adattato per automatizzare la generazione e l'analisi degli script di build nei vari ambienti di sviluppo integrati. Inoltre, Qbs non genera file make, ma gestisce direttamente, senza intermediari come l'utilità make, l'avvio dei compilatori e dei linker, ottimizzando il processo di build sulla base di un grafo dettagliato di tutte le dipendenze. La disponibilità di dati iniziali sulla struttura e sulle dipendenze del progetto consente di parallelizzare efficacemente l'esecuzione delle operazioni su più thread. Per progetti di grandi dimensioni, composti da un elevato numero di file e sottodirectory, le prestazioni della ricompilazione con Qbs possono superare di gran lunga quelle di make — la ricompilazione avviene quasi istantaneamente, senza far perdere tempo agli sviluppatori in attesa.
Ricordiamo che nel 2018 l'azienda Qt Company ha deciso di interrompere lo sviluppo di Qbs. Qbs è stato sviluppato come sostituto di qmake, ma alla fine si è deciso di utilizzare CMake come sistema di build principale per Qt a lungo termine. Lo sviluppo di Qbs è ora proseguito sotto forma di progetto indipendente, sostenuto dalla comunità e da sviluppatori interessati. Per lo sviluppo, si continua a utilizzare l'infrastruttura di Qt Company.
Il significativo cambiamento del numero di versione è dovuto all'implementazione di un nuovo backend JavaScript, che ha sostituito QtScript, dichiarato obsoleto in Qt 6. Continuare a mantenere QtScript con proprie forze è stato considerato irrealistico a causa dei complessi legami con JavaScriptCore, quindi come base per il nuovo backend è stato scelto il motore JavaScript autoconclusivo e compatto QuickJS, creato da Fabrice Bellard, noto per i progetti QEMU e FFmpeg. Il motore supporta la specifica ES2019 e ha prestazioni nettamente superiori rispetto agli analoghi esistenti (XS del 35%, DukTape più di due volte, JerryScript tre volte, e MuJS sette volte).
Dal punto di vista dello sviluppo degli script di build, il passaggio al nuovo motore non dovrebbe comportare cambiamenti significativi. Anche le prestazioni rimarranno più o meno allo stesso livello. Tra le differenze, si notano requisiti più rigorosi nel nuovo motore per l'uso di valori indefiniti, il che potrebbe rivelare problemi nei progetti esistenti, che sono rimasti inosservati con l'uso di QtScript.
Fonte: opennet.ru
