Lars Knoll, skapare av KHTML-motorn, projektledare för Qt-projektet och CTO för Qt Company, om planer för nÀsta större gren av Qt-ramverket. NÀr funktionaliteten i Qt 5.14-grenen Àr klar kommer utvecklingen att fokusera pÄ att förbereda lanseringen av Qt 6, som förvÀntas i slutet av 2020.
Qt 6 kommer att utvecklas med sikte pÄ att sÀkerstÀlla kompatibilitet med Qt 5, men individuella problem kan inte uteslutas, eftersom de planerade arkitekturförÀndringarna och rensningen inte kommer att vara möjliga att implementera utan att en viss nivÄ av kompatibilitet förloras. För att underlÀtta övergÄngen planeras vissa Qt 6-funktioner att inkluderas i reducerad form i Qt 5.14 och Qt 5.15 LTS-utgÄvorna. En verktygslÄda kommer ocksÄ att förberedas för att förenkla migreringen till Qt 6.
Viktiga mÄl för nÀsta stora gren inkluderar att anpassa funktionaliteten till 2020 Ärs krav, stÀda upp kodbasen och göra projektet lÀttare att underhÄlla. FörvÀntade Àndringar:
- Betydande modernisering av QML:
- Starkt skrivstöd.
- Möjlighet att kompilera QML till C++ representation och maskinkod.
- Att göra fullt JavaScript-stöd till ett alternativ (att anvÀnda en fullfjÀdrad JavaScript-motor krÀver mycket resurser, vilket förhindrar anvÀndningen av QML pÄ utrustning som mikrokontroller).
- Avslag pÄ versionshantering i QML.
- Enhet av datastrukturer duplicerade i QObject och QML (kommer att minska minnesförbrukningen och pÄskynda uppstarten).
- Att gÄ bort frÄn runtimegenerering av datastrukturer till förmÄn för kompileringsgenerering.
- Dölja interna komponenter genom anvÀndning av privata metoder och egenskaper.
- FörbÀttrad integration med utvecklingsverktyg för refactoring och feldiagnostik vid kompilering;
- TillÀgg av ett nytt abstrakt lager Rendering Hardware Interface (RHI) för att sÀkerstÀlla sömlös anvÀndning av olika grafik-API:er, inklusive OpenGL, Vulkan, Metal och Direct 3D (tidigare var Qt endast kopplat till OpenGL). All befintlig renderingsinfrastruktur kommer att överföras för att anvÀnda RHI, inklusive QPainter, Qt Quick Scenegraph och Qt3D. Det Àr ocksÄ planerat att lÀgga till Qt Shader Tools-modulen för att stödja olika shaderutvecklingssprÄk och sÀkerstÀlla korskompilering av shaders bÄde i byggfasen och under programkörning.
- Förbereder ett enhetligt API för att skapa anvÀndargrÀnssnitt som kombinerar 2D- och 3D-grafikelement. Det nya API:et kommer att tillÄta anvÀndning av QML för att definiera 3D-grÀnssnittselement utan att anvÀnda UIP-formatet. Det nya grÀnssnittet för att integrera 3D-innehÄll med Qt Quick Àr planerat att ÄtgÀrda problem som den stora kostnaden för att integrera QML med innehÄll frÄn Qt 3D eller 3D Studio, och oförmÄgan att synkronisera animationer och transformationer pÄ bildnivÄ mellan 2D och 3D. Kapslad rendering av 2D och 3D kommer att implementeras med en ny renderingsmotor. En preliminÀr implementering av det nya Qt Quick med 3D-stöd förvÀntas i utgÄvan av Qt 5.14;
- LÀgga till verktyg för att bearbeta grafikrelaterade resurser vid kompileringstid, till exempel konvertera PNG-bilder till komprimerade texturer eller konvertera shaders och meshes till hÄrdvaruoptimerade binÀra format;
- BÀdda in ett enhetligt tema och en stilmotor som gör att Qt Widgets och Qt Quick-baserade applikationer kan se inbyggda ut pÄ flera mobila och stationÀra plattformar;
- Enhetlig verktyg för att skapa anvÀndargrÀnssnitt. För att undvika dubbelarbete och sluta leverera tvÄ separata produkter förvÀntas Qt 3D Studio-funktionaliteten integreras i Qt Design Studio, vars mÄnga delsystem och ramverk för plugin-anslutningar Àr byggda pÄ samma kodbas som Qt Creator.
Qt Design Studio planerar ocksÄ att tillhandahÄlla högkvalitativ integration med innehÄllsskapande program 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. Unifiering innebÀr ocksÄ möjligheten att komma Ät grÀnssnittsdesignverktyg frÄn Qt Creator och ge grÀnssnittsdesigners funktionerna hos utvecklarverktyg, till exempel att kompilera ett projekt eller testa en applikation pÄ en enhet; - Man beslutade att anvÀnda CMake istÀllet för QMake som byggsystem. Stöd för att bygga applikationer med QMake kommer att behÄllas, men Qt i sig kommer att byggas med CMake. CMake valdes eftersom denna verktygslÄda har blivit flitigt anvÀnd bland C++-projektutvecklare och stöds i mÄnga integrerade utvecklingsmiljöer. Utveckling av Qbs byggsystem, som pÄstods vara en ersÀttning för QMake, ;
- ĂvergĂ„ng till C++17-standarden under utveckling (tidigare anvĂ€ndes C++98). Qt 6 planerar att implementera stöd för mĂ„nga moderna C++-funktioner, men utan att förlora bakĂ„tkompatibilitet med kod baserad pĂ„ tidigare standarder.
- Möjlighet att anvÀnda en del av funktionaliteten som erbjuds för QML och Qt Quick frÄn C++. Detta inkluderar ett nytt egenskapssystem för QObject och liknande klasser. En bindningsmotor kommer att integreras frÄn QML i Qt-kÀrnan, vilket kommer att minska belastningen och minnesförbrukningen för bindningar och göra dem tillgÀngliga för alla delar av Qt, inte bara Qt Quick;
- Fortsatt arbete med att utöka stödet för ytterligare sprÄk som Python och WebAssembly;
- Omstrukturering till mindre komponenter och en mindre basprodukt. Utvecklarverktyg och specialiserade komponenter kommer att levereras som tillÀgg distribuerade via en ny katalogbutik. Qt-tillÀgg frÄn tredje part, bÄde gratis och betalda, kommer ocksÄ att accepteras för distribution.
KĂ€lla: opennet.ru
