Апублікаваны план развіцця функцыянальнасці Qt 6

Ларс Кнолл (Lars Knoll), стваральнік рухавічка KHTML, кіраўнік праекта Qt Project і тэхнічны дырэктар кампаніі Qt Company, распавёў аб планах па стварэнні наступнай значнай галінкі фрэймворка Qt. Пасля завяршэння фармавання функцыянальнасці галінкі Qt 5.14 распрацоўка будзе сфакусаваная на падрыхтоўцы выпуску Qt 6, які чакаецца ў канцы 2020 гады.

Qt 6 будзе развівацца з аглядкай на забеспячэнне сумяшчальнасці з Qt 5, але не выключана ўзнікненне асобных праблем, бо вызначаныя архітэктурныя змены і чыстку немагчыма будзе рэалізаваць без страты вызначанага ўзроўня сумяшчальнасці. Для згладжвання пераходу некаторыя магчымасці Qt 6 плануецца ў скарочаным выглядзе ўключыць у склад выпускаў Qt 5.14 і Qt 5.15 LTS. Таксама будзе падрыхтаваны інструментар для спрашчэння міграцыі на Qt 6.

Сярод асноўных мэт для наступнай значнай галіны называецца прывядзенне функцыянальнасці ў адпаведнасць з патрабаваннямі 2020 года, правядзенне чысткі кодавай базы і спрашчэнне суправаджэння праекта. Чаканыя змены:

  • Істотная мадэрнізацыя QML:
    • Падтрымка строгай тыпізацыі.
    • Магчымасць кампіляцыі QML ва ўяўленне на C++ і машынны код.
    • Пераклад поўнай падтрымкі JavaScript у разрад опцый (выкарыстанне поўнафункцыянальнага JavaScript-рухавічка патрабуе вялікіх рэсурсаў, што замінае ўжыванню QML на такім абсталяванні, як мікракантролеры).
    • Адмова ад версіявання ў QML.
    • Уніфікацыя структур дадзеных, якія дублююцца ў QObject і QML (дазволіць скараціць спажыванне памяці і паскорыць запуск).
    • Сыход ад генерацыі структур дадзеных падчас выканання на карысць генерацыі падчас кампіляцыі.
    • Утойванне ўнутраных кампанентаў праз выкарыстанне прыватных метадаў і ўласцівасцяў.
    • Палепшаная інтэграцыя з інструментамі распрацоўкі для рэфактарынгу і дыягностыкі памылак падчас кампіляцыі;
  • Даданне новага абстрактнага пласта Rendering Hardware Interface (RHI) для забеспячэнне бясшвоўнага выкарыстання розных графічных API, уключаючы OpenGL, Vulkan, Metal і Direct 3D (раней Qt быў завязаны толькі на OpenGL). На выкарыстанне RHI будзе пераведзена ўся наяўная інфраструктура рэндэрынгу, уключаючы QPainter, Qt Quick Scenegraph і Qt3D. Таксама плануецца дадаць модуль Qt Shader Tools для падтрымкі розных моў распрацоўкі шэйдараў і забеспячэнні крос-кампіляцыі шэйдараў як на этапе зборкі, так і падчас выканання праграмы;
  • Падрыхтоўка уніфікаванага API для стварэння інтэрфейсаў карыстальніка, якія спалучаюць элементы 2D і 3D графікі. Новы API дазволіць выкарыстоўваць QML для вызначэння 3D-элементаў інтэрфейсаў без задзейнічання фармату UIP. У новым інтэрфейсе для інтэграцыі 3D-кантэнту з Qt Quick плануюць вырашыць такія праблемы, як вялікія накладныя выдаткі пры інтэграцыі QML з кантэнтам з Qt 3D ці 3D Studio, і немагчымасць сінхранізацыі анімацыі і пераўтварэнняў на ўзроўні асобных кадраў паміж 2D і 3D. Сумесная ва ўкладзеная адмалёўка 2D і 3D будзе рэалізавана пры дапамозе новага рухавічка рэндэрынгу. Папярэдняя рэалізацыя новага Qt Quick з падтрымкай 3D чакаецца ў выпуску Qt 5.14;
  • Даданне інструментаў для апрацоўкі звязаных з графікай рэсурсаў на этапе кампіляцыі, напрыклад, для пераўтварэння PNG-малюнкаў у сціснутыя тэкстуры або для канвертавання шэйдараў і мешей у аптымізаваныя бінарныя фарматы для канкрэтнага абсталявання;
  • Убудаванне ўніфікаванага рухавічка для тэм афармлення і стыляў, які дазваляе дамагчыся вонкавага выгляду прыкладанняў на базе Qt Widgets і Qt Quick, роднага для розных мабільных і настольных платформаў;
  • Уніфікацыя інструментаў для стварэння інтэрфейсу карыстальніка. Для выключэння дубліравання функцыянальнасці і спынення пастаўкі двух асобных прадуктаў, чакаецца інтэграцыя функцыянальнасці Qt 3D Studio у Qt Design Studio, многія падсістэмы якога і фрэймворк падключэння плагінаў пабудаваны на адзінай з Qt Creator кодавай базе.
    У Qt Design Studio таксама плануюць забяспечыць якасную інтэграцыю з пакетамі для стварэння кантэнту, такімі як Photoshop, Sketch, Illustrator, Maya і 3D Max. У якасці асноўных моў, якія падтрымліваюцца ва ўніфікаваным інструментарыі для распрацоўкі, называюцца C++, QML і Python. Уніфікацыя таксама мае на ўвазе магчымасць звароту з Qt Creator да сродкаў праектавання інтэрфейсу, і прадастаўленне дызайнерам інтэрфейсу магчымасцяў з інструментаў для распрацоўшчыкаў, напрыклад, кампіляцыі праекта або тэсціравання прыкладання на прыладзе;

  • У якасці сістэмы зборкі вырашана выкарыстоўваць CMake замест QMake. Падтрымка зборкі прыкладанняў пры дапамозе QMake будзе захавана, але сам Qt будзе збірацца з выкарыстаннем CMake. CMake абраны, бо дадзены інструментар атрымаў шырокі распаўсюд у асяроддзі распрацоўнікаў праектаў на C++ і падтрымліваецца ў шматлікіх інтэграваных асяроддзях распрацоўкі. Распрацоўка зборачнай сістэмы Qbs, якая прэтэндавала на ролю замены QMake, спынена;
  • Пераход пры распрацоўцы на стандарт C++17 (раней выкарыстоўваўся C++98). У Qt 6 плануюць рэалізаваць падтрымку шматлікіх сучасных магчымасцяў C++, але без страты зваротнай сумяшчальнасці з кодам на аснове мінулых стандартаў.
  • Магчымасць выкарыстання з C++ некаторай функцыянальнасці, прапанаванай для QML і Qt Quick. У тым ліку, будзе прадстаўлена новая сістэма ўласцівасцяў для QObject і падобных класаў. З QML у ядро ​​Qt будзе інтэграваны рухавічок для працы з біндзінгамі, што дазволіць зменшыць нагрузку і спажыванне памяці для біндзінгаў і зрабіць іх даступнымі для ўсіх частак Qt, а не толькі для Qt Quick;
  • Працяг працы па пашырэнні падтрымкі дадатковых моў, такіх як Python і WebAssembly;
  • Рэструктурызацыя з разбіццём на драбнейшыя складовыя часткі і скарачэннем памеру базавага прадукта. Інструменты для распрацоўшчыкаў і спецыялізаваныя кампаненты будуць пастаўляцца ў выглядзе дапаўненняў, якія распаўсюджваюцца праз новы каталог-краму. Для распаўсюджвання будуць прымацца і дадаткі да Qt ад іншых распрацоўнікаў, як бясплатныя, так і платныя.

Крыніца: opennet.ru

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