Qt 6 functionaliteit roadmap gepubliceerd

Lars Knoll, maker van de KHTML-engine, projectmanager van het Qt Project en technisch directeur van de Qt Company, ik vertelde over plannen om de volgende belangrijke tak van het Qt-framework te creëren. Zodra de functionaliteit van de Qt 5.14-tak compleet is, zal de ontwikkeling zich richten op de voorbereiding op de release van Qt 6, die eind 2020 wordt verwacht.

Qt 6 zal worden ontwikkeld met het oog op het garanderen van compatibiliteit met Qt 5, maar er kunnen zich individuele problemen voordoen, aangezien de geplande architectonische veranderingen en opruimingen niet kunnen worden geïmplementeerd zonder een bepaald niveau van compatibiliteit te verliezen. Om de overgang te vergemakkelijken, zijn sommige functies van Qt 6 gepland om in een beperkte vorm te worden opgenomen als onderdeel van de Qt 5.14 en Qt 5.15 LTS-releases. Er zal ook een Toolkit worden opgesteld om de migratie naar Qt 6 te vereenvoudigen.

Een van de belangrijkste doelstellingen voor de volgende belangrijke tak is het in lijn brengen van de functionaliteit met de vereisten van 2020, het opschonen van de codebasis en het vereenvoudigen van projectonderhoud. Verwachte veranderingen:

  • Aanzienlijke modernisering van QML:
    • Sterke typeondersteuning.
    • Mogelijkheid om QML te compileren in C++-weergave en machinecode.
    • Volledige JavaScript-ondersteuning tot een optie maken (het gebruik van een volledig uitgeruste JavaScript-engine vereist veel bronnen, wat het gebruik van QML op apparatuur zoals microcontrollers verhindert).
    • Weigering van versiebeheer in QML.
    • Unificatie van datastructuren gedupliceerd in QObject en QML (zal het geheugenverbruik verminderen en het opstarten versnellen).
    • Afstappen van het genereren van datastructuren tijdens runtime ten gunste van het genereren tijdens compileren.
    • Interne componenten verbergen door het gebruik van privémethoden en eigenschappen.
    • Verbeterde integratie met ontwikkeltools voor refactoring en foutdiagnose tijdens het compileren;
  • Het toevoegen van een nieuwe abstracte laag, de Rendering Hardware Interface (RHI), om naadloos gebruik te bieden van verschillende grafische API's, waaronder OpenGL, Vulkan, Metal en Direct 3D (voorheen was Qt alleen OpenGL). Alle bestaande rendering-infrastructuur zal worden geconverteerd om RHI te gebruiken, inclusief QPainter, Qt Quick Scenegraph en Qt3D. Het is ook de bedoeling om de Qt Shader Tools-module toe te voegen om verschillende shader-ontwikkeltalen te ondersteunen en cross-compilatie van shaders te bieden, zowel in de bouwfase als tijdens runtime;
  • Voorbereiding van een uniforme API voor het creëren van gebruikersinterfaces die 2D- en 3D-grafische elementen combineren. Met de nieuwe API kunt u QML gebruiken om 3D-interface-elementen te definiëren zonder het UIP-formaat te gebruiken. De nieuwe interface voor het integreren van 3D-inhoud met Qt Quick is van plan problemen op te lossen zoals de hoge overhead van het integreren van QML met inhoud van Qt 3D of 3D Studio, en het onvermogen om animaties en transformaties op frameniveau tussen 2D en 3D te synchroniseren. Gecombineerde geneste 2D- en 3D-rendering zal worden geïmplementeerd met behulp van een nieuwe rendering-engine. Een preview van de nieuwe Qt Quick met 3D-ondersteuning wordt verwacht in de Qt 5.14-release;
  • Het toevoegen van tools om grafische elementen tijdens het compileren te verwerken, zoals het converteren van PNG-afbeeldingen naar gecomprimeerde texturen of het converteren van shaders en meshes naar geoptimaliseerde binaire formaten voor specifieke hardware;
  • Het inbedden van een uniforme engine voor thema's en stijlen, waardoor u het uiterlijk kunt bereiken van applicaties gebaseerd op Qt Widgets en Qt Quick, eigen aan verschillende mobiele en desktopplatforms;
  • Unificatie van tools voor het creëren van een gebruikersinterface. Om duplicatie van functionaliteit en stopzetting van de levering van twee afzonderlijke producten te voorkomen, wordt verwacht dat de functionaliteit van Qt 3D Studio zal worden geïntegreerd in Qt Design Studio, waarvan veel subsystemen en het raamwerk voor het verbinden van plug-ins zijn gebouwd op dezelfde codebasis als Qt-maker.
    Qt Design Studio is ook van plan hoogwaardige integratie te bieden met pakketten voor het maken van inhoud, zoals Photoshop, Sketch, Illustrator, Maya en 3D Max. De belangrijkste talen die worden ondersteund in de uniforme ontwikkelingstoolkit zijn C++, QML en Python. Unificatie betekent ook de mogelijkheid om toegang te krijgen tot interface-ontwerptools van Qt Creator, en interface-ontwerpers te voorzien van mogelijkheden van ontwikkelaarstools, bijvoorbeeld het compileren van een project of het testen van een applicatie op een apparaat;

  • Er werd besloten om CMake te gebruiken in plaats van QMake als bouwsysteem. Ondersteuning voor het bouwen van applicaties met behulp van QMake blijft bestaan, maar Qt zelf zal worden gebouwd met CMake. Er is voor CMake gekozen omdat deze toolkit veel wordt gebruikt onder C++-projectontwikkelaars en wordt ondersteund in veel geïntegreerde ontwikkelomgevingen. Ontwikkeling van het Qbs-montagesysteem, dat beweerde een vervanging te zijn voor QMake, Stopgezet;
  • Overgang naar de C++17-standaard tijdens de ontwikkeling (voorheen werd C++98 gebruikt). Qt 6 is van plan ondersteuning te implementeren voor veel moderne C++-functies, maar zonder achterwaartse compatibiliteit te verliezen met code gebaseerd op oudere standaarden.
  • Mogelijkheid om vanuit C++ een deel van de functionaliteit te gebruiken die wordt aangeboden voor QML en Qt Quick. In het bijzonder zal een nieuw eigenschappensysteem voor QObject en soortgelijke klassen worden gepresenteerd. Een engine voor het werken met bindingen zal worden geïntegreerd vanuit QML in de Qt-kern, wat de belasting en het geheugenverbruik voor bindingen zal verminderen en deze beschikbaar zal maken voor alle delen van Qt, en niet alleen voor Qt Quick;
  • Voortdurende werkzaamheden om de ondersteuning voor extra talen zoals Python en WebAssembly uit te breiden;
  • Herstructurering door het opsplitsen in kleinere componenten en het verkleinen van de omvang van het onderliggende product. Ontwikkelaarstools en aangepaste componenten worden geleverd als add-ons en worden gedistribueerd via de nieuwe cataloguswinkel. Toevoegingen aan Qt van externe ontwikkelaars, zowel gratis als betaald, worden ook geaccepteerd voor distributie.

Bron: opennet.ru

Voeg een reactie