Lars Knoll, KHTML mootorite looja, Qt projekti juht ja Qt Company tehniline direktor, räägib plaanidest luua järgmine oluline Qt raamistik. Pärast Qt 5.14 funktsionaalsuse vormimise lõpuleviimist keskendub arendus Qt 6 väljaandmise ettevalmistamisele, mis on oodata 2020. aasta lõpus.
Qt 6 areneb silmas pidades ühilduvuse tagamist Qt 5-ga, kuid teatud probleemide tekkimine ei ole välistatud, kuna kavandatud arhitektuursed muutused ja puhastamine ei ole võimalikud ilma teatud ühilduvuse taseme kaotamiseta. Ülemineku sujuvamaks muutmiseks plaanitakse mõned Qt 6 funktsioonid lühendatud kujul lisada Qt 5.14 ja Qt 5.15 LTS väljaannetes. Samuti tehakse ettevalmistusi tööriistade loomiseks Qt 6-le üleviimise lihtsustamiseks.
Järgmise olulise versiooni peaeesmärkideks on funktsionaalsuse viimine vastavusse 2020. aasta nõudmistega, koodi põhja puhastamine ja projekti haldamise lihtsustamine. Oodata on järgmisi muudatusi:
- Oluline QML uuendus:
- Tugeva tüübi toetuse lisamine.
- Võime kompileerida QML C++ ja masinkoodiks.
- JavaScripti täieliku toe üleviimine valikute sekka (täisfunktsionaalne JavaScripti mootor nõuab suuremaid ressursse, mis piirab QML rakendamist sellistel seadmetel nagu mikrokontrollerid).
- QML versioonist loobumine.
- Andmestruktuuride ühtlustamine, mis dubleeruvad QObjectis ja QML-is (aitab vähendada mälu kasutust ja kiirendab käivitamist).
- Andmestruktuuride genereerimisest jooksvalt loobumine, keskendudes genereerimisele kompileerimise ajal.
- Sisemiste komponentide peitmine privaatsete meetodite ja omaduste kasutamise kaudu.
- Parendatud integreerimine arendusvahenditega refaktorimise ja veadiagnoosi jaoks kompileerimise ajal;
- Uue abstraktse kihi Rendering Hardware Interface (RHI) lisamine, et tagada sujuv kasutamine erinevate graafika API-dega, sealhulgas OpenGL, Vulkan, Metal ja Direct 3D (varem oli Qt ainult OpenGL-i peal). RHI alla viiakse kogu olemasolev renderdamisinfrastruktuur, sealhulgas QPainter, Qt Quick Scenegraph ja Qt3D. Samuti on plaanis lisada Qt Shader Tools moodul, et toetada erinevaid shaderite arenduskeeli ja võimaldada shaderite ristkompileerimist nii kogumise ajal kui ka programmi täitmise ajal;
- Ühtse API ettevalmistamine, et luua kasutajaliideseid, mis ühendavad 2D ja 3D graafika elemente. Uus API võimaldab kasutada QML-i 3D elementide määratlemiseks kasutajaliideseid ilma UIP formaati kaasamata. Uues liideseversioonis plaanitakse lahendada probleeme, nagu suured kulud QML-i ärakandmisel Qt 3D või 3D Studio sisu integreerimisega ning animatsioonide ja muundamiste sünkroniseerimise võimaluse puudumine kaadri tasandil 2D ja 3D vahel. 2D ja 3D koostööline renderdamine toimub uue renderdamismootori abil. Esialgne Qt Quick versioon 3D toetusega on oodata Qt 5.14 väljaandes;
- Tööriistade lisamine graafikaga seotud ressursside töötlemiseks kompileerimise ajal, näiteks PNG pilte kokkusurutud tekstuurideks konvertimise või shaderite ja võrkude optimeeritud binaarvormaatideks spetsiifilisele riistvarale muutmiseks;
- Ühtse teema- ja stiilimootori integreerimine, mis võimaldab saavutada Qt Widgets ja Qt Quick põhjal loodud rakenduste välimuse, mis on kohandatud erinevatele mobiilsetele ja lauaarvuti platvormidele;
- Kasutajaliidese loomise tööriistade ühtlustamine. Funktsionaalsuse dubleerimise vältimiseks ja kahe eraldi toote pakkumise lõpetamiseks nähakse ette Qt 3D Studio funktsionaalsuse integreerimine Qt Design Studio'sse, mille paljusid alam-süsteeme ja pistikprogrammide ühendamise raamistikku on rajatud ühtsele Qt Creatori koodibaasile.
Qt Design Studios plaanitakse samuti tagada kvaliteetne integratsioon sisuloometooted, nagu Photoshop, Sketch, Illustrator, Maya ja 3D Max. Peamisteks keeltest, mida toetatakse ühtses arendustööriistade komplektis, on nimetatud C++, QML ja Python. Ühtlustamine hõlmab ka võimalust, et Qt Creator pääseb ligipääsu liidese projekteerimise vahenditele ning annab liidese disaineritele võimalusi arendaja tööriistadest, nagu projekti kompileerimine või rakenduse testimine seadmel; - Kogumiseks leiti, et CMake'i kasutatakse QMake'i asemel. Tugi rakenduste kogumiseks QMake'i abil jääb alles, kuid Qt ise kogutakse kasutades CMake'i. CMake valiti, kuna see tööriist on saanud laialdase leviku C++ projektide arendajate seas ning seda toetatakse paljudes integreeritud arenduskeskkondades. QMake'i asendamiseks pretendeeriva Qbs kogumissüsteemi arendamine, ;
- Üleminek C++17 standardile (varasemalt kasutati C++98). Qt 6 plaanib toetada paljusid kaasaegseid C++ funktsioone, kuid tagab samas tagasiteema jõudmise vanemate standardite koodiga.
- C++ kasutamine QML ja Qt Quicki jaoks pakutavate funktsionaalsete komponentide jaoks. Samuti tutvustatakse uut omaduste süsteemi QObjecti ja sarnaste klasside jaoks. QML-ist Qt tuumasse integreeritakse side mootor, mis vähendab side koormust ja mälu tarbimist ning muudab need kergesti kättesaadavaks kõigis Qt komponentides, mitte ainult Qt Quickis;
- Töö jätkub, et laiendada toe pakkumist lisakeelte, näiteks Python ja WebAssembly jaoks;
- Restruktureerimine, jagades selle väiksemateks osadeks ja vähendades põhitoote suurust. Arendajate tööriistad ja spetsialiseeritud komponendid tarnitakse laiendustena, mis levitatakse uues katalooge-poodis. Qt lisandite levitamine väljatöötajatelt, nii tasuta kui ka tasuliste, on samuti lubatud.
Allikas: opennet.ru
