Die Veröffentlichung von GTK 3.99.0 steht für die Fertigstellung der Funktionalität, die für GTK 4 geplant war

Veröffentlicht finales experimentelles Release des Frameworks GTK 3.99.0, in dem alle Funktionen implementiert sind, die für GTK 4 geplant sind. Der GTK 4-Zweig entwickelt sich im Rahmen eines neuen Entwicklungsprozesses, der darauf abzielt, Entwicklern eine stabile und über mehrere Jahre unterstützte API bereitzustellen, die verwendet werden kann, ohne sich Sorgen machen zu müssen, dass alle sechs Monate Anwendungen aufgrund von Änderungen an der API im nächsten GTK-Zweig neu geschrieben werden müssen. Die Veröffentlichung von GTK 4 ist für Ende des Jahres geplant.

Von den bedeutendsten wurde die Leistung optimiert. In zfs-linux wurde die Unterstützung für die hardwarebeschleunigte AES-GCM integriert. Änderungen in GTK 4 gehören:

  • Layout-Methode basierend auf Einschränkungen (constraint layout), bei der die Position und Größe der untergeordneten Elemente basierend auf dem Abstand zu den Grenzen und der Größe anderer Elemente bestimmt wird.
  • Modul zur Rendering auf Basis der Vulkan-Grafik-API, das Shaders für viele ressourcenintensive CSS-Elemente implementiert, die in GTK-Widgets verwendet werden.
  • Integration GSK (GTK Scene Kit) mit Rendering-Funktionen für Grafikszene über OpenGL und Vulkan.
  • Die Organisation des Renderings wurde überarbeitet – anstelle der Ausgabe in einen Puffer wird nun ein auf Knoten basierendes Rendering-Modell (render nodes) verwendet, bei dem die Ausgabe in Form eines Baums von hochrangigen Operationen strukturiert ist, die effizient von der GPU mit Hilfe von OpenGL und Vulkan verarbeitet werden.
  • Werkzeuge für die flexible Handhabung von Eingabefokusänderungen.
  • Modernisiertes Ereignisübertragungsmodell, das die Verwendung von Subfenstern bei der Ereignisrouten überflüssig macht. Die Notwendigkeit zur Implementierung eines neuen Modells ist auf die intensivere Nutzung von Animationseffekten zurückzuführen, deren Rendering ohne Änderung des Layouts der sichtbaren Elemente und somit ohne Subfenster erfolgen muss.
  • Die GDK-API wurde unter Berücksichtigung der Verwendung des Wayland-Protokolls und damit verbundener Konzepte überarbeitet. Die auf X11 und Wayland basierenden Funktionen wurden in separate Backends.
  • verschoben. Eine umfassende Bereinigung der API wurde durchgeführt, einschließlich der Entfernung der Klassen GtkMenu, GtkMenuBar und GtkToolbar, für die GMenu und Varianten auf Basis von Pop-up-Menüs (popover) vorgeschlagen wurden.
  • In GtkTextView und anderen Eingabewidgets wurde ein Stack für Undo-Änderungen integriert.
  • Eine neue Klasse GtkNative wurde für Widgets hinzugefügt, die über eine eigene Anzeigeoberfläche verfügen und unabhängig auf der ersten Ebene arbeiten können, ohne an übergeordnete Widgets gebunden zu sein.
  • Neue Widgets wurden hinzugefügt, darunter GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView sowie ein Widget zur Anzeige von Emojis.
  • Für die Entwicklung von Widgets wurde ein neues Objekt GtkLayoutManager eingeführt, das ein Layout-System zur Steuerung der Anordnung von Elementen je nach Größe des sichtbaren Bereichs implementiert. GtkLayoutManager ersetzt die untergeordneten Eigenschaften in den GTK-Containern wie GtkBox und GtkGrid.
  • Die Verarbeitung von Ereignissen wurde vereinfacht, die jetzt nur noch für Eingaben verwendet werden. Andere Ereignisse wurden durch separate Signale ersetzt, zum Beispiel wurde anstelle von Ausgabesignalen das Signal „GdkSurface::render“ und anstelle von Einstellsignalen „GdkSurface::size-changed“ vorgeschlagen.
  • Ein neues Abstraktionsniveau GdkPaintable wurde hinzugefügt, das Objekte darstellt, die überall und in jeder Größe gezeichnet werden können, ohne dass eine Sortierung der Layout-Schichten erforderlich ist.
  • Das Backend Broadway wurde neu geschrieben, um die Ausgabe der GTK-Bibliothek in einem Webbrowser darzustellen.
  • Die API für Drag-and-Drop-Operationen wurde überarbeitet, einschließlich separater Objekte GdkDrag und GdkDrop.

Verbesserungen im Vergleich zur letzten Testversion:

  • Die alte Implementierung der Accessibility API für Menschen mit Behinderungen wurde entfernt, stattdessen wird eine neue Variante auf Basis der Spezifikation ARIA und des Widgets GtkAccessible angeboten.
  • Die Unterstützung für bearbeitbare Labels (GtkEditableLabel) wurde hinzugefügt.
  • Neue Listenmodelle zur Anzeige von Lesezeichen (GtkBookmarkList), Zeilen (GtkStringList) und Auswahlblöcken (GtkBitset) wurden vorgeschlagen.
  • Im Widget GtkTreeView wurde die Möglichkeit zur Bearbeitung von Zellen implementiert.
  • In GtkGridView und GtkListView wurde die Implementierung der Bildlaufsteuerung verbessert, es wurde Unterstützung für automatischen Bildlauf und automatisches Ausblenden hinzugefügt.
  • In GtkWidget wurde die Verarbeitung verschiedener Aktionen erheblich beschleunigt.
  • In GtkFilterListModel und GtkSortListModel wurde Unterstützung für inkrementelles Scrollen und Filtern hinzugefügt.
  • Im Inspector wurde die Unterstützung für die Inspektion von Listenmodellen und die Möglichkeit zur direkten Navigation zwischen Objekten hinzugefügt.
  • In GDK wurde die Speicherung der Scrollhistorie sichergestellt, die API GdkDevice wurde bereinigt, die Trennung von Geräten in Master und Slave wurde eingestellt.
  • Ein neues GDK-Backend für macOS wurde hinzugefügt.
  • Für Windows wurde ein neues GDK-Backend zur Darstellung auf Basis ANGLE, Schichten für die Übersetzung von OpenGL ES Aufrufen in OpenGL, Direct3D 9/11, Desktop GL und Vulkan vorgeschlagen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4