Of course they do. That's why Rust has a sophisticated tool, bindgen, which is used in production right now in Nightly Firefox (among other places) to export complex C++ interfaces in both directions across the language boundary.
> And I was also referring to the similar issue in Go where calling C -> Go and Go -> C isn't symmetrical. Not sure if that's true for Rust or not.
It's not. You just write "#[no_mangle] extern" on your function Rust and C can easily call it, with a stable ABI.
In order to meaningfully criticize Rust's FFI, you need to be aware of how it works.
Of course they do. That's why Rust has a sophisticated tool, bindgen, which is used in production right now in Nightly Firefox (among other places) to export complex C++ interfaces in both directions across the language boundary.
> And I was also referring to the similar issue in Go where calling C -> Go and Go -> C isn't symmetrical. Not sure if that's true for Rust or not.
It's not. You just write "#[no_mangle] extern" on your function Rust and C can easily call it, with a stable ABI.
In order to meaningfully criticize Rust's FFI, you need to be aware of how it works.