Компанія Qt Company опублікувала реліз фреймворку Qt 6.12, в якому продовжено роботу зі стабілізації та нарощування функціональності гілки Qt 6. У Qt 6.12 надано підтримку платформ Windows 10+, macOS 13+, Linux (Ubuntu 22.04/24.04, openSUSE 16, SUSE 15 SP6, RHEL 9.6/10.0, Debian 11.6/12), iOS 17+, Android 9+(API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS та QNX. Вихідний код компонентів Qt поставляється під ліцензіями LGPLv3 та GPLv2.
Qt 6.12 отримав статус LTS-випуску, для якого оновлення формуватимуться протягом п'яти років для власників комерційної ліцензії. Для некомерційних користувачів час супроводу становитиме півроку (до формування нового значного випуску). Підтримка минулої LTS-гілки Qt 6.8 триватиме до жовтня 2029 року, а підтримка позаминулої LTS-гілки Qt 6.5 припинена цього року.
Основні зміни в Qt 6.12:
- Визнаний готовим для широкого застосування модуль Qt Canvas Painter, що надає API для апаратно прискореного відтворення 2D-контенту та використовує шейдери для створення складних візуальних ефектів. Малювання здійснюється за допомогою двигуна RHI (Rendering Hardware Interface), що підтримує різні 3D API (OpenGL, Vulkan, Metal і Direct 3D). На базі Canvas Painter реалізований експериментальний елемент Canvas2D, створений з огляду на HTML-специфікацію Canvas 2D Context і спрощує використання JavaScript для малювання фігур.

- Доданий експериментальний модуль StyleKit, який явно розділяє структуру компонентів інтерфейсу користувача та атрибути стилів, що дозволяє позбутися дублювання коду при реалізації світлих, темних та висококонтрастних тем оформлення. StyleKit надає єдиний QML API для опису стилів, що дозволяє досягти єдиного стилю в гібридних додатках, що поєднують класичні віджети та елементи на базі Qt Quick.

- Розширено можливості модуля Qt Graphs. Для 2D-графіків реалізовано нові властивості для кастомізації міток осей та додано підтримку логарифмічних осей. Додано вбудовані дії для масштабування та панорамування. Додано опцію для малювання за допомогою високопродуктивного бекенду на базі модуля CanvasPainter, що дозволяє візуалізувати великі обсяги даних, що швидко змінюються.
- У Qt Quick додані QML-типи Safe Area, Context Menu, Double Spin Box і Search Field для виведення вмісту, контекстних меню, форм введення чисел і полів відправки пошукових запитів. Розширено QML-тип FlexboxLayout, призначений для адаптивної розкладки елементів інтерфейсу відповідно до концепції Flexbox, що застосовується в CSS для спрощення вертикального вирівнювання елементів.
- Модуль Vector Image, що дозволяє інтегрувати в сцени Qt Quick векторні зображення для створення масштабованих елементів інтерфейсу, додано додаткові властивості та можливості анімації для зображень у форматах SVG та Lottie.
- Розширений клас QRangeModel, що надає обв'язку над QAbstractItemModel для прямого використання в елементах інтерфейсу на базі QML і Qt Quick будь-яких типів з C++, включаючи std::vector, std::tuples і std::array. У новій версії вбудовано підтримку сортування даних, реалізовано нові властивості для контролю за переміщенням у режимі «Drag & Drop», прискорено пошук через метод match(), а також надано налаштування для заголовків та окремих рядків/елементів.
- А модуль gRPC додано кошти для стиснення повідомлень на стороні клієнта та обмеження розміру вхідних повідомлень від сервера.
- У QML-движку реалізований механізм Hot Reload, що дозволяє редагувати QML-код на льоту під час виконання програми та спостерігати через qmlpreview результат без перезапуску та зупинення виконання програми.
- Надано LTS-підтримку платформи HarmonyOS, що спрощує перенесення існуючих Qt-додатків на смартфони, планшети, ПК та автомобільні інформаційно-розважальні системи Huawei.
- Виконані вимоги європейського закону Cyber Resilience Act (CRA), націлені на підтримку безпеки продукту, оперативне усунення вразливостей протягом життєвого циклу та розкриття відомостей про вразливості та інциденти з безпекою. У вихідному коді виділено компоненти, критично важливі з погляду безпеки, організовано публікацію інформації про тестування безпеки та гарантовано інтеграцію актуальних версій сторонніх бібліотек.

Джерело: opennet.ru


