Objavljena mapa puta za funkcionalnost Qt 6

Lars Knoll, tvorac KHTML motora, projektni menadžer Qt projekta i tehnički direktor Qt Company, rekao sam o planovima za stvaranje sljedeće značajne grane Qt okvira. Nakon što funkcionalnost ogranka Qt 5.14 bude dovršena, razvoj će se usredotočiti na pripremu za izdanje Qt 6, koje se očekuje krajem 2020.

Qt 6 će se razvijati s ciljem osiguravanja kompatibilnosti s Qt 5, no mogu se pojaviti pojedinačni problemi budući da planirane arhitektonske promjene i čišćenja neće biti moguće implementirati bez gubitka određene razine kompatibilnosti. Kako bi se olakšao prijelaz, planira se uključivanje nekih značajki Qt 6 u smanjenom obliku kao dio izdanja Qt 5.14 i Qt 5.15 LTS. Toolkit će također biti pripremljen za pojednostavljenje migracije na Qt 6.

Među glavnim ciljevima sljedeće značajne grane su usklađivanje funkcionalnosti sa zahtjevima 2020. godine, čišćenje baze kodova i pojednostavljenje održavanja projekta. Očekivane promjene:

  • Značajna modernizacija QML-a:
    • Jaka podrška za tipkanje.
    • Sposobnost kompajliranja QML-a u C++ reprezentaciju i strojni kod.
    • Uključivanje potpune podrške za JavaScript kao opciju (upotreba potpuno opremljenog JavaScript motora zahtijeva mnogo resursa, što sprječava upotrebu QML-a na opremi kao što su mikrokontroleri).
    • Odbijanje verzije u QML-u.
    • Objedinjavanje struktura podataka dupliciranih u QObject i QML (smanjit će potrošnju memorije i ubrzati pokretanje).
    • Udaljavanje od generiranja podatkovnih struktura u vrijeme izvođenja u korist generiranja u vrijeme prevođenja.
    • Skrivanje unutarnjih komponenti korištenjem privatnih metoda i svojstava.
    • Poboljšana integracija s razvojnim alatima za refaktoriranje i dijagnozu pogrešaka tijekom prevođenja;
  • Dodavanje novog apstraktnog sloja, Rendering Hardware Interface (RHI), za besprijekornu upotrebu različitih grafičkih API-ja, uključujući OpenGL, Vulkan, Metal i Direct 3D (ranije je Qt bio samo za OpenGL). Sva postojeća infrastruktura za renderiranje bit će pretvorena u korištenje RHI-a, uključujući QPainter, Qt Quick Scenegraph i Qt3D. Također se planira dodati modul Qt Shader Tools za podršku različitim razvojnim jezicima za shadere i omogućiti unakrsnu kompilaciju shadera u fazi izrade i tijekom izvođenja;
  • Priprema jedinstvenog API-ja za izradu korisničkih sučelja koja kombiniraju 2D i 3D grafičke elemente. Novi API će vam omogućiti korištenje QML-a za definiranje elemenata 3D sučelja bez korištenja UIP formata. Novo sučelje za integraciju 3D sadržaja s Qt Quickom planira riješiti probleme kao što su visoki troškovi integracije QML-a sa sadržajem iz Qt 3D ili 3D Studio, te nemogućnost sinkronizacije animacija i transformacija na razini okvira između 2D i 3D. Kombinirano ugniježđeno 2D i 3D renderiranje bit će implementirano pomoću novog mehanizma za renderiranje. Pregled novog Qt Quicka s 3D podrškom očekuje se u izdanju Qt 5.14;
  • Dodavanje alata za obradu sredstava povezanih s grafikom tijekom kompajliranja, kao što je pretvaranje PNG slika u komprimirane teksture ili pretvaranje shadera i mreža u optimizirane binarne formate za određeni hardver;
  • Ugradnja unificiranog mehanizma za teme i stilove, koji vam omogućuje postizanje izgleda aplikacija temeljenih na Qt Widgetima i Qt Quicku, izvornim za različite mobilne i desktop platforme;
  • Unifikacija alata za izradu korisničkog sučelja. Kako bi se izbjeglo dupliciranje funkcionalnosti i prekid isporuke dva odvojena proizvoda, očekuje se da će funkcionalnost Qt 3D Studija biti integrirana u Qt Design Studio, čiji su mnogi podsustavi i okvir za povezivanje dodataka izgrađeni na istoj bazi koda kao i Qt Creator.
    Qt Design Studio također planira pružiti visokokvalitetnu integraciju s paketima za stvaranje sadržaja kao što su Photoshop, Sketch, Illustrator, Maya i 3D Max. Glavni jezici podržani u objedinjenom razvojnom alatu su C++, QML i Python. Unifikacija također znači mogućnost pristupa alatima za dizajn sučelja iz Qt Creatora i pružanje dizajnerima sučelja mogućnosti iz alata za razvojne programere, na primjer, sastavljanje projekta ili testiranje aplikacije na uređaju;

  • Odlučeno je koristiti CMake umjesto QMake kao sustav za izgradnju. Podrška za izradu aplikacija pomoću QMakea ostat će, ali će sam Qt biti izgrađen pomoću CMakea. CMake je odabran jer se ovaj skup alata naširoko koristi među programerima C++ projekata i podržan je u mnogim integriranim razvojnim okruženjima. Razvoj Qbs sustava za sklapanje, koji je tvrdio da je zamjena za QMake, prekinuto;
  • Prijelaz na standard C++17 tijekom razvoja (ranije je korišten C++98). Qt 6 planira implementirati podršku za mnoge moderne C++ značajke, ali bez gubitka kompatibilnosti s prethodnim verzijama koda temeljenog na prošlim standardima.
  • Mogućnost korištenja iz C++ nekih funkcija ponuđenih za QML i Qt Quick. Posebno će biti predstavljen novi sustav svojstava za QObject i slične klase. Motor za rad s vezovima bit će integriran iz QML-a u Qt jezgru, što će smanjiti opterećenje i potrošnju memorije za vezove i učiniti ih dostupnim svim dijelovima Qt-a, a ne samo Qt Quicku;
  • Nastavak rada na proširenju podrške za dodatne jezike kao što su Python i WebAssembly;
  • Restrukturiranje rastavljanjem na manje komponente i smanjenjem veličine temeljnog proizvoda. Alati za razvojne programere i prilagođene komponente bit će dostavljene kao dodaci koji se distribuiraju kroz novu katalošku trgovinu. Dodaci Qt-u od programera trećih strana, besplatni i plaćeni, također će biti prihvaćeni za distribuciju.

Izvor: opennet.ru

Dodajte komentar