I would have thought that invoking a C compiler would be a solved problem. Looking at Rust's cc crate there's a remarkable long tail of corner cases to fix. Exotic CPUs, microarchitectures, compiler differences, operating system differences, etc. https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md