Випуск складального інструментарію Qbs 1.21 та початок тестування Qt 6.3

Подано випуск складального інструментарію Qbs 1.21. Це восьмий випуск після відходу компанії Qt Company від розробки проекту, підготовленого силами спільноти, зацікавленої у продовженні розробки Qbs. Для складання Qbs серед залежностей потрібно Qt, хоча сам Qbs розрахований на організацію складання будь-яких проектів. Qbs використовує спрощений варіант мови QML для визначення сценаріїв складання проекту, що дозволяє визначати досить гнучкі правила складання, в яких можуть підключатися зовнішні модулі, використовувати функції JavaScript і створюватися довільні правила складання.

Мова сценаріїв, що використовується в Qbs, адаптована для автоматизації генерації та аналізу сценаріїв складання інтегрованими середовищами розробки. Крім того, Qbs не генерує make-файли, а сам, без посередників, таких як утиліта make, контролює запуск компіляторів та компонувальників, оптимізуючи процес збирання на основі детального графа всіх залежностей. Наявність початкових даних про структуру та залежність у проекті дозволяє ефективно розпаралелювати виконання операцій у кілька потоків. Для великих проектів, що складаються з великої кількості файлів і піддиректорій, продуктивність повторного перескладання з використанням Qbs може випереджати make в рази - перескладання виконується майже миттєво і не змушує розробника витрачати час на очікування.

Нагадаємо, що у 2018 році компанією Qt Company було ухвалено рішення про припинення розробки Qbs. Qbs розвивався як заміна qmake, але в кінцевому рахунку було вирішено використовувати CMake як основну складальну систему для Qt у довгостроковій перспективі. Розробка Qbs тепер продовжена у формі незалежного проекту, що підтримується силами спільноти та зацікавленими розробниками. Для розробки поки що продовжує використовуватися інфраструктура Qt Company.

Основні нововведення Qbs 1.21:

  • Перероблено механізм провайдерів модулів (генераторів модулів). Для фреймворків, таких як Qt і Boost, тепер можна використовувати більше одного провайдера, визначати який із провайдерів запускати за допомогою нової властивості qbsModuleProviders і вказувати пріоритет для вибору модулів, що згенерували різні провайдери. Наприклад, можна вказати два провайдери «Qt» і «qbspkgconfig», перший з яких спробує використовувати установку Qt (через пошук qmake), і якщо подібна установка не буде знайдена другий провайдер спробує задіяти Qt, що надається системою (через виклик pkg-config) : CppApplication { Depends { name: "Qt.core" } files: "main.cpp" qbsModuleProviders: ["Qt", "qbspkgconfig"] }
  • Доданий провайдер «qbspkgconfig», який прийшов на зміну провайдеру модулів «fallback», який намагався згенерувати модуль за допомогою pkg-config, якщо модуль не був згенерований іншими провайдерами. На відміну від "fallback" у "qbspkgconfig" замість виклику утиліти pkg-config застосовується вбудована C++ бібліотека для прямого читання файлів ".pc", що дозволяє прискорити роботу та отримати додаткову інформацію про залежність пакетів, недоступну під час виклику утиліти pkg-config.
  • Додано підтримку специфікації C++23, що визначає майбутній стандарт C++.
  • Для інструментарію GCC додано підтримку архітектури Elbrus E2K.
  • Для платформи Android додано властивість Android.ndk.buildId, що дозволяє перевизначити значення за замовчуванням для прапора компонувальника build-id.
  • У модулях capnproto і protobuf реалізована можливість використання runtime, наданих провайдером qbspkgconfig.
  • Вирішено проблеми з відстеженням змін у файлах з вихідним кодом на платформі FreeBSD, що виникали через відкидання мілісекунд при оцінці часу зміни файлу.
  • Додано властивість ConanfileProbe.verbose, що спрощує налагодження проектів, які використовують пакетний менеджер Conan.

Додатково можна відзначити початок альфа-тестування фреймворку Qt 6.3, в якому реалізовано новий модуль «Qt Language Server» з підтримкою протоколів Language Server та JsonRpc 2.0, до модуль Qt Core додано велику порцію нових функцій, у модулі Qt Quick Dialogs реалізовано QML-тип Message Для використання наданих платформою діалогових вікон, модуль Qt Wayland Compositor доданий композитний сервер Qt Shell і API для створення власних розширень оболонки користувача.

У модулі Qt QML запропоновано реалізацію компілятора qmltc (QML type compiler), що дозволяє скомпілювати структури об'єктів QML у класи мовою C++. Для комерційних користувачів Qt 6.3 почалося тестування продукту Qt Quick Compiler, який крім вищезазначеного QML Type Compiler включає QML Script Compiler, що дозволяє компілювати функції та вираження QML код на C++. Зазначається, що застосування Qt Quick Compiler дозволить наблизити продуктивність програм на базі QML до нативних програм, зокрема при компіляції розширень відзначається скорочення часу запуску та виконання приблизно на 30% порівняно з використанням варіанта, що інтерпретується.

Джерело: opennet.ru

Додати коментар або відгук