I explore how I have eliminated nearly all void pointer casting from the libwayland/wlroots APIs in my Zig bindings without introducing overhead or significantly increasing complexity. This will include a demonstration of how Zig's compile time code execution features make such a task quite straightforward. I will then discuss the experience of updating river, my wayland compositor, to use the bindings over the auto-generated bindings provided by Zig's @cImport() feature.
Speakers: Isaac Freund