Nieuws voor ontwikkelaars

Het GNOME 2.14 ontwikkelaarsplatform biedt een stabiele basis voor onafhankelijke softwareontwikkelaars om toepassingen voor derden te creëren. GNOME en haar platform hebben een licentie waarbinnen zowel vrije als niet-vrije software gemaakt kan worden die op het GNOME-platform werkt.

Bibliotheekfuncties in het GNOME-platform zijn gegarandeerd API- en ABI-stabiel voor de gehele GNOME 2.x serie. Bibiotheekfuncties in de GNOME-desktop hebben die garantie niet, maar de meesten blijven consistent van versie tot versie.

3.1. GSlice

Vanaf GLib 2.10 vervangt de GSlice-allocator de verouderde GMemChunk en GTrashStacks APIs in GLib. GSlice lijkt erg op de slab-allocator in de kernel en kan snel en efficiënt geheugen toewijzen aan kleine structuren (bijv. GList-elementen, GtkWindow-structuren). GSlice heeft ook de 'locking overhead' van GMemCHunk niet waardoor het veel sneller is in multithreaded toepassingen.

Figuur 21Prestaties van de 'Memory allocator' voor het toewijzen en vrijmaken van 1 miljoen GList-elementen in 1 (rood), 5 (geel), 10 (groen) en 20 (blauw) threads.

GMemChunk is op een dusdanige manier geïmplementeerd dat het in feite GSlice gebruikt, maar GMemChunk-API wordt vanaf nu ontraden.

Om geheugen toe te wijzen met de GSlice allocator, gebruikt u g_slice_new (MyStructure);, dat een pointer (ptr) teruggeeft. Om geheugen vrij te maken dat met GSlice was toegewezen, gebruikt u g_slice_free (MyStructure, ptr);.

GSlice gebruikt een schaalbare, thread-local cache van slices met verschillende afmetingen. Voor grote geheugentoewijzingen zal GSlice transparant en automatisch de g_malloc-allocator gebruiken, dus ontwikkelaars hoeven niet zelf de meest efficiënte allocator te kiezen .

3.2. Registreren van services

In de meest recente GNOME kunnen ontwikkelaars nu aangeven dat hun toepassing automatisch moet worden opgestart wanneer GNOME opstart. Hiervoor hoeft alleen een .desktop-bestand te worden geïnstalleerd in $prefix/share/gnome/autostart/, /etc/xdg/autostart/ of ~/.config/autostart/. Wanneer u een service wilt installeren, maar deze standaard uit wilt zetten, kunt u de eigenschap X-GNOME-autostart-enabled = False toevoegen.

Hier zijn echter wel enkele voorwaarden aan verbonden:

  • Toepassingen die zichzelf op een andere wijze aanmelden bij het sessiebeheer (bijv. nautilus, gnome-panel, vino) moeten zichzelf niet nogmaals op deze wijze aanmelden.
  • Toepassingen die onder het sessiebeheer vallen worden niet netjes behandeld, dus zorg dat u wel de optie --sm-disable meegeeft op uw Exec-opdrachtregel.