GObject introspection is a middleware layer between C libraries (using GObject) and language bindings. The C library can be scanned at compile time and generate metadata files, in addition to the actual native C library. Then language bindings can read this metadata and automatically provide bindings to call into the C library.
The GI project consists of:
an XML format called GIR containing introspection information in a machine parseable format
a Python package to create and parse the GIR format
a scanner to generate GIR format from C source and headers
a typelib similar to xpcom/msole which stores the information on disk in a binary format
a compiler to compile the typelib from a xml format (and vice versa)
C library to read the typelib, libgirepository.
Getting the code
The latest stable release is available from https://download.gnome.org/sources/gobject-introspection
GObject Introspection is stored in git and can be fetched:
git clone https://gitlab.gnome.org/GNOME/gobject-introspection.git
You can browse the repository online here.
For questions or additional information, please use:
IRC: #introspection on irc.gnome.org