Компания Qt Company първи тестов издание на новата клонка Qt 6, в която ще бъдат предложени значителни архитектурни промени, а за компилация ще е необходим компилатор, поддържащ стандарт C++17. Изданието включва само началната структура на бъдещото издание Qt 6, което е от 1 декември 2020 година. Функционалността в клонката Qt 6 ще се разширява до обявяването на замразяване на кодовата база на 31 август.
В състава на първата тестова сборка са включени модулите:
Qt Core,
Qt GUI,
Qt Widgets,
Qt Network,
Qt QML,
Qt Quick,
Qt Quick Controls,
Qt SVG,
Qt Network Authorization,
Qt SQL и
Qt Test.
Ключови Qt 6:
- Абстрактен графичен API, независим от 3D API на операционната система. Ключов компонент на новия графичен стек на Qt е двигателят за рендериране на сцени, който използва слой RHI (Rendering Hardware Interface) за осигуряване на работа на приложенията Qt Quick не само с OpenGL, но и над API Vulkan, Metal и Direct 3D.
- Модул Qt Quick 3D с API за създаване на потребителски интерфейси на база Qt Quick, които съчетават елементи от 2D и 3D графика. Qt Quick 3D позволява използването на QML за определяне на 3D елементи на интерфейсите без ангажиране на формата UIP. В Qt Quick 3D за 2D и 3D може да се използва един runtime (Qt Quick), един макет на сцената и една анимационна рамка, а за визуално проектиране на интерфейса да се прилага Qt Design Studio. Модулът решава проблеми като големи разходи при интеграцията на QML с съдържание от Qt 3D или 3D Studio и предоставя възможност за синхронизация на анимации и трансформации на ниво отделни кадри между 2D и 3D.
- Реструктуриране на кодовата база с разделение на по-малки съставни части и намаляване на размера на основния продукт. Инструментите за разработчици и специализирани компоненти ще се доставят под формата на добавки, разпространявани чрез каталог-магазин. .
- Съществени подобрения в QML:
- Поддръжка на строг тип.
- Възможността за компилация на QML в представяне на C++ и машинен код.
- Превод на пълната поддръжка на JavaScript в разред опции (използването на пълнофункционален JavaScript двигател изисква големи ресурси, което пречи на прилагането на QML на такова оборудване като микроконтролери).
- Отказ от версиониране в QML.
- Унификация на данни, дублиращи се в QObject и QML ( което ще намали потреблението на памет и ще ускори стартирането).
- Отказ от генерирането на данни в реално време в полза на генерирането по време на компилация.
- Скриване на вътрешни компоненти чрез използването на частни методи и свойства.
- Подобрена интеграция с инструменти за разработка за рефакторинг и диагностика на грешки по време на компилация.
- Добавяне на инструменти за обработка на ресурси, свързани с графиката, на етапа на компилацията, например, за преобразуване на PNG изображения в компресирани текстури или за конвертиране на шейдери и мрежи в оптимизирани бинарни формати за специфично оборудване.
- Вграждане на унифициран двигател за теми оформления и стилове, позволяващ да се постигне външен вид на приложенията, базирани на Qt Widgets и Qt Quick, присъщ за различни мобилни и настолни платформи.
- Като система за компилация решено е да се използва CMake вместо QMake. Подкрепата за компилация на приложения с помощта на QMake ще бъде запазена, но самият Qt ще се компилира с помощта на CMake. CMake е избран, тъй като този инструментариум е получил широко разпространение сред разработчиците на проекти на C++ и се поддържа в много интегрирани среди за разработка. Разработката на системата за компилация Qbs, която претендираше за роля на заместител на QMake, общността.
- Преходът при разработката на стандарт C++17 (преди се използваше C++98). В Qt 6 планират да реализират поддръжка на много съвременни възможности на C++, но без загуба на обратна съвместимост с кода, основан на предишни стандарти.
- Възможност за използване в C++ код на определена функционалност, предлагана за QML и Qt Quick. Включително ще бъде представена нова система за свойства на QObject и подобни класове. От QML в ядрото на Qt ще бъде интегриран двигател за работа с привързвания (binding), което ще намали натоварването и консумацията на памет за привързвания и ще ги направи достъпни за всички части на Qt, а не само за Qt Quick.
- Разширяване на подкрепата за допълнителни езици, като Python и WebAssembly.
Източник: opennet.ru
