Lars Knoll, skaparen av KHTML-motorn, projektledaren för Qt Project och teknisk chef pÄ Qt Company, diskuterar planerna för att skapa nÀsta betydande version av Qt-ramverket. Efter slutförandet av funktionaliteten i Qt 5.14 kommer utvecklingen att fokusera pÄ att förbereda lanseringen av Qt 6, som vÀntas i slutet av 2020.
Qt 6 kommer att utvecklas med sikte pÄ att sÀkerstÀlla kompatibilitet med Qt 5, men problem kan uppstÄ, eftersom de planerade arkitektoniska förÀndringarna och rensningen inte kan genomföras utan att förlora en viss nivÄ av kompatibilitet. För att underlÀtta övergÄngen planeras vissa funktioner av Qt 6 att inkluderas i begrÀnsad form i versionerna Qt 5.14 och Qt 5.15 LTS. Dessutom kommer verktyg att förberedas för att förenkla migreringen till Qt 6.
Bland de viktigaste mÄlen för nÀsta betydande version nÀmns att anpassa funktionaliteten till kraven 2020, rensa kodbasen och förenkla projektunderhÄllet. FörvÀntade förÀndringar:
- Betydande uppgradering av QML:
- Stöd för strikt typning.
- Möjlighet att kompilera QML till C++-representation och maskinkod.
- ĂvergĂ„ng av fullt stöd för JavaScript till alternativ (anvĂ€ndning av en fullt funktionell JavaScript-motor krĂ€ver mycket resurser, vilket hindrar anvĂ€ndningen av QML pĂ„ hĂ„rdvara som mikrokontrollerar).
- Avskaffande av versionering i QML.
- Uppslagning av datatyper som dupliceras i QObject och QML (kommer att minska minnesanvÀndningen och snabba upp uppstarten).
- ĂvergĂ„ng frĂ„n generering av datatyper vid körning till generering vid kompilering.
- Dölj interna komponenter genom att anvÀnda privata metoder och egenskaper.
- FörbÀttrad integration med utvecklingsverktyg för refaktorering och felsökning under kompileringen;
- TillÀgg av ett nytt abstrakt lager för Rendering Hardware Interface (RHI) för att möjliggöra sömlös anvÀndning av olika grafiska API:er, inklusive OpenGL, Vulkan, Metal och Direct 3D (tidigare var Qt endast kopplat till OpenGL). All befintlig renderinginfrastruktur, inklusive QPainter, Qt Quick Scenegraph och Qt3D, kommer att översÀttas till att anvÀnda RHI. Det planeras ocksÄ att lÀgga till en modul för Qt Shader Tools för att stödja olika shaderutvecklingssprÄk och möjliggöra korskompilering av shaders bÄde vid byggtillfÀllet och under programets körning;
- Förberedelse av ett enhetligt API för att skapa anvÀndargrÀnssnitt som kombinerar element av 2D- och 3D-grafik. Det nya API:et kommer att tillÄta anvÀndning av QML för att definiera 3D-element i grÀnssnitt utan att anvÀnda UIP-formatet. I det nya grÀnssnittet för integration av 3D-innehÄll med Qt Quick planeras det att lösa problem som stora overheadkostnader vid integration av QML med innehÄll frÄn Qt 3D eller 3D Studio, och oförmÄga att synkronisera animationer och transformationer pÄ nivÄ av enskilda ramar mellan 2D och 3D. Samtidig inbÀddad rendering av 2D och 3D kommer att genomföras med hjÀlp av den nya renderingsmotorn. En första implementering av nya Qt Quick med stöd för 3D förvÀntas i utgÄvan av Qt 5.14;
- TillÀgg av verktyg för behandling av grafikrelaterade resurser vid kompilering, till exempel för att konvertera PNG-bilder till komprimerade texturer eller för att konvertera shaders och mesh till optimerade binÀra format för specifik hÄrdvara;
- InbÀddning av en enhetlig motor för teman och stilar, som möjliggör att appar baserade pÄ Qt Widgets och Qt Quick fÄr ett utseende som Àr inhemskt för olika mobila och stationÀra plattformar;
- Enhetliggörande av verktyg för skapande av anvÀndargrÀnssnitt. För att eliminera duplicering av funktionalitet och avsluta distributionen av tvÄ separata produkter, förvÀntas integration av funktionaliteten frÄn Qt 3D Studio i Qt Design Studio, vars mÄnga delsystem och pluginanslutningsram Àr byggda pÄ en gemensam kodbas med Qt Creator.
I Qt Design Studio planerar man att sÀkerstÀlla en högkvalitativ integration med innehÄllsskapande paket som Photoshop, Sketch, Illustrator, Maya och 3D Max. De huvudsakliga sprÄken som stöds i den enhetliga utvecklingsverktygslÄdan Àr C++, QML och Python. Enheten innebÀr ocksÄ möjligheten att frÄn Qt Creator nÄ designverktygen och ge grÀnssnittsdesigners funktioner frÄn utvecklarverktygen, sÄsom projektkompilering eller app-testning pÄ enheten; - Som byggsystem har man beslutat att anvÀnda CMake istÀllet för QMake. Stöd för att bygga applikationer med hjÀlp av QMake kommer att kvarstÄ, men sjÀlva Qt kommer att byggas med CMake. CMake valdes eftersom det har blivit allmÀnt anvÀnt bland utvecklare av C++-projekt och stöds i mÄnga integrerade utvecklingsmiljöer. Utvecklingen av byggsystemet Qbs, som syftade till att ersÀtta QMake, ;
- ĂvergĂ„ngen vid utvecklingen till standard C++17 (tidigare anvĂ€ndes C++98). I Qt 6 planerar man att implementera stöd för mĂ„nga moderna C++-funktioner, men utan att förlora bakĂ„tkompatibiliteten med kod baserad pĂ„ tidigare standarder.
- Möjlighet att anvÀnda viss funktionalitet frÄn C++ som erbjuds för QML och Qt Quick. En ny egenskapssystem för QObject och liknande klasser kommer ocksÄ att presenteras. En motor för bindings kommer att integreras frÄn QML till Qt-kÀrnan, vilket kommer att minska belastningen och minnesanvÀndningen för bindings och göra dem tillgÀngliga för alla delar av Qt, och inte bara för Qt Quick;
- Fortsatt arbete med att utöka stödet för ytterligare sprÄk som Python och WebAssembly;
- Omstrukturering med uppdelning i mindre komponenter och minskning av storleken pÄ den grundlÀggande produkten. Utvecklarverktyg och specialiserade komponenter kommer att levereras som tillÀgg, distribuerade genom en ny katalogbutik. SÄvÀl gratis som betalda tillÀgg frÄn tredjepartsutvecklare kommer att accepteras för distribution.
KĂ€lla: opennet.ru
