Выпуск зборачнага інструментара 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

Дадаць каментар