Lộ trình chức năng Qt 6 được xuất bản

Ларс Кнолл (Lars Knoll), создатель движка KHTML, руководитель проекта Qt Project и технический директор компании Qt Company, tôi đã nói với о планах по созданию следующей значительной ветки фреймворка Qt. После завершения формирования функциональности ветки Qt 5.14 разработка будет сфокусирована на подготовке выпуска Qt 6, который ожидается в конце 2020 года.

Qt 6 будет развиваться с оглядкой на обеспечение совместимости с Qt 5, но не исключено возникновение отдельных проблем, так как намеченные архитектурные изменения и чистку невозможно будет реализовать без потери определённого уровня совместимости. Для сглаживания перехода некоторые возможности Qt 6 планируется в сокращённом виде включить в состав выпусков Qt 5.14 и Qt 5.15 LTS. Также будет подготовлен инструментарий для упрощения миграции на Qt 6.

Среди основных целей для следующей значительной ветки называется приведение функциональности в соответствие с требованиями 2020 года, проведение чистки кодовой базы и упрощение сопровождения проекта. Ожидаемые изменения:

  • Hiện đại hóa đáng kể QML:
    • Hỗ trợ gõ mạnh mẽ.
    • Khả năng biên dịch QML thành biểu diễn C++ và mã máy.
    • Tùy chọn hỗ trợ JavaScript đầy đủ (sử dụng công cụ JavaScript đầy đủ tính năng đòi hỏi nhiều tài nguyên, điều này ngăn cản việc sử dụng QML trên các thiết bị như bộ vi điều khiển).
    • Từ chối lập phiên bản trong QML.
    • Hợp nhất các cấu trúc dữ liệu được sao chép trong QObject và QML (sẽ giảm mức tiêu thụ bộ nhớ và tăng tốc độ khởi động).
    • Loại bỏ việc tạo cấu trúc dữ liệu trong thời gian chạy để chuyển sang tạo thời gian biên dịch.
    • Ẩn các thành phần bên trong thông qua việc sử dụng các phương thức và thuộc tính riêng tư.
    • Улучшенная интеграция с инструментами разработки для рефакторинга и диагностики ошибок во время компиляции;
  • Добавление нового абстрактного слоя Rendering Hardware Interface (RHI) для обеспечение бесшовного использования различных графических API, включая OpenGL, Vulkan, Metal и Direct 3D (раньше Qt был завязан только на OpenGL). На использование RHI будет переведена вся имеющаяся инфраструктура рендеринга, включая QPainter, Qt Quick Scenegraph и Qt3D. Также планируется добавить модуль Qt Shader Tools для поддержки различных языков разработки шейдеров и обеспечения кросс-компиляции шейдеров как на этапе сборки, так и во время выполнения программы;
  • Подготовка унифицированного API для создания интерфейсов пользователя, сочетающих элементы 2D и 3D графики. Новый API позволит использовать QML для для определения 3D-элементов интерфейсов без задействования формата UIP. В новом интерфейсе для интеграции 3D-контента с Qt Quick планируют решить такие проблемы, как большие накладные расходы при интеграции QML с контентом из Qt 3D или 3D Studio, и невозможность синхронизации анимации и преобразований на уровне отдельных кадров между 2D и 3D. Совместная в вложенная отрисовка 2D и 3D будет реализована при помощи нового движка рендеринга. Предварительная реализация нового Qt Quick с поддержкой 3D ожидается в выпуске Qt 5.14;
  • Добавление инструментов для обработки связанных с графикой ресурсов на этапе компиляции, например, для преобразования PNG-изображений в сжатые текстуры или для конвертации шейдеров и мешей в оптимизированные бинарные форматы для конкретного оборудования;
  • Встраивание унифицированного движка для тем оформления и стилей, позволяющего добиться внешнего вида приложений на базе Qt Widgets и Qt Quick, родного для разных мобильных и настольных платформ;
  • Унификация инструментов для создания интерфейса пользователя. Для исключения дублирования функциональности и прекращения поставки двух отдельных продуктов, ожидается интеграция функциональности Qt 3D Studio в Qt Design Studio, многие подсистемы которого и фреймворк подключения плагинов построены на единой с Qt Creator кодовой базе.
    В Qt Design Studio также планируют обеспечить качественную интеграцию с пакетами для создания контента, такими как Photoshop, Sketch, Illustrator, Maya и 3D Max. В качестве основных языков, поддерживаемых в унифицированном инструментарии для разработки, называются C++, QML и Python. Унификация также подразумевает возможность обращения из Qt Creator к средствам проектирования интерфейса, и предоставление дизайнерам интерфейса возможностей из инструментов для разработчиков, например, компиляции проекта или тестирования приложения на устройстве;

  • Người ta đã quyết định sử dụng CMake thay vì QMake làm hệ thống xây dựng. Hỗ trợ xây dựng ứng dụng bằng QMake sẽ vẫn được duy trì, nhưng bản thân Qt sẽ được xây dựng bằng CMake. CMake được chọn vì bộ công cụ này được các nhà phát triển dự án C++ sử dụng rộng rãi và được hỗ trợ trong nhiều môi trường phát triển tích hợp. Phát triển hệ thống lắp ráp Qbs, được cho là sẽ thay thế cho QMake, ngừng hoạt động;
  • Chuyển đổi sang tiêu chuẩn C++17 trong quá trình phát triển (trước đây C++98 đã được sử dụng). Qt 6 có kế hoạch triển khai hỗ trợ cho nhiều tính năng C++ hiện đại nhưng không làm mất khả năng tương thích ngược với mã dựa trên các tiêu chuẩn cũ.
  • Возможность использования из C++ некоторой функциональности, предлагаемой для QML и Qt Quick. В том числе, будет представлена новая система свойств для QObject и подобных классов. Из QML в ядро Qt будет интегрирован движок для работы с биндингами, что позволит снизить нагрузку и потребление памяти для биндингов и сделать их доступными для всех частей Qt, а не только для Qt Quick;
  • Продолжение работы по расширению поддержки дополнительных языков, таких как Python и WebAssembly;
  • Реструктуризация с разбиением на более мелкие составные части и сокращением размера базового продукта. Инструменты для разработчиков и специализированные компоненты будут поставляться в виде дополнений, распространяемых через новый каталог-магазин. Для распространения будут приниматься и дополнения к Qt от сторонних разработчиков, как бесплатные, так и платные.

Nguồn: opennet.ru

Thêm một lời nhận xét