Доступен графический тулкит GTK 4.18

После шести месяцев разработки опубликован релиз многоплатформенного тулкита для создания графического интерфейса пользователя – GTK 4.18. GTK 4 развивается в рамках процесса разработки, который пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API, который можно использовать не опасаясь, что каждые полгода придётся переделывать приложения из-за изменения API в очередной ветке GTK.

Среди наиболее заметных улучшений в GTK 4.18:

  • Добавлен экспериментальный бэкенд, позволяющий запускать GTK-приложения на смартфонах с платформой Android. Реализована возможность использования OpenGL для отрисовки на платформе Android.
  • Объявлен устаревшим бэкенд для протокола X11, поддержку которого намерены прекратить в ветке GTK 5. Перевод в разряд устаревших объясняется прекращением активности по развитию протокола X11 и проблемами с сопровождающими – бэкенд поддерживается по остаточному принципу, так как имеющиеся разработчики GTK и GNOME сосредоточены на Wayland. Из-за стагнации в разработке бэкенда, он тормозит реализацию новых возможностей в GTK.
  • Объявлен устаревшим бэкенд Broadway, позволяющий отрисовывать вывод библиотеки GTK в окне web-браузера.
  • Объявлен устаревшим класс GtkShortcutsWindow, отображающий подсказку по клавиатурным комбинациям и экранным жестам. На смену GtkShortcutsWindow придёт виджет, поставляемый в libadwaita.
  • Удалён старый движок отрисовки “gl”, использующий OpenGL. Начиная с GTK 4.14 в состав входит новый движок “ngl”, построенный на одной кодовой базе с движком “vulkan” и реализующий дополнительный уровень абстракции для OpenGL, учитывающий различия между API OpenGL и Vulkan. Из ограничений движка “ngl” отмечается прекращение поддержки систем со старыми драйверами и устаревшим оборудованием.
  • Добавлен новый бэкенд AccessKit, обеспечивающий интеграцию со средствами для людей с ограниченными возможностями, в том числе на платформах Windows и macOS. В Linux по умолчанию применяется старый бэкенд at-spi, который продолжает развиваться.
  • При использовании Wayland улучшена работа с настройками xdg-порталов. Реализовано мгновенное переключение между темами оформления курсора. Улучшена обработка размера курсора. Решена проблема с некорректным масштабированием указателя мыши, проявлявшаяся в виде показа слишком крупных указателей на системах с Wayland при включении дробного масштабирования.
  • Улучшена поддержка Wayland-протокола color-management, предоставляющего возможности для управления цветом и поддержки расширенного динамического диапазона яркости (HDR, High Dynamic Range). При помощи расширения color-management клиентские приложения могут получать информацию о связанных с цветопередачей свойствах устройств вывода и передавать композитному серверу данные о свойствах цветопередачи собственного контента. Реализация протокола color-management пока не признана готовой к включению по умолчанию и для активации требует выставления переменной окружения “GDK_DEBUG=color-mgmt”.
  • Добавлена поддержка Wayland-протокола cursor-shape, реализующего альтернативный способ настройки внешнего вида курсора, основанный на передаче серии изображений курсора вместо привязки к поверхности (wl_surface).
  • Предоставлена возможность создания полностью модальных диалогов, реализуемых на стороне клиента.
  • Для редактируемых меток реализовано контекстное меню.
  • В виджете GtkVideo реализована поддержка повёрнутых видео.
  • В виджетах GtkText и GtkTextView обеспечена обработка кнопок для копирования/вставки в буфер обмена и операций Undo/Redo. Добавлена обработка кодировок символов в данных для буфера обмена.
  • В библиотеку GDK, предоставляющей прослойку между GTK и графической подсистемой, добавлена возможность извлечения информации о раскладке клавиатуры. Улучшено распараллеливание выполнения мелких задач. Добавлена возможность отключения многопоточных операций через выставление переменной окружения “GDK_DISABLE=threads”. Прекращена поддержка OpenGL ES 2 и версий OpenGL меньше 3.3.
  • В библиотеке GSK (GTK Scene Kit), предоставляющей возможности отрисовки графических сцен через OpenGL и Vulkan, добавлена поддержка интерполяции градиентов для различных состояний цветов. Повышена эффективность проверок при отрисовке объектов, скрытых за другими непрозрачными объектами или находящимися вне поля зрения. Расширено применение технологии Dmabuf. Разрешено применение программного рендеринга в качестве запасного варианта для API Vulkan. Оптимизированы настройки для Vulkan.
  • Улучшена отрисовка нового шрифта, задействованного по умолчанию в GNOME.
  • Обеспечена возможность использования дробного масштабирования на платформе macOS. Минимальные требования к платформе macOS повышены до версии 10.15.
  • Расширены возможности бэкенда для платформы Windows. Улучшена работа с буфером обмена в Windows. Минимальные требования к платформе повышены до Windows 10.
  • Повышены требования в минимальным версиям компонентов:
    GLib 2.80, harfbuzz 8.4, pango 1.55, meson 1.2, wayland 1.23 и wayland-protocols 1.41. Для сборки GTK теперь необходим компилятор с поддержкой стандарта C11.

Спустя два часа после выпуска GTK 4.18.0 сформировано корректирующее обновление 4.18.1, в котором устранена проблема в наборе тестов (забыли убрать привязку к экспериментальной ветке 4.17).

Release. Ссылка here.