Lars Knoll, KHTML mootori looja, Qt Project'i juht ja Qt Company tehniline direktor, räägib plaanidest luua järgmine oluline Qt raamistik. Pärast Qt 5.14 funktsionaalsuse lõplikku vormimist keskendub arendus Qt 6 väljatöötamisele, mille valmimist oodatakse 2020. aasta lõpus.
Qt 6 areneb silmas pidades ühilduvust Qt 5-ga, kuid ei saa välistada, et teatud probleemid võivad tekkida, kuna planeeritud arhitektuurilised muudatused ja puhastamine ei saa toimuda ilma teatud taseme ühilduvuse kaotamata. Ülemineku sujuvamaks tegemiseks plaanitakse mõningaid Qt 6 võimalusi vähendatud kujul kaasata Qt 5.14 ja Qt 5.15 LTS väljaannetesse. Samuti valmistatakse ette tööriistade komplekt migratsiooni lihtsustamiseks Qt 6-le.
Peamised eesmärgid järgmises olulises versioonis hõlmavad funktsionaalsuse vastavusse viimist 2020. aasta nõuetega, koodibaasi puhastamist ja projekti hoolduse lihtsustamist. Oodatavad muudatused:
- Oluline QML moderniseerimine:
- Tugeva tüpiseerimise toetus.
- QML-i kompileerimise võimalus C++ ja masinkoodi esitlusele.
- JavaScripti täiemahulise toe muutmine valikuks (täisfunktsionaalse JavaScripti mootor kasutamine nõuab suurt ressursikasutust, mis takistab QML-i rakendamist sellistes seadmetes nagu mikroprotsessorid).
- QML-i versioonihaldusest loobumine.
- Andmestruktuuride ühtlustamine, mis on duplikaadid QObject'is ja QML-is (vähendab mälu tarbimist ja kiirendab käivitamist).
- Põhistruktuuride genereerimise lõpetamine jooksu ajal kompilatsiooni ajal genereerimise kasuks.
- Siselementide peitmine privaatsete meetodite ja omaduste kasutamise kaudu.
- Parandatud integreerimine arendusvahendite jaoks koodi refactoringu ja vigade diagnoosimise lihtsustamiseks kompileerimise käigus;
- Uue abstraktse Renderimise Riistvara Liidese (RHI) kihtide lisamine, et tagada sujuv koostöö erinevate graafikute API-de, sealhulgas OpenGL, Vulkan, Metal ja Direct 3D vahel (varem oli Qt piiratud ainult OpenGL-iga). RHI-le üle minema kõiki olemasoleva renderdamise infrastruktuuri, sealhulgas QPainter, Qt Quick Scenegraph ja Qt3D. Samuti plaanitakse lisada Qt Shader Tools moodul, et toetada erinevaid shaderite arendamise keeli ja tagada shaderite ristkompileerimine nii koostamis- kui ka jooksva programmi faasis;
- Ühtse API loomine, et luua kasutajaliideseid, mis ühendavad 2D ja 3D graafika elemente. Uus API võimaldab kasutada QML-i 3D-elementide määratlemiseks kasutajaliideseid ilma UIP-formaadi kaasamiseta. Uues liideses, mis integreerib 3D-sisu Qt Quickiga, plaanitakse lahendada sellised probleemid nagu suured kulud QML-i integreerimisel Qt 3D või 3D Studioga ning animatsiooni ja teisenduste sünkroonimise puudumine kaadripõhisel tasemel 2D ja 3D vahel. Koos sisseehitatud 2D ja 3D joonistamine toimub uue renderdamismootori abil. Uue Qt Quicki esialgne rakendus, mis toetab 3D-d, oodatakse Qt 5.14 väljaandes.
- Tööriistade lisamine, et töödelda graafikaressursse kompileerimise etapis, näiteks PNG-piltide muutmine kompresseeritud tekstuurideks või sihtotstarbeliste seadmete jaoks optimeeritud binaarseteks formaatideks shaderite ja mesh-ide konverteerimiseks;
- Ühtse teema ja stiilide mootori integreerimine, mis võimaldab saavutada Qt Widgetsi ja Qt Quick põhiste rakenduste välimust, mis on erinevate mobiilsete ja lauaarvutite platvormide jaoks natiivne;
- Kasutajaliidese loomise tööriistade ühtlustamine. Funktsionaalsuse dubleerimise vältimiseks ja kahe eraldi toote pakkumise lõpetamiseks oodatakse Qt 3D Studioni funktsionaalsuse integreerimist Qt Design Studio, mille paljud alamsüsteemid ja pluginate ühendamise raamistik on üles ehitatud ühele Qt Creatori koodibaasile.
Qt Design Studios plaanitakse tagada kvaliteetne integreerimine sisu looja pakettidega, nagu Photoshop, Sketch, Illustrator, Maya ja 3D Max. Ühtse arendustööriistade komplekti peamisteks toetatud keeltekids on C++, QML ja Python. Ühtlustamine hõlmab ka võimalust pöörduda Qt Creatoris liidese kujundamisvahendite poole ja pakkuda liidese disaineritele arendajate tööriistadest tulenevaid võimalusi, näiteks projekti kompileerimist või rakenduse testimist seadmes; - Kogumissüsteemina on otsustatud kasutada CMake'i QMake'i asemel. QMake'i tugi rakenduste ehitamiseks jääb alles, kuid Qt ise ehitatakse CMake'i abil. CMake on valitud, kuna see on laialdaselt levinud C++ projektide arendajate seas ja seda toetavad paljud integreeritud arenduskeskkonnad. Arendatakse Qbs kogumissüsteemi, mis pretendeeris QMake'i asendamiseks. ;
- Arendamisel üleminek standardile C++17 (varasemalt kasutati C++98). Qt 6-s plaanitakse rakendada paljusid kaasaegseid C++ funktsioone, kuid ilma tagasiühilduvuse kaotamiseta varasemate standardite alusel kirjutatud koodiga.
- C++-s mõningate QML ja Qt Quickile pakutavate funktsioonide kasutamise võimalus. Samuti tutvustatakse uut omaduste süsteemi QObject'i ja sarnaste klasside jaoks. QML-st integreeritakse Qt tuumasse bindimise töötlusmootor, mis vähendab bindimise koormust ja mälu tarbimist ning teeb need kergesti kättesaadavaks kõigile Qt osadele, mitte ainult Qt Quickile;
- Töötame edasi, et laiendada toetust täiendavatele keeltele, nagu Python ja WebAssembly;
- Ümberkorraldamine, jagades toote väiksemateks komponentideks ja vähendades põhitoote suurust. Arendustööriistad ja spetsialiseeritud komponendid tarnitakse täiendustena, mida levitatakse uue kataloogipoe kaudu. Qt täiendused, mida pakuvad kolmandad osalised, on lubatud levitada, olgu need tasuta või tasulised.
Allikas: opennet.ru
