Lars Knoll, tvůrce enginu KHTML, vedoucí projektu Qt Project a technický ředitel společnosti Qt Company, o plánech na vytvoření další významné verze frameworku Qt. Po dokončení vývoje funkcionality verze Qt 5.14 se vývoj zaměří na přípravu vydání Qt 6, které je očekáváno na konci roku 2020.
Qt 6 se bude vyvíjet s ohledem na zajištění kompatibility s Qt 5, avšak nelze vyloučit vznik určitých problémů, protože plánované architektonické změny a úklid nelze provést bez ztráty určité úrovně kompatibility. Aby se usnadnil přechod, budou některé funkce Qt 6 plánovány ve zkrácené podobě zahrnuty do verze Qt 5.14 a Qt 5.15 LTS. Také bude připraveno nářadí pro zjednodušení migrace na Qt 6.
Mezi hlavní cíle pro další významnou verzi patří přizpůsobení funkcionality požadavkům roku 2020, provedení úklidu kódu a zjednodušení údržby projektu. Očekávané změny:
- Zásadní modernizace QML:
- Podpora přísné typizace.
- Možnost kompilace QML do zobrazení v C++ a strojovém kódu.
- Převod plné podpory JavaScriptu na volitelnou (používání plně funkčního JavaScriptového enginu vyžaduje vysoké zdroje, což brání používání QML na zařízeních jako jsou mikrořadiče).
- Zrušení verzování v QML.
- Unifikace datových struktur, které se duplikují v QObject a QML (což povede ke snížení spotřeby paměti a zrychlení spuštění).
- Odešel od generování datových struktur za běhu ve prospěch generování během kompilace.
- Skrytí vnitřních komponentů prostřednictvím používání soukromých metod a vlastností.
- Vylepšená integrace s vývojovými nástroji pro refaktoring a diagnostiku chyb během kompilace;
- Přidání nového abstraktního vrstvy Rendering Hardware Interface (RHI) pro zajištění bezproblémového použití různých grafických API, včetně OpenGL, Vulkan, Metal a Direct 3D (dříve byl Qt vázán pouze na OpenGL). Všechny existující renderingové infrastruktury, včetně QPainter, Qt Quick Scenegraph a Qt3D, budou převedeny na použití RHI. Také se plánuje přidání modulu Qt Shader Tools pro podporu různých jazyků pro vývoj shaderů a zajištění kros-kompilace shaderů jak v době sestavení, tak při běhu programu;
- Příprava unifikovaného API pro vytváření uživatelských rozhraní, která kombinují prvky 2D a 3D grafiky. Nové API umožní používat QML k definování 3D prvků rozhraní bez zapojení formátu UIP. V novém rozhraní pro integraci 3D obsahu s Qt Quick se plánuje vyřešit některé problémy, jako jsou vysoké náklady na integraci QML s obsahem z Qt 3D nebo 3D Studio a nemožnost synchronizace animace a transformací na úrovni jednotlivých snímků mezi 2D a 3D. Společný a vnořený rendering 2D a 3D bude zrealizován pomocí nového renderingového enginu. Předběžná implementace nového Qt Quick s podporou 3D se očekává v vydání Qt 5.14;
- Přidání nástrojů pro zpracování grafických zdrojů během fáze kompilace, například pro převod PNG obrázků na kompresní textury nebo pro konverzi shaderů a meshů do optimalizovaných binárních formátů pro specifické hardware;
- Včlenění unifikovaného enginu pro motivy a styly, který umožňuje dosáhnout vzhledu aplikací založených na Qt Widgets a Qt Quick, přirozeného pro různé mobilní a desktopové platformy;
- Unifikace nástrojů pro vytváření uživatelského rozhraní. Aby se vyloučila duplicita funkčnosti a přestalo se dodávat dva samostatné produkty, očekává se integrace funkcionality Qt 3D Studio do Qt Design Studio, jehož mnohé subsystémy a rámec připojení pluginů jsou postaveny na stejné kódové základně jako Qt Creator.
V Qt Design Studio se také plánuje kvalitní integrace s balíčky pro tvorbu obsahu, jako jsou Photoshop, Sketch, Illustrator, Maya a 3D Max. Mezi hlavními jazyky, které se podporují v unifikovaném nástroji pro vývoj, se uvádějí C++, QML a Python. Unifikace také zahrnuje možnost přístupu z Qt Creator k nástrojům pro návrh rozhraní a poskytování návrhářům rozhraní funkcionalit z nástrojů pro vývojáře, například kompilaci projektu nebo testování aplikace na zařízení; - Jako systém pro sestavení bylo rozhodnuto použít CMake místo QMake. Podpora sestavení aplikací pomocí QMake zůstane, ale samotné Qt bude sestaveno s využitím CMake. CMake byl vybrán, protože tento nástroj získal široké přijetí mezi vývojáři projektů v C++ a je podporován v mnoha integrovaných vývojových prostředích. Vývoj systému sestavení Qbs, který měl nahradit QMake, ;
- Přechod na standard C++17 (předtím byl použit C++98). V Qt 6 je plánována podpora mnoha moderních funkcí C++, ale bez ztráty zpětné kompatibility s kódem založeným na dřívějších standardech.
- Možnost využití některých funkcí dostupných pro QML a Qt Quick v C++. Bude také představena nová systém vlastností pro QObject a podobné třídy. Z QML bude do jádra Qt integrován engine pro práci s vazbami, což sníží zátěž a spotřebu paměti pro vazby a učiní je dostupnými pro všechny části Qt, nikoli pouze pro Qt Quick;
- Pokračování v práci na rozšíření podpory pro další jazyky, jako je Python a WebAssembly;
- Restrukturalizace s rozdělením na menší komponenty a zkrácením velikosti základního produktu. Nástroje pro vývojáře a specializované komponenty budou dodávány jako dodatky distribuované prostřednictvím nového katalogu-obchodu. K distribuci budou akceptovány také dodatky k Qt od externích vývojářů, jak bezplatné, tak placené.
Zdroj: opennet.ru
