Megjelent a Qt 6 funkcionalitási ütemterve

Lars Knoll, a KHTML motor megalkotója, a Qt Project projektmenedzsere és a Qt Company műszaki igazgatója, elmondtam a Qt keretrendszer következő jelentős ágának létrehozására vonatkozó tervekről. Amint a Qt 5.14 ág funkcionalitása elkészül, a fejlesztés a Qt 6 megjelenésére való felkészülésre összpontosít, ami várhatóan 2020 végén lesz.

A Qt 6 fejlesztése során a Qt 5-tel való kompatibilitást szem előtt tartva fogják fejleszteni, de egyéni problémák merülhetnek fel, mivel a tervezett építészeti változtatások és tisztítások nem valósíthatók meg a kompatibilitás bizonyos szintjének elvesztése nélkül. Az átmenet simítása érdekében a Qt 6 egyes funkcióit a tervek szerint csökkentett formában beépítik a Qt 5.14 és Qt 5.15 LTS kiadásokba. A Toolkit a Qt 6-ra való átállás egyszerűsítésére is készül.

A következő jelentős ág fő céljai között szerepel a funkcionalitás összhangba hozása a 2020-as követelményekkel, a kódbázis megtisztítása és a projektek karbantartásának egyszerűsítése. Várható változások:

  • A QML jelentős korszerűsítése:
    • Erős gépelési támogatás.
    • Képes QML-t C++ reprezentációra és gépi kódra fordítani.
    • A teljes JavaScript-támogatás opcióvá tétele (a teljes értékű JavaScript motor használata sok erőforrást igényel, ami megakadályozza a QML használatát olyan berendezéseken, mint például a mikrokontrollerek).
    • Verziószámítás elutasítása QML-ben.
    • A QObjectben és QML-ben duplikált adatstruktúrák egyesítése (csökkenti a memóriafelhasználást és felgyorsítja az indítást).
    • Az adatstruktúrák futásidejű generálásától való elmozdulás a fordítási idejű generálás javára.
    • Belső komponensek elrejtése privát módszerek és tulajdonságok használatával.
    • Továbbfejlesztett integráció a fejlesztőeszközökkel az újrafaktoráláshoz és a fordítási idejű hibadiagnosztikához;
  • Egy új absztrakt réteg, a Rendering Hardware Interface (RHI) hozzáadása a különféle grafikus API-k, köztük az OpenGL, a Vulkan, a Metal és a Direct 3D zökkenőmentes használatához (korábban a Qt csak OpenGL volt). Az összes meglévő renderelő infrastruktúra át lesz alakítva RHI használatára, beleértve a QPaintert, a Qt Quick Scenegrapht és a Qt3D-t. A tervek szerint a Qt Shader Tools modul hozzáadásával támogassa a különböző shader-fejlesztési nyelveket, és biztosítsa a shaderek keresztfordítását mind az összeállítási szakaszban, mind a futási időben;
  • Egységes API elkészítése 2D és 3D grafikus elemeket kombináló felhasználói felületek létrehozásához. Az új API lehetővé teszi a QML használatát a 3D interfész elemek meghatározásához UIP formátum használata nélkül. A 3D-s tartalmak Qt Quick-tel való integrálására szolgáló új interfész olyan problémák megoldását tervezi, mint például a Qt 3D vagy 3D Studio tartalommal való integrálásának magas költsége, valamint az animációk és a 2D és 3D közötti képkocka-szintű átalakítások szinkronizálásának képtelensége. A kombinált beágyazott 2D és 3D renderelés egy új renderelőmotor segítségével valósul meg. Az új, 3D-támogatással rendelkező Qt Quick előzetese a Qt 5.14 kiadásban várható;
  • Eszközök hozzáadása a grafikával kapcsolatos eszközök feldolgozásához fordítási időben, például PNG-képek konvertálása tömörített textúrákká, vagy árnyékolók és hálók konvertálása optimalizált bináris formátumokká bizonyos hardverekhez;
  • A témák és stílusok egységes motorjának beágyazása, amely lehetővé teszi a Qt Widgeteken és Qt Quicken alapuló alkalmazások megjelenését, amelyek a különböző mobil- és asztali platformokon natívak;
  • Eszközök egységesítése a felhasználói felület létrehozásához. A funkcionalitás megkettőzésének és két külön termék szállításának megszakításának elkerülése érdekében a Qt 3D Studio funkcióit várhatóan integrálni fogják a Qt Design Studióba, amelynek számos alrendszere és a beépülő modulok összekapcsolására szolgáló keretrendszer ugyanarra a kódbázisra épül. Qt Creator.
    A Qt Design Studio azt is tervezi, hogy kiváló minőségű integrációt biztosít olyan tartalomkészítő csomagokkal, mint a Photoshop, a Sketch, az Illustrator, a Maya és a 3D Max. Az egységes fejlesztői eszközkészletben támogatott fő nyelvek a C++, a QML és a Python. Az egységesítés azt is jelenti, hogy hozzáférhetnek a Qt Creator felülettervező eszközeihez, és az interfész tervezőket fejlesztői eszközökből biztosítják, például egy projekt összeállítását vagy egy alkalmazás tesztelését egy eszközön;

  • Úgy döntöttek, hogy a QMake helyett a CMake-et használják felépítési rendszerként. Az alkalmazások QMake használatával történő létrehozásának támogatása továbbra is megmarad, de maga a Qt a CMake használatával készül. A CMake-re azért esett a választás, mert ezt az eszközkészletet széles körben használják a C++ projektfejlesztők körében, és számos integrált fejlesztői környezet támogatja. A Qbs összeszerelő rendszer fejlesztése, amely állítólag a QMake helyettesítője, megszakított;
  • A fejlesztés során áttérés a C++17 szabványra (korábban a C++98 volt használatban). A Qt 6 számos modern C++ funkció támogatását tervezi megvalósítani, de anélkül, hogy elveszítené a korábbi szabványokon alapuló kóddal való visszafelé kompatibilitást.
  • Lehetőség a C++-ból a QML és a Qt Quick által kínált egyes funkciók használatára. Különösen a QObject és hasonló osztályok új tulajdonságrendszere kerül bemutatásra. A kötésekkel való munkavégzésre szolgáló motort a QML-ből a Qt magba integrálják, ami csökkenti a kötések terhelését és memóriafelhasználását, és elérhetővé teszi a Qt minden része számára, nem csak a Qt Quick számára;
  • Folytatjuk a további nyelvek, például a Python és a WebAssembly támogatásának bővítését célzó munkát;
  • Szerkezetátalakítás kisebb komponensekre bontással és a mögöttes termék méretének csökkentésével. A fejlesztői eszközök és egyedi összetevők az új katalógusbolton keresztül terjesztett kiegészítőkként lesznek elérhetők. A Qt-hez külső fejlesztőktől származó, ingyenes és fizetős kiegészítéseket is elfogadunk terjesztésre.

Forrás: opennet.ru

Hozzászólás