Lars Knoll, creador del motor KHTML, líder del proyecto Qt Project y director técnico de Qt Company, sobre los planes para crear la próxima versión importante del framework Qt. Tras completar la funcionalidad de la versión Qt 5.14, el desarrollo se centrará en la preparación del lanzamiento de Qt 6, que se espera a finales de 2020.
Qt 6 se desarrollará teniendo en cuenta la compatibilidad con Qt 5, pero no se excluyen problemas aislados, ya que los cambios arquitectónicos y la limpieza planeada no se podrán realizar sin perder un cierto nivel de compatibilidad. Para suavizar la transición, algunas funcionalidades de Qt 6 se incluirán en forma reducida en los lanzamientos de Qt 5.14 y Qt 5.15 LTS. También se prepararán herramientas para facilitar la migración a Qt 6.
Entre los principales objetivos para la próxima versión importante se encuentra alinear la funcionalidad con los requisitos de 2020, realizar una limpieza de la base de código y simplificar el mantenimiento del proyecto. Cambios esperados:
- Modernización significativa de QML:
- Soporte para tipado estricto.
- Posibilidad de compilar QML a representación en C++ y código máquina.
- Convertir el soporte completo de JavaScript en una opción (usar un motor de JavaScript de pleno funcionamiento requiere muchos recursos, lo que dificulta el uso de QML en hardware como microcontroladores).
- Abandono del versionado en QML.
- Unificación de estructuras de datos duplicadas en QObject y QML (permitirá reducir el consumo de memoria y acelerar el tiempo de inicio).
- Desarrollo de estructuras de datos en tiempo de compilación en lugar de en tiempo de ejecución.
- Ocultación de componentes internos mediante el uso de métodos y propiedades privadas.
- Mejorada integración con herramientas de desarrollo para refactorización y diagnóstico de errores durante la compilación;
- Adición de una nueva capa abstracta Rendering Hardware Interface (RHI) para asegurar el uso sin interrupciones de diversas API gráficas, incluyendo OpenGL, Vulkan, Metal y Direct 3D (anteriormente, Qt solo estaba vinculado a OpenGL). Toda la infraestructura de renderizado existente, incluyendo QPainter, Qt Quick Scenegraph y Qt3D, se trasladará al uso de RHI. También se planea añadir un módulo Qt Shader Tools para soportar varios lenguajes de desarrollo de sombreadores y permitir la compilación cruzada de sombreadores tanto en la etapa de construcción como durante la ejecución del programa;
- Preparación de una API unificada para crear interfaces de usuario que combinan elementos de gráficos 2D y 3D. La nueva API permitirá utilizar QML para definir elementos 3D en las interfaces sin utilizar el formato UIP. En la nueva interfaz para integrar contenido 3D con Qt Quick, se planea abordar problemas como los altos costos de la integración de QML con contenido de Qt 3D o 3D Studio, y la imposibilidad de sincronizar animaciones y transformaciones a nivel de fotograma individual entre 2D y 3D. El renderizado conjunto y anidado de 2D y 3D se llevará a cabo mediante un nuevo motor de renderizado. La implementación preliminar del nuevo Qt Quick con soporte para 3D se espera en el lanzamiento de Qt 5.14;
- Adición de 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 hardware específico;
- Incorporación de un motor unificado para temas y estilos, que permita lograr una apariencia nativa de aplicaciones basadas en Qt Widgets y Qt Quick en diferentes plataformas móviles y de escritorio;
- Unificación de herramientas para la creación de interfaces de usuario. Para evitar la duplicación de funcionalidad y dejar de ofrecer dos productos separados, se espera integrar la funcionalidad de Qt 3D Studio en Qt Design Studio, muchas de cuyas subsistemas y el marco de conexión de complementos están construidos sobre una base de código común con Qt Creator.
En Qt Design Studio también se planea asegurar una integración de calidad con paquetes para la creación de contenido, como Photoshop, Sketch, Illustrator, Maya y 3D Max. Los principales lenguajes soportados en el conjunto de herramientas unificado para el desarrollo se mencionan como C++, QML y Python. La unificación también implica la posibilidad de acceder desde Qt Creator a herramientas de diseño de interfaz, y proporcionar a los diseñadores de interfaces capacidades de herramientas para desarrolladores, como la compilación de proyectos o la prueba de aplicaciones en dispositivos; - Como sistema de compilación, se ha decidido utilizar CMake en lugar de QMake. Se mantendrá el soporte para compilar aplicaciones utilizando QMake, pero Qt se compilará usando CMake. CMake se eligió porque esta herramienta ha ganado amplia aceptación entre los desarrolladores de proyectos en C++ y es compatible con muchos entornos de desarrollo integrados. El desarrollo del sistema de compilación Qbs, que pretendía sustituir a QMake, ;
- Transición al estándar C++17 en el desarrollo (anteriormente se usaba C++98). En Qt 6 se planea implementar el soporte para muchas de las características modernas de C++, sin perder la compatibilidad hacia atrás con el código basado en estándares anteriores.
- La posibilidad de utilizar en C++ ciertas funcionalidades ofrecidas para QML y Qt Quick. Además, se presentará un nuevo sistema de propiedades para QObject y clases similares. Desde QML, se integrará un motor en el núcleo de Qt para trabajar con vinculaciones, lo que permitirá reducir la carga y el consumo de memoria para estas vinculaciones y hacerlas accesibles para todas las partes de Qt, no solo para Qt Quick;
- Continuación del trabajo en la expansión del soporte para lenguajes adicionales, como Python y WebAssembly;
- Reestructuración con división en componentes más pequeños y reducción del tamaño del producto base. Las herramientas para desarrolladores y componentes especializados se ofrecerán como complementos, distribuidos a través de un nuevo catálogo de tienda. Se aceptarán también complementos para Qt de desarrolladores externos, tanto gratuitos como de pago.
Fuente: opennet.ru
