GTK 4.0 ya fue liberado y llega con mejoras para OpenGL y Vulkan y mas

diciembre 17, 2020 , 0 Comments

Después de cuatro años de desarrollo por fin se dio a conocer la liberación de la nueva rama de GTK 4.0, que se está desarrollando como parte de un nuevo proceso de desarrollo que intenta proporcionar a los desarrolladores de aplicaciones una API estable y compatible durante varios años, que se puede utilizar sin temor a tener que rehacer aplicaciones cada seis meses debido a los cambios de API en la próxima rama GTK.

La rama GTK 4 se ha declarado estable y se utilizará en la próxima versión de GNOME 4.0. Al mismo tiempo, se anunció que se suspendió el soporte para la rama GTK 2, en unos días para los cuales se planea publicar el último lanzamiento, mientras que el soporte para la rama GTK 3 continuará en el futuro previsible.

Principales novedades de GTK 4.0

De los cambios que se destacan de esta nueva rama, podremos encontrar que se implementó un método de diseño restringido, en el que la ubicación y el tamaño de los elementos secundarios se determinan en función de la distancia a los bordes y el tamaño de otros elementos.

Además de que se agregó un módulo de renderizado basado en la API de gráficos Vulkan, que implementa sombreadores para muchos elementos CSS que consumen muchos recursos y que se utilizan en los widgets GTK y se ha integrado GSK (GTK Escena Kit) con capacidades de renderización de gráficos de escena a través de OpenGL y Vulkan.

Se ha revisado la organización de la representación: en lugar de enviarla al búfer, ahora se utiliza un modelo basado en nodos de representación, en el que la salida se organiza en forma de un árbol de operaciones de alto nivel, procesada de manera eficiente por la GPU utilizando OpenGL y Vulkan.

También podremos ver que en GTK 4.0 se propone un modelo de entrega de eventos modernizado, que hace posible prescindir de una subventana al enrutar eventos de entrada. La necesidad de implementar un nuevo modelo está asociada con un uso más activo de los efectos de animación, que deben renderizarse sin cambiar el diseño de los elementos visibles y, en consecuencia, sin una subventana.

Se reformuló la API de GDK para aprovechar el protocolo Wayland y los conceptos relacionados. Las funciones relacionadas con X11 y Wayland se han movido a backends separados y se ha realizado una gran limpieza de la API, incluida la eliminación de las clases GtkMenu, GtkMenuBar y GtkToolbar, en lugar de las cuales se sugieren las opciones GMenu y popover.

Mientras que para el desarrollo de widgets, se presenta un nuevo objeto GtkLayoutManager con la implementación del sistema de control para la disposición de elementos en función del tamaño del área visible y que GtkLayoutManager ha reemplazado las propiedades secundarias en contenedores GTK como GtkBox y GtkGrid.

De los demás cambios que se destacan:

  • Se agregó una nueva clase GtkNative para widgets que tienen su propia superficie de visualización y pueden trabajar por separado en el primer nivel, sin estar vinculados a los widgets principales.
  • Se agregaron nuevos widgets que incluyen GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, así como un widget para mostrar Emoji.
  • Se ha agregado una nueva capa de abstracción, GdkPaintable, que representa objetos que se pueden dibujar en cualquier lugar y en cualquier tamaño, sin tener que ordenar las capas de diseño.
  • Se reescribió el backend de Broadway para permitir la representación de la salida de la biblioteca GTK en una ventana del navegador web.
  • La API relacionada con las operaciones de arrastrar y soltar se ha rediseñado, incluidos los objetos GdkDrag y GdkDrop separados propuestos.
  • Se eliminó la implementación anterior de la API de accesibilidad para personas con discapacidades y se propuso una nueva versión basada en la especificación ARIA y el widget GtkAccessible.
  • Se agregó soporte para etiquetas editables
  • El widget GtkTreeView implementa la capacidad de editar celdas.
  • Se agregó soporte para el desplazamiento y el filtrado incrementales a GtkFilterListModel y GtkSortListModel.
  • Se agregó un nuevo backend GDK para macOS.
    GtkTextView y otros widgets de entrada tienen una pila de deshacer incorporada.
  • Para Windows, se ofrece un nuevo backend de renderizado GDK basado en ANGLE , una capa intermedia para traducir llamadas de OpenGL ES a OpenGL, Direct3D 9/11, Desktop GL y Vulkan.

Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.