新しくなったこと 〜開発者向け〜

GNOME 2.14 開発プラットフォームは独立したソフトウェア開発者がサードパーティのアプリケーションを作成するための安定した基礎を提供します。GNOME とそのプラットフォームは GNOME の上で動作するフリー、商用両方のソフトウェアの作成を可能にする形でライセンスされています。

GNOME プラットフォームライブラリについては残りの GNOME 2.x リリースシリーズについて API、ABI 互換性を保証しています。GNOME デスクトップライブラリにはこの保証はありませんが、リリース間でほとんど一貫性が保たれるようになっています。

3.1. GSlice

GLib 2.10 では GSlice アロケータによって、GLib で利用可能な古い GMemChunk と GTrashStacks API を置き換えています。GSlice はカーネルのスラブアロケータに非常によく似ていて、高速で、小さな構造体 (例えば GList 要素や GtkWindow 構造体) についてメモリ 効率のよい領域確保が可能となっています。GSlice にはまた GMemChunk のロックによるオーバーヘッドはありませんし、それによってマルチスレッドアプリケーションにおいてより高速となっています。

図 21メモリアロケータで 1 万個の GList 要素を 1 (赤)、5 (黄)、10 (緑)、そして 20 (青) 個のスレッドで確保、開放したときのパフォーマンス

GMemChunk は透過的に GSlice を使うように再実装されましたが、その API は将来廃止されるものとみなされています。

GSlice アロケータでメモリ領域を確保するには、ポインタ (ptr) を返す g_slice_new (MyStructure); を呼びます。GSlice で確保したメモリ領域を開放するには関数 g_slice_free (MyStructure, ptr); を呼びます。

GSlice はスケール可能な、異なるサイズのスライスのスレッドローカルなキャッシュを使います。大きなメモリ領域については、GSlice は透過的かつ自動的に g_malloc アロケータを使うので、開発者が自身で最適なアロケータを選択する必要はありません。

3.2. サービス登録

最新の GNOME では開発者が自身のアプリケーションを GNOME 起動時に自動的に起動するように登録する方法を提供しています。これを行うには単に .desktop$prefix/share/gnome/autostart//etc/xdg/autostart/~/.config/autostart/ のいずれかにインストールするだけです。サービスをインストールし、しかしデフォルトでは無効にしておきたいのならプロパティに X-GNOME-autostart-enabled = False を追加します。

この方法でサービスを登録するにはいくつか注意が必要となります:

  • また、何らかの他の方法でセッションに自身を登録するアプリケーション (例えばnautilus、gnome-panel、vino) については、この方法で登録するべきではありません。
  • セッション管理下のアプリケーションはクリーンに処理されないでしょうから、Exec--sm-disable フラグを渡す必要があります。