Представен е новият Qbs 2.0 за сглобяване. За сглобяването на Qbs е необходим Qt като зависимост, въпреки че самият Qbs е проектиран да организира сглобяването на всякакви проекти. Qbs използва опростен вариант на QML езика за определяне на сценарии за сглобяване на проекта, което позволява да се задават доста гъвкави правила за сглобяване, в които могат да се включват външни модули, да се използват функции на JavaScript и да се създават произволни правила за сглобяване.
Използваният в Qbs език за сценарии е адаптиран за автоматизация на генерирането и анализа на сценарии за компилация в интегрирани среди за разработка. Освен това, Qbs не генерира make-файлове, а сам, без посредници, като утилитата make, контролира стартиранията на компилатори и линковчици, оптимизирайки процеса на компилация на базата на подробен граф на всички зависимости. Наличието на първоначални данни за структурата и зависимостите в проекта позволява ефективно паралелно изпълнение на операции в множество потоци. За големи проекти, състоящи се от много файлове и подпапки, производителността на повторна компилация с Qbs може значително да превъзхожда make — повторната компилация се извършва почти мигновено и не накара разработчика да губи време в чакане.
Напомняме, че през 2018 година компанията Qt Company взе решение да прекрати разработката на Qbs. Qbs се развиваше като замяна на qmake, но в крайна сметка беше решено да се използва CMake като основна система за компилация за Qt в дългосрочен план. Разработката на Qbs сега продължава под формата на независим проект, поддържан от общността и заинтересовани разработчици. Инфраструктурата на Qt Company все още се използва за разработката.
Съществената промяна в номера на версията е свързана с внедряването на нова JavaScript бекенд, който заменя QtScript, обявен за остарял в Qt 6. Продължаването на поддръжката на QtScript самостоятелно поради сложните зависимости с JavaScriptCore е признато за нереалистично, затова за основа на новия бекенд е избран самодостатъчният и компактен JavaScript двигател QuickJS, създаден от Фабрис Беллар (Fabrice Bellard), индустриалец с истории като QEMU и FFmpeg. Двигателят поддържа спецификация ES2019 и по производителност значително надминава наличните аналози (XS с 35%, DukTape над два пъти, JerryScript на три пъти, а MuJS на седем пъти).
От гледна точка на разработката на сценарии за сглобяване, преминаването към новия двигател не би трябвало да доведе до значителни промени. Производителността също ще остане на приблизително същото ниво. От различията се отбелязват по-строги изисквания в новия двигател за работа с неопределени стойности, което може да открие проблеми в съществуващите проекти, останали незабелязани при използването на QtScript.
Източник: opennet.ru
