> Implementing a complete C ABI (with struct arguments and returns) is incredibly tricky, and not really a lot of fun.
This is so true. Rust does it here: https://github.com/rust-lang/rust/tree/master/compiler/rustc... and it's a lot of code for no good reasons.