docs.rs/gir-parser/0.1.0/gir_p…
It is written in #Rust, but a C binding would be very easy to write.
I am really thinking if it could maybe at some point be used as the GIR parser for #Vala
Overall it looks very complete and straight forward, also it will be used in the Rust bindings generator, so it will probably be quite stable.