GObject Introspection/GI 是 GNOME 的子計劃,是一個讓基於 GObject 的native library 能輕易 porting 到 script language 或高階語言。也就是提供binding。GI 透過定義一套描述語言,描述 native library 的 API 和 memory的 owner-ship。並提供一套工具和 library,可以 parse 這些描述,將之轉成binary 形式,方便 runtime 時使用。而 script language 或高階語言,可以透過這些 API 資訊,知道該 library 提供哪些 function,而其參數為何。因此,可以自動產生對應的 binding,讓 programmer 呼叫。
嚴格說來,GObject Introspection 並沒有什麼新意,它將 API 的資訊編釋成typelib,也就是 binary 格式,這其實和 Mozilla project 的 XPCOM 一樣。而GI 的 API 描述語言,會先轉成XML 格式,其實和 XPCOM、SOAP 或其它技術使用的 IDL 也差不多。比較特別的是,GI 把 owner-ship 帶入了描述語言。這一點,我在做 MadButterfly 的 nodejs plugin 時,用 M4 做了一套描述語言時,也曾試著要加入相同的東西。很高興, GI 已經有將這樣的功能設計進去。透過描述語言的描述, script language 能學會如何使用被描述的 lib