Compania Qt prima versiune de test a noii ramuri Qt 6, care va propune modificări arhitecturale semnificative, iar pentru compilare va fi necesar un compilator ce suportă standardul C++17. Această versiune include doar structura inițială a viitorului release Qt 6, care pe 1 decembrie 2020. Funcționalitatea din ramura Qt 6 se va extinde până la anunțarea înghețării codului sursă pe 31 august.
Primul build de test include modulele:
Qt Core,
Qt GUI,
Qt Widgets,
Qt Network,
Qt QML,
Qt Quick,
Qt Quick Controls,
Qt SVG,
Qt Network Authorization,
Qt SQL și
Qt Test.
Principalele Qt 6:
- API grafic abstractizat, independent de API-ul 3D al sistemului de operare. Componenta cheie a noului stiv de grafică Qt este motorul de redare a scenelor, care folosește un strat RHI (Rendering Hardware Interface) pentru a asigura funcționarea aplicațiilor Qt Quick nu doar cu OpenGL, ci și deasupra API-urilor Vulkan, Metal și Direct 3D.
- Modulul Qt Quick 3D cu API pentru crearea interfețelor utilizatorului pe baza Qt Quick, care combină elemente de grafică 2D și 3D. Qt Quick 3D permite utilizarea QML pentru a defini elemente 3D ale interfețelor fără a necesita formatul UIP. În Qt Quick 3D, atât 2D, cât și 3D pot folosi un singur runtime (Qt Quick), un singur layout de scenă și un singur framework de animație, iar pentru dezvoltarea vizuală a interfeței se poate aplica Qt Design Studio. Modulul abordează probleme precum costurile mari de integrare a QML cu conținut din Qt 3D sau 3D Studio și oferă posibilitatea sincronizării animațiilor și transformărilor la nivel de cadre între 2D și 3D.
- Restructurarea bazei de cod prin divizarea în componente mai mici și reducerea dimensiunii produsului de bază. Instrumentele pentru dezvoltatori și componentele specializate vor fi furnizate sub formă de suplimente distribuite prin catalogul magazinului. .
- Modernizare semnificativă a QML:
- Sprijin pentru tipizare strictă.
- Posibilitatea compilării QML în reprezentare C++ și cod mașină.
- Tranzitul către suportul complet pentru JavaScript ca opțiune (utilizarea unui motor JavaScript complet funcțional necesită resurse mari, ceea ce împiedică utilizarea QML pe hardware precum microcontrolerele).
- Renunțarea la versionarea în QML.
- Unificarea structurilor de date duplicate în QObject și QML (va reduce consumul de memorie și va accelera pornirea).
- Trecerea de la generarea structurilor de date în timpul execuției către generarea în timpul compilării.
- Ascunderea componentelor interne prin utilizarea metodelor și proprietăților private.
- Integrare îmbunătățită cu instrumentele de dezvoltare pentru refactorizare și diagnosticarea erorilor în timpul compilării.
- Adăugarea instrumentelor pentru procesarea resurselor legate de grafică în faza de compilare, de exemplu, pentru conversia imaginilor PNG în texturi comprimate sau pentru conversia shaderelor și mesh-urilor în formate binare optimizate pentru hardware specific.
- Integrarea unui motor unificat pentru teme și stiluri, permițând obținerea unui aspect al aplicațiilor bazate pe Qt Widgets și Qt Quick, nativ pentru diferite platforme mobile și desktop.
- Ca sistem de construire, s-a decis utilizarea CMake în loc de QMake. Suportul pentru construirea aplicațiilor cu ajutorul QMake va fi menținut, dar Qt va fi construit folosind CMake. CMake a fost ales datorită popularității sale în rândul dezvoltatorilor de proiecte C++ și este susținut în multe medii de dezvoltare integrate. Dezvoltarea sistemului de construire Qbs, care aspira să înlocuiască QMake, de comunitate.
- Tranziția la standardul C++17 (anterior se utiliza C++98). În Qt 6 se preconizează implementarea suportului pentru multe dintre funcționalitățile moderne C++, dar fără a pierde compatibilitatea inversă cu codul bazat pe standardele anterioare.
- Posibilitatea utilizării în codul C++ a unor funcționalități oferite pentru QML și Qt Quick. De asemenea, va fi prezentat un nou sistem de proprietăți pentru QObject și clase similare. Din QML în nucleul Qt va fi integrat un motor pentru gestionarea legăturilor (binding), ceea ce va reduce încărcarea și consumul de memorie pentru legături și le va face disponibile pentru toate părțile Qt, nu doar pentru Qt Quick.
- Extinderea suportului pentru limbaje suplimentare, cum ar fi Python și WebAssembly.
Sursa: opennet.ro
