Se dio a conocer el plan de desarrollo de funciones para la versión de Qt 6
Lars Knoll, creador del motor KHTML, gerente del proyecto Qt Project y director técnico de Qt Company, habló sobre los planes para crear la próxima rama significativa del marco Qt. Después de que se complete la formación de la funcionalidad de la rama Qt 5.14, el desarrollo se centrará en la preparación de la versión Qt 6, que se espera para finales de 2020.
Qt 6 evolucionará con el objetivo de garantizar la compatibilidad con Qt 5, pero no se descarta que puedan surgir problemas individuales, ya que los cambios arquitectónicos y la limpieza planificados no serán posibles sin perder un cierto nivel de compatibilidad. Para facilitar la transición, se planea incluir algunas características de Qt 6 en forma abreviada en las versiones Qt 5.14 y Qt 5.15 LTS. También se preparará un kit de herramientas para facilitar la migración a Qt 6.
Entre los objetivos principales para la próxima sucursal importante está alinear la funcionalidad con los requisitos de 2020, limpiar la base del código y simplificar el mantenimiento del proyecto.
Estos son los cambios esperados
Dentro de los principales cambios que se tienen previstos para Qt 6 se encuentra la capacidad para compilar QML en una representación en C ++ y código máquina.
Así como la transferencia de soporte completo para JavaScript a la categoría de opciones (el uso de un motor de JavaScript con todas las funciones requiere grandes recursos, lo que impide el uso de QML en equipos como los microcontroladores).
Se planea agregar una nueva capa abstracta, Rendering Hardware Interface (RHI), para garantizar el uso sin problemas de varias API gráficas, incluidas OpenGL, Vulkan, Metal y Direct 3D (anteriormente Qt estaba vinculado solo a OpenGL).
Toda la infraestructura de renderizado existente, incluidos QPainter, Qt Quick Scenegraph y Qt3D, se convertirán a RHI. También se planea agregar el módulo Qt Shader Tools para admitir varios lenguajes de desarrollo de sombreadores y proporcionar una compilación cruzada de sombreadores tanto en la etapa de ensamblaje como durante la ejecución del programa.
Unificación de herramientas para crear una interfaz de usuario
Para evitar la duplicación de la funcionalidad y dejar de suministrar dos productos separados, se espera que la funcionalidad de Qt 3D Studio se integre en Qt Design Studio, muchos de los cuales los subsistemas y el marco de conexión de complementos se construyen en una sola base de código con Qt Creator.
Qt Design Studio también planea proporcionar una integración de calidad con paquetes de creación de contenido como Photoshop, Sketch, Illustrator, Maya y 3D Max. Los principales idiomas admitidos en un kit de herramientas de desarrollo unificado son C ++, QML y Python.
Se espera preparar una API unificada para crear interfaces de usuario que combinen elementos de gráficos 2D y 3D. La nueva API permitirá que QML se use para definir elementos de interfaz 3D sin usar el formato UIP.
En la nueva interfaz para integrar contenido 3D con Qt Quick, planean resolver problemas como la sobrecarga al integrar QML con contenido de Qt 3D o 3D Studio, y la incapacidad de sincronizar animaciones y transformaciones a nivel de cuadros individuales entre 2D y 3D.
El renderizado conjunto 2D y 3D se implementará utilizando el nuevo motor de renderizado. Se espera una implementación preliminar del nuevo Qt Quick con soporte 3D en Qt 5.14.
Agregar herramientas para procesar recursos relacionados con gráficos en la etapa de compilación, por ejemplo, para convertir imágenes PNG en texturas comprimidas o para convertir sombreadores y mallas en formatos binarios optimizados para equipos específicos.
La unificación también implica la posibilidad de acceder a Qt Creator para interactuar con las herramientas de diseño y proporcionar a los diseñadores de interfaces oportunidades de herramientas para desarrolladores.
De los demás cambios que se destacan son:
- Denegación de versiones en QML y una unificación de estructuras de datos que se duplican en QObject y QML (reducirá el consumo de memoria y acelerará el inicio).
- Evitar la generación de estructuras de datos en tiempo de ejecución a favor de la generación en tiempo de compilación.
- Ocultar componentes internos mediante el uso de métodos y propiedades privados.
- Integración mejorada con herramientas de desarrollo para refactorizar y diagnosticar errores durante la compilación.
Fuente: https://blog.qt.io/