Ларс Кнолл (Lars Knoll), създател на движка KHTML, ръководител на проекта Qt Project и технически директор на компанията Qt Company, разказва за плановете за създаването на следващата значителна версия на фреймуърка Qt. След приключването на формулирането на функционалността на версия Qt 5.14, разработката ще бъде фокусирана върху подготовката на изданието Qt 6, което се очаква в края на 2020 година.
Qt 6 ще се развива като взема предвид осигуряването на съвместимост с Qt 5, но не е изключено да възникнат отделни проблеми, тъй като предвидените архитектурни промени и почистването няма да могат да бъдат реализирани без загуба на определено ниво на съвместимост. За улеснение на прехода, някои възможности на Qt 6 се планират да бъдат включени в съкратен вид в изданията Qt 5.14 и Qt 5.15 LTS. Ще бъде подготвен и инструментариум за опростяване на миграцията към Qt 6.
Сред основните цели за следващата значителна версия е приведението на функционалността в съответствие с изискванията на 2020 година, провеждането на почистване на кодовата база и опростяване на поддръжката на проекта. Очакваните промени:
- Съществени подобрения в QML:
- Поддръжка на строг тип.
- Възможността за компилация на QML в представяне на C++ и машинен код.
- Превод на пълната поддръжка на JavaScript в разред опции (използването на пълнофункционален JavaScript двигател изисква големи ресурси, което пречи на прилагането на QML на такова оборудване като микроконтролери).
- Отказ от версиониране в QML.
- Унификация на данни, дублиращи се в QObject и QML ( което ще намали потреблението на памет и ще ускори стартирането).
- Отказ от генерирането на данни в реално време в полза на генерирането по време на компилация.
- Скриване на вътрешни компоненти чрез използването на частни методи и свойства.
- Подобрен интеграция с инструментите за разработка за рефакториране и диагностика на грешки по време на компилация;
- Добавяне на нов абстрактен слой Rendering Hardware Interface (RHI) за осигуряване на безшевно използване на различни графични API, включително OpenGL, Vulkan, Metal и Direct 3D (по-рано Qt беше свързан само с OpenGL). Цялата съществуваща инфраструктура за рендериране, включително QPainter, Qt Quick Scenegraph и Qt3D, ще бъде прехвърлена за използване на RHI. Планира се също така добавяне на модул Qt Shader Tools за поддръжка на различни езици за разработка на шейдери и осигуряване на крос-компилация на шейдери както по време на компилация, така и по време на изпълнение на програмата;
- Подготовка на унифициран API за създаване на потребителски интерфейси, съчетаващи елементи 2D и 3D графика. Новият API ще позволи използването на QML за определяне на 3D-елементи на интерфейсите без ангажиране на UIP формат. В новия интерфейс планират да решат проблеми като големите разходи при интеграцията на QML с 3D съдържание от 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 до инструментите за проектиране на интерфейси и предоставяне на дизайнерите на интерфейси възможности от инструментите за разработчици, например компилиране на проекта или тестване на приложението на устройство; - Като система за компилация решено е да се използва CMake вместо QMake. Подкрепата за компилация на приложения с помощта на QMake ще бъде запазена, но самият Qt ще се компилира с помощта на CMake. CMake е избран, тъй като този инструментариум е получил широко разпространение сред разработчиците на проекти на C++ и се поддържа в много интегрирани среди за разработка. Разработката на системата за компилация Qbs, която претендираше за роля на заместител на QMake, ;
- Преходът при разработката на стандарт C++17 (преди се използваше C++98). В Qt 6 планират да реализират поддръжка на много съвременни възможности на C++, но без загуба на обратна съвместимост с кода, основан на предишни стандарти.
- Възможността за използване от C++ на някои функционалности, предлагани за QML и Qt Quick. Включително, ще бъде представена нова система свойства за QObject и подобни класове. От QML в ядрото на Qt ще бъде интегриран двигател за работа с биндинги, което ще позволи намаляване на натоварването и потреблението на памет за биндинги и да ги направи достъпни за всички части на Qt, а не само за Qt Quick;
- Продължаване на работата за разширяване на поддръжката на допълнителни езици, като Python и WebAssembly;
- Реструктуриране с разбиване на по-малки съставни части и намаляване на размера на основния продукт. Инструменти за разработчици и специализирани компоненти ще се предлагат под формата на добавки, разпространени чрез нов каталог-магазин. За разпространение ще се приемат и добавки към Qt от външни разработчици, както безплатни, така и платени.
Източник: opennet.ru
