Roteiro de funcionalidades do Qt 6 publicado

Lars Knoll, criador do motor KHTML, gerente de projeto do Projeto Qt e diretor técnico da Qt Company, Eu disse sobre os planos para criar o próximo ramo significativo da estrutura Qt. Assim que a funcionalidade do branch Qt 5.14 estiver concluída, o desenvolvimento se concentrará na preparação para o lançamento do Qt 6, esperado para o final de 2020.

O Qt 6 será desenvolvido visando garantir a compatibilidade com o Qt 5, mas podem surgir problemas individuais, uma vez que as mudanças e limpezas arquitetônicas planejadas não serão possíveis de implementar sem perder um certo nível de compatibilidade. Para facilitar a transição, alguns recursos do Qt 6 estão planejados para serem incluídos de forma reduzida como parte das versões Qt 5.14 e Qt 5.15 LTS. O kit de ferramentas também será preparado para simplificar a migração para o Qt 6.

Entre os principais objetivos para o próximo ramo significativo estão alinhar a funcionalidade com os requisitos de 2020, limpando a base de código e simplificando a manutenção do projeto. Mudanças esperadas:

  • Modernização significativa do QML:
    • Forte suporte para digitação.
    • Capacidade de compilar QML em representação C++ e código de máquina.
    • Tornar o suporte completo a JavaScript uma opção (usar um mecanismo JavaScript completo requer muitos recursos, o que impede o uso de QML em equipamentos como microcontroladores).
    • Recusa de versionamento em QML.
    • Unificação de estruturas de dados duplicadas em QObject e QML (reduzirá o consumo de memória e acelerará a inicialização).
    • Afastando-se da geração de estruturas de dados em tempo de execução em favor da geração em tempo de compilação.
    • Ocultar componentes internos através do uso de métodos e propriedades privadas.
    • Melhor integração com ferramentas de desenvolvimento para refatoração e diagnóstico de erros em tempo de compilação;
  • Adicionando uma nova camada abstrata, a Rendering Hardware Interface (RHI), para fornecer uso contínuo de várias APIs gráficas, incluindo OpenGL, Vulkan, Metal e Direct 3D (anteriormente o Qt era apenas OpenGL). Toda a infraestrutura de renderização existente será convertida para usar RHI, incluindo QPainter, Qt Quick Scenegraph e Qt3D. Também está planejado adicionar o módulo Qt Shader Tools para suportar várias linguagens de desenvolvimento de shaders e fornecer compilação cruzada de shaders tanto no estágio de construção quanto em tempo de execução;
  • Preparação de uma API unificada para criação de interfaces de usuário que combinem elementos gráficos 2D e 3D. A nova API permitirá usar QML para definir elementos de interface 3D sem usar o formato UIP. A nova interface para integração de conteúdo 3D com Qt Quick planeja resolver problemas como a alta sobrecarga de integração de QML com conteúdo do Qt 3D ou 3D Studio e a incapacidade de sincronizar animações e transformações em nível de quadro entre 2D e 3D. A renderização combinada aninhada 2D e 3D será implementada usando um novo mecanismo de renderização. Uma prévia do novo Qt Quick com suporte 3D é esperada na versão Qt 5.14;
  • Adicionar ferramentas para processar ativos relacionados a gráficos em tempo de compilação, como converter imagens PNG em texturas compactadas ou converter shaders e malhas em formatos binários otimizados para hardware específico;
  • Incorporação de um motor unificado de temas e estilos, permitindo obter a aparência de aplicações baseadas em Qt Widgets e Qt Quick, nativas para diferentes plataformas móveis e desktop;
  • Unificação de ferramentas para criação de interface de usuário. Para evitar a duplicação de funcionalidades e a descontinuação da entrega de dois produtos separados, espera-se que a funcionalidade do Qt 3D Studio seja integrada ao Qt Design Studio, muitos dos quais os subsistemas e a estrutura para conectar plug-ins são construídos na mesma base de código que Criador Qt.
    O Qt Design Studio também planeja fornecer integração de alta qualidade com pacotes de criação de conteúdo como Photoshop, Sketch, Illustrator, Maya e 3D Max. As principais linguagens suportadas no kit de ferramentas de desenvolvimento unificado são C++, QML e Python. Unificação também significa a capacidade de acessar ferramentas de design de interface do Qt Creator e fornecer aos designers de interface recursos de ferramentas de desenvolvedor, por exemplo, compilar um projeto ou testar um aplicativo em um dispositivo;

  • Foi decidido usar CMake em vez de QMake como sistema de construção. O suporte para construção de aplicativos usando QMake permanecerá, mas o próprio Qt será construído usando CMake. O CMake foi escolhido porque este kit de ferramentas é amplamente utilizado entre desenvolvedores de projetos C++ e é suportado em muitos ambientes de desenvolvimento integrados. Desenvolvimento do sistema de montagem Qbs, que afirmava ser um substituto do QMake, encerrado;
  • Transição para o padrão C++17 durante o desenvolvimento (anteriormente era usado C++98). O Qt 6 planeja implementar suporte para muitos recursos modernos do C++, mas sem perder a compatibilidade retroativa com código baseado em padrões legados.
  • Capacidade de usar em C++ algumas das funcionalidades oferecidas para QML e Qt Quick. Em particular, será apresentado um novo sistema de propriedades para QObject e classes similares. Um mecanismo para trabalhar com ligações será integrado do QML ao núcleo do Qt, o que reduzirá a carga e o consumo de memória para ligações e as tornará disponíveis para todas as partes do Qt, e não apenas para o Qt Quick;
  • Trabalho contínuo para expandir o suporte para linguagens adicionais como Python e WebAssembly;
  • Reestruturação dividindo-se em componentes menores e reduzindo o tamanho do produto subjacente. Ferramentas de desenvolvedor e componentes personalizados serão fornecidos como complementos distribuídos pela nova loja de catálogo. Adições ao Qt de desenvolvedores terceirizados, tanto gratuitas quanto pagas, também serão aceitas para distribuição.

Fonte: opennet.ru

Adicionar um comentário