How about winapi and co.? @retep998 has, by and large, taken it upon himself to try and bind the Windows API using the sadistically horrible official windows.h header. By hand.

Having chipped away at the surface myself, let me tell you some of the horrors I’ve seen. windows.h contains sub-headers that implicitly depend on other headers having been imported in a particular order. Get the order wrong, and the definitions change. This makes isolating anything, let alone defining where it canonically is supposed to come from a Sisyphean task. It contains symbols that are deliberately defined multiple times. Sometimes, with different types. Sometimes, with different values. Because windows.h was written by shambling horrors from beyond time and space. That’s not even touching the titanic, C’thuloid mass of brain-twisting agony that is the conditional compilation definitions and annotations sprinkled throughout like some kind of virulent pox. There are obscure conditional flags that change or omit functions based on bizarre edge cases buried in some obscure file which is included three different ways by paths so obtuse you could make a credible argument for a satellite map of the damn thing except it’d have to be a six dimensional monstrosity that would drive you mad just from looking at it. Then there’s the vast tracts of API surface that are exposed via COM which Rust does absolutely jack toward making in any way usable so you have to write the damn vtables by hand and heaven help you if you run into an interface with multiple base interfaces because at that point you might as well give up and just use C because at least that has an IDL generator for it. That’s even before you realise that LLVM’s code generation isn’t even correct on Windows, and this whole time, it’s been silently generating bad code for stdcall methods which you’d think would be just like functions but nooo that’s now how Visual C++ works, so methods with particular return types are incompatible at the binary level, unless you know about this and manually correct for it by fudging the type signatures in the Rust binding code and really it’s no wonder he’s a rabbit because a human would have been driven so deep into madness they’d need be halfway to the Earth’s firey core.

To put it another way: I think it’d be kinda nice to give him a proverbial pat on the back for his herculean efforts thus far.