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
