Opublikowano plan rozwoju funkcjonalności Qt 6

Lars Knoll, twórca silnika KHTML, kierownik projektu Qt Project i dyrektor techniczny firmy Qt Company, opowiedział omawia plany dotyczące stworzenia kolejnej znaczącej wersji frameworka Qt. Po zakończeniu prac nad funkcjonalnością wersji Qt 5.14, rozwój skoncentruje się na przygotowaniach do wydania Qt 6, które spodziewane jest pod koniec 2020 roku.

Qt 6 będzie rozwijany z myślą o zapewnieniu zgodności z Qt 5, jednak nie można wykluczyć pojawienia się pewnych problemów, ponieważ planowane zmiany architektoniczne i czyszczenie kodu będą wymagały rezygnacji z niektórych poziomów zgodności. Aby ułatwić przejście, niektóre możliwości Qt 6 będą w skróconej wersji włączone do wydań Qt 5.14 i Qt 5.15 LTS. Przygotowane zostaną również narzędzia ułatwiające migrację do Qt 6.

Wśród głównych celów dla następnej znaczącej wersji znajduje się dostosowanie funkcjonalności do wymagań 2020 roku, czyszczenie bazy kodu oraz uproszczenie utrzymania projektu. Oczekiwane zmiany:

  • Znacząca modernizacja QML:
    • Wsparcie dla ścisłego typowania.
    • Możliwość kompilacji QML do reprezentacji w C++ i kodzie maszynowym.
    • Przeniesienie pełnego wsparcia JavaScript do kategorii opcji (użycie w pełni funkcjonalnego silnika JavaScript wymaga dużych zasobów, co utrudnia zastosowanie QML na sprzęcie takim jak mikrokontrolery).
    • Rezygnacja z wersjonowania w QML.
    • Ujednolicenie struktur danych powielanych w QObject i QML (pozwoli na zmniejszenie zużycia pamięci i przyspieszenie uruchamiania).
    • Rezygnacja z generowania struktur danych w trakcie wykonywania na rzecz generowania w czasie kompilacji.
    • Ukrycie komponentów wewnętrznych poprzez wykorzystanie prywatnych metod i właściwości.
    • Ulepszona integracja z narzędziami deweloperskimi do refaktoryzacji i diagnostyki błędów podczas kompilacji;
  • Dodanie nowej warstwy abstrakcyjnej Rendering Hardware Interface (RHI) w celu zapewnienia bezproblemowego korzystania z różnych interfejsów API graficznych, w tym OpenGL, Vulkan, Metal i Direct 3D (wcześniej Qt był związany tylko z OpenGL). Cała istniejąca infrastruktura renderowania, w tym QPainter, Qt Quick Scenegraph i Qt3D, zostanie przeniesiona na użycie RHI. Planuje się również dodanie modułu Qt Shader Tools w celu wsparcia różnych języków programowania shaderów oraz zapewnienia wielokrotnej kompilacji shaderów zarówno na etapie budowy, jak i podczas wykonywania programu;
  • Przygotowanie zunifikowanego API do tworzenia interfejsów użytkownika, łączących elementy grafiki 2D i 3D. Nowe API umożliwi wykorzystanie QML do definiowania 3D-elementów interfejsów bez angażowania formatu UIP. W nowym interfejsie planuje się skoncentrować na rozwiązywaniu problemów takich jak wysokie koszty integracji QML z treściami z Qt 3D lub 3D Studio oraz braku synchronizacji animacji i transformacji na poziomie pojedynczych klatek między 2D a 3D. Wspólne, zagnieżdżone renderowanie 2D i 3D zostanie zrealizowane przy użyciu nowego silnika renderującego. Wstępna implementacja nowego Qt Quick z obsługą 3D jest spodziewana w wydaniu Qt 5.14;
  • Dodanie narzędzi do przetwarzania zasobów związanych z grafiką na etapie kompilacji, na przykład do przekształcania obrazów PNG w skompresowane tekstury lub do konwersji shaderów i siatek w zoptymalizowane formaty binarne dostosowane do konkretnego sprzętu;
  • Wbudowanie zunifikowanego silnika dla motywów i stylów, umożliwiającego osiągnięcie wyglądu aplikacji opartych na Qt Widgets i Qt Quick, przypominającego natywne interfejsy różnych platform mobilnych i desktopowych;
  • Unifikacja narzędzi do tworzenia interfejsów użytkownika. Aby wyeliminować duplikację funkcjonalności i zaprzestać dostarczania dwóch odrębnych produktów, planuje się integrację funkcjonalności Qt 3D Studio w Qt Design Studio, w którym wiele podsystemów i framework połączeń pluginów opartych jest na jednolitej bazie kodowej z Qt Creator.
    W Qt Design Studio planuje się także zapewnienie wysokiej jakości integracji z pakietami do tworzenia treści, takimi jak Photoshop, Sketch, Illustrator, Maya i 3D Max. Jako główne języki wspierane w zunifikowanym narzędziu deweloperskim wymienia się C++, QML i Pythona. Unifikacja ma również na celu umożliwienie dostępu z Qt Creator do narzędzi projektowania interfejsu oraz dostarczenie projektantom możliwości narzędzi dla deweloperów, takich jak kompilacja projektu czy testowanie aplikacji na urządzeniu;
  • Jako system budowania postanowiono użyć CMake zamiast QMake. Wsparcie dla budowy aplikacji za pomocą QMake zostanie zachowane, ale sam Qt będzie budowany przy użyciu CMake. CMake został wybrany, ponieważ to narzędzie zyskało dużą popularność wśród programistów projektów C++ i jest wspierane w wielu zintegrowanych środowiskach programistycznych. Prace nad systemem budowania Qbs, który miał na celu zastąpienie QMake, zakończone;
  • Przejście na standard C++17 w rozwoju (wcześniej używano C++98). W Qt 6 planuje się wdrożenie wsparcia dla wielu nowoczesnych funkcji C++, ale bez utraty wstecznej kompatybilności z kodem opartym na wcześniejszych standardach.
  • Możliwość korzystania z niektórych funkcji C++ oferowanych dla QML i Qt Quick. W tym również zostanie zaprezentowany nowy system własności dla QObject i podobnych klas. Z QML do jądra Qt zostanie zintegrowany silnik obsługujący powiązania, co pozwoli na zmniejszenie obciążenia i zużycia pamięci dla powiązań oraz uczyni je dostępnymi dla wszystkich komponentów Qt, a nie tylko dla Qt Quick;
  • Kontynuacja prac nad rozszerzeniem wsparcia dla dodatkowych języków, takich jak Python i WebAssembly;
  • Restrukturyzacja z podziałem na mniejsze komponenty i zmniejszeniem rozmiaru podstawowego produktu. Narzędzia dla programistów i specjalistyczne komponenty będą dostarczane jako dodatki, dostępne przez nowy katalog-sklep. Do rozpowszechniania będą przyjmowane także dodatki do Qt od zewnętrznych deweloperów, zarówno darmowe, jak i płatne.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster