Neues für Entwickler

Die GNOME 2.14 Entwicklerplattform bietet eine stabile Basis für Software-Entwickler zur Programmierung dritter Anwendungen. GNOME und seine Plattform verwenden eine Lizenz die die Erstellung von sowohl freier als auch proprietärer Software auf Basis von GNOME erlaubt.

Bibliotheken der GNOME-Plattform sind während der gesamten GNOME 2.x Release-Serie garantiert API- und ABI-stabil. Bibliotheken des GNOME-Desktops haben nicht diese Garantie, die meisten bleiben jedoch trotzdem von Version zu Version konsistent.

3.1. GSlice

Mit der GLib 2.10 ersetzt der GSlice-Allocator die älteren GMemChunk- und GTrashStacks-APIs der GLib. GSlice ist dem slab-Allocator des Kernels sehr ähnlich und erlaubt die schnelle, speichereffiziente Zuordnung von kleinen Strukturen (bspw. GList-Elemente, GTkWindow-Strukturen). Weiterhin ist GSlice im Gegensatz zu GMemChunk frei von Locking-Overhead, wodurch es in Multithread-Anwendungen viel schneller ist.

Abbildung 21Performance der Speicherzuweisung beim Zuweisen und Freigeben von einer Million GList-Elementen in 1 (rot), 5 (gelb), 10 (grün) und 20 (blau) Threads.

GMemChunk wurde unter Verwendung von GSlice reimplementiert, von der Verwendung der GMemChunk-API wird jedoch nun abgeraten.

Um Speicher mit dem GSlice-Allocator zuzuweisen, wird die Funktion g_slice_new (MeineStruktur); verwendet, die einen Pointer (ptr) zurück gibt. Um zugewiesenen Speicher freizugeben wird die Funktion g_slice_free (MeineStruktur, ptr); verwendet.

GSlice benutzt einen skalierbaren, Thread-lokalen Zwischenspeicher von Slices unterschiedlicher Größe. Wird viel Speicher benötigt, so verwendet GSlice automatisch und transparent den g_malloc-Allocator, so dass sich Entwickler nicht um die Wahl des effizientesten Allocators kümmern müssen.

3.2. Registrierung von Diensten

Das aktuelle GNOME bietet Entwicklern nun die Möglichkeit, ihre Programme automatisch zu starten, wenn GNOME startet. Um dies zu erreichen muss lediglich eine .desktop-Datei in $prefix/share/gnome/autostart/, /etc/xdg/autostart/ oder ~/.config/autostart/ abgelegt werden. Um einen Dienst zu installieren, ihn aber standardmäßig deaktiviert zu lassen, kann die Eigenschaft X-GNOME-autostart-enabled = False gesetzt werden.

Einige Dinge müssen beim Registrieren von Diensten jedoch beachtet werden:

  • Anwendungen, die sich über andere Wege (bspw. nautilus, gnome-panel, vino) bei der Sitzung registrieren, sollten sich nicht zusätzlich auf diese Art registrieren.
  • Von der Sitzung verwaltete Anwendungen werden nicht sauber gehandhabt, so dass der Schalter --sm-disable in der Exec-Zeile gesetzt werden sollte.