Se publica la hoja de ruta de funcionalidad de Qt 6

Lars Knoll, creador del motor KHTML, director de proyecto del Proyecto Qt y director técnico de Qt Company, рассказал sobre planes para crear la próxima rama importante del marco Qt. Una vez que se complete la funcionalidad de la rama Qt 5.14, el desarrollo se centrará en preparar el lanzamiento de Qt 6, que se espera para finales de 2020.

Qt 6 se desarrollará con miras a garantizar la compatibilidad con Qt 5, pero pueden surgir problemas individuales, ya que los cambios arquitectónicos y las limpiezas planificadas no serán posibles de implementar sin perder un cierto nivel de compatibilidad. Para facilitar la transición, se planea incluir algunas características de Qt 6 en forma reducida como parte de las versiones Qt 5.14 y Qt 5.15 LTS. También se preparará un kit de herramientas para simplificar la migración a Qt 6.

Entre los principales objetivos para la próxima rama importante se encuentran alinear la funcionalidad con los requisitos de 2020, limpiar la base del código y simplificar el mantenimiento del proyecto. Cambios esperados:

  • Modernización significativa de QML:
    • Fuerte soporte para mecanografía.
    • Capacidad para compilar QML en representación C++ y código de máquina.
    • Hacer que el soporte completo de JavaScript sea una opción (el uso de un motor JavaScript con todas las funciones requiere muchos recursos, lo que impide el uso de QML en equipos como microcontroladores).
    • Rechazo de versionado en QML.
    • Unificación de estructuras de datos duplicadas en QObject y QML (reducirá el consumo de memoria y acelerará el inicio).
    • Alejarse de la generación de estructuras de datos en tiempo de ejecución en 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 refactorización y diagnóstico de errores en tiempo de compilación;
  • Agregar una nueva capa abstracta, la interfaz de hardware de renderizado (RHI), para proporcionar un uso perfecto de varias API de gráficos, incluidas OpenGL, Vulkan, Metal y Direct 3D (anteriormente, Qt era solo OpenGL). Toda la infraestructura de renderizado existente se convertirá para utilizar RHI, incluidos QPainter, Qt Quick Scenegraph y Qt3D. También está previsto agregar el módulo Qt Shader Tools para admitir varios lenguajes de desarrollo de sombreadores y proporcionar compilación cruzada de sombreadores tanto en la etapa de compilación como en tiempo de ejecución;
  • Preparar una API unificada para crear interfaces de usuario que combinen elementos gráficos 2D y 3D. La nueva API le permitirá utilizar QML para definir elementos de interfaz 3D sin utilizar el formato UIP. La nueva interfaz para integrar contenido 3D con Qt Quick planea resolver problemas como la alta sobrecarga de integrar QML con contenido de Qt 3D o 3D Studio, y la incapacidad de sincronizar animaciones y transformaciones a nivel de fotograma entre 2D y 3D. El renderizado 2D y 3D anidado combinado se implementará utilizando un nuevo motor de renderizado. Se espera una vista previa del nuevo Qt Quick con soporte 3D en la versión Qt 5.14;
  • Agregar herramientas para procesar activos relacionados con gráficos en tiempo de compilación, como convertir imágenes PNG en texturas comprimidas o convertir sombreadores y mallas en formatos binarios optimizados para hardware específico;
  • Incorporar un motor unificado para temas y estilos, permitiendo lograr la apariencia de aplicaciones basadas en Qt Widgets y Qt Quick, nativas para diferentes plataformas móviles y de escritorio;
  • Unificación de herramientas para la creación de una interfaz de usuario. Para evitar la duplicación de funciones y la interrupción de la entrega de dos productos separados, se espera que la funcionalidad de Qt 3D Studio se integre en Qt Design Studio, muchos de cuyos subsistemas y el marco para conectar complementos se basan en la misma base de código que Creador de Qt.
    Qt Design Studio también planea brindar integración de alta calidad con paquetes de creación de contenido como Photoshop, Sketch, Illustrator, Maya y 3D Max. Los principales lenguajes admitidos en el kit de herramientas de desarrollo unificado son C++, QML y Python. La unificación también significa la capacidad de acceder a herramientas de diseño de interfaces desde Qt Creator y proporcionar a los diseñadores de interfaces capacidades de herramientas de desarrollo, por ejemplo, compilar un proyecto o probar una aplicación en un dispositivo;

  • Se decidió utilizar CMake en lugar de QMake como sistema de compilación. Se mantendrá el soporte para crear aplicaciones usando QMake, pero Qt en sí se construirá usando CMake. Se eligió CMake porque este conjunto de herramientas se utiliza ampliamente entre los desarrolladores de proyectos C++ y es compatible con muchos entornos de desarrollo integrados. Desarrollo del sistema de ensamblaje Qbs, que pretendía ser un reemplazo de QMake, terminado;
  • Transición al estándar C++17 durante el desarrollo (anteriormente se usaba C++98). Qt 6 planea implementar soporte para muchas características modernas de C++, pero sin perder compatibilidad con códigos basados ​​en estándares anteriores.
  • Posibilidad de utilizar desde C++ algunas de las funciones ofrecidas para QML y Qt Quick. En particular, se presentará un nuevo sistema de propiedades para QObject y clases similares. Se integrará un motor para trabajar con enlaces desde QML en el núcleo de Qt, lo que reducirá la carga y el consumo de memoria para los enlaces y los pondrá a disposición de todas las partes de Qt, y no solo de Qt Quick;
  • Trabajo continuo para ampliar el soporte para lenguajes adicionales como Python y WebAssembly;
  • Reestructuración dividiéndola en componentes más pequeños y reduciendo el tamaño del producto subyacente. Las herramientas de desarrollo y los componentes personalizados se proporcionarán como complementos distribuidos a través de la nueva tienda del catálogo. También se aceptarán para distribución adiciones a Qt de desarrolladores externos, tanto gratuitas como de pago.

Fuente: opennet.ru

Añadir un comentario