## gobject-introspection

The C source code to libvips has been marked up with special comments describing the interface in a standard way. These comments are read by the `gobject-introspection` package when libvips is compiled and used to generate a typelib, a description of how to call the library. Many languages have gobject-introspection packages: all you need to do to call libvips from your favorite language is to start g-o-i, load the libvips typelib, and you should have the whole library available. For example, from Python it’s as simple as:

    from gi.repository import Vips

You can now use all of the libvips introspection machinery, as noted above.

Unfortunately g-o-i has some strong disadvantages. It is not very portable, since you will need a g-o-i layer for whatever platform you are targetting; it does not cross-compile well, since typelibs include a lot of very-low level data (such as exact structure layouts); and installation for your users is likely to be tricky.

If you have a choice, I would recommend simply using FFI.