È stato presentato il rilascio degli strumenti di assemblaggio Qbs 1.21. Questo è l'ottavo rilascio dopo l'uscita della Qt Company dallo sviluppo del progetto, preparato dalla comunità interessata a continuare lo sviluppo di Qbs. Per l'assemblaggio di Qbs è necessaria Qt tra le dipendenze, anche se Qbs è progettato per l'organizzazione dell'assemblaggio di qualsiasi progetto. Qbs utilizza una versione semplificata del linguaggio QML per definire gli script di assemblaggio del progetto, il che consente di stabilire regole di assemblaggio abbastanza flessibili nelle quali possono essere connessi moduli esterni, utilizzare funzioni in JavaScript e creare regole di assemblaggio personalizzate.
Il linguaggio di scripting utilizzato in Qbs è stato adattato per automatizzare la generazione e l'analisi degli script di compilazione in ambienti di sviluppo integrati. Inoltre, Qbs non genera makefile, ma controlla direttamente, senza intermediari come l'utilità make, l'avvio dei compilatori e dei linker, ottimizzando il processo di compilazione 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 in modo efficace l'esecuzione delle operazioni su più thread. Per grandi progetti, composti da un numero elevato di file e sottodirectory, le prestazioni di ricompilazione utilizzando Qbs possono superare di gran lunga quelle di make: la ricompilazione avviene quasi istantaneamente e non costringe lo sviluppatore a perdere tempo ad aspettare.
Ricordiamo che nel 2018 la 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 principale sistema di compilazione per Qt a lungo termine. Lo sviluppo di Qbs è ora continuato sotto forma di progetto indipendente, supportato dalla comunità e da sviluppatori interessati. Per lo sviluppo si continua a utilizzare l'infrastruttura di Qt Company.
Novità principali di Qbs 1.21:
- È stato rielaborato il meccanismo dei fornitori di moduli (generatori di moduli). Per framework come Qt e Boost, ora è possibile utilizzare più di un fornitore, determinare quale fornitore attivare tramite la nuova proprietà qbsModuleProviders e specificare una priorità per la selezione dei moduli generati da diversi fornitori. Ad esempio, si possono specificare due fornitori "Qt" e "qbspkgconfig", il primo dei quali tenterà di utilizzare l'installazione personalizzata di Qt (cercando qmake), e se tale installazione non viene trovata, il secondo fornitore tenterà di utilizzare Qt fornito dal sistema (attraverso la chiamata a pkg-config): CppApplication { Depends { name: "Qt.core" } files: "main.cpp" qbsModuleProviders: ["Qt", "qbspkgconfig"] }
- È stato aggiunto il fornitore "qbspkgconfig", che ha sostituito il fornitore di moduli "fallback", che tentava di generare un modulo tramite pkg-config se il modulo richiesto non era stato generato da altri fornitori. A differenza di "fallback", in "qbspkgconfig" viene utilizzata una libreria C++ integrata per la lettura diretta dei file "*.pc", invece di chiamare l'utilità pkg-config, il che consente di velocizzare le operazioni e ottenere informazioni aggiuntive sulle dipendenze dei pacchetti non disponibili tramite la chiamata a pkg-config.
- È stato aggiunto il supporto per la specifica C++23, che definisce il futuro standard C++.
- Per l'utenza GCC è stato aggiunto il supporto per l'architettura Elbrus E2K.
- Per la piattaforma Android è stata aggiunta la proprietà Android.ndk.buildId, che consente di sovrascrivere il valore predefinito per il flag del linker "—build-id".
- Nelle moduli capnproto e protobuf è stata implementata la possibilità di utilizzare i runtime forniti dal fornitore qbspkgconfig.
- Sono stati risolti i problemi relativi al tracciamento delle modifiche nei file di codice sorgente sulla piattaforma FreeBSD, causati dal troncamento dei millisecondi nella valutazione del tempo di modifica del file.
- Aggiunta la proprietà ConanfileProbe.verbose, che semplifica il debug dei progetti che utilizzano il gestore di pacchetti Conan.
Inoltre, si segnala l'inizio della fase di test alpha del framework Qt 6.3, che implementa un nuovo modulo «Qt Language Server» con supporto per i protocolli Language Server e JsonRpc 2.0. Nel modulo Qt Core è stata aggiunta una grande quantità di nuove funzioni, mentre nel modulo Qt Quick Dialogs è stato realizzato il tipo QML MessageDialog per l'utilizzo delle finestre dialogo fornite dalla piattaforma. Inoltre, nel modulo Qt Wayland Compositor è stato aggiunto un compositore. server Qt Shell e API per la creazione di estensioni personalizzate della shell utente.
Nel modulo Qt QML è stata proposta l'implementazione del compilatore qmltc (QML type compiler), che consente di compilare strutture di oggetti QML in classi in linguaggio C++. Per gli utenti commerciali, è iniziato il test del prodotto Qt Quick Compiler, che oltre al già menzionato QML Type Compiler include il QML Script Compiler, che consente di compilare funzioni ed espressioni QML in codice C++. Si segnala che l'uso di Qt Quick Compiler permetterà di avvicinare le prestazioni delle applicazioni basate su QML a quelle delle applicazioni native, in particolare con la compilazione delle estensioni si osserva una riduzione del tempo di avvio e di esecuzione di circa il 30% rispetto all'uso della variante interpretata.
Fonte: opennet.ru
