The Nickle language bindings for Cairo, known variously as cairo-5c or cairo-nickle, include
Bindings for the whole cairo API, including all supported surface types
Special window system bindings which double buffer output and provide for input events. This uses gtk to provide the underlying window system abstraction.
A toolkit built entirely in Nickle.
Information about getting cairo-5c is available on bartforge.