API and ABI Design Choices
Avoid Using varargs
A function with a variable number of arguments is not introspectable. Although the GObject Introspection Repository will contain a method or function that can be called with a variable number of arguments, the method or function will be marked as introspectable="0". This causes binding generators to ignore the method or function. In Vala this can be overridden using skip = false in the metadata, but such techniques are not available in all bindings.
Some useful links for further reading:
APIs, like diamonds, are forever - some criteria for good API design
Things to avoid - when writing bindable APIs for GObject Introspection
Minimalistic example of the GLib’s GBoxedType usage - explanation of basic types when used with GObject Introspection and how to bind structs