| I don't want to be defending Rust but your post has so many misconceptions. May I ask where you got all that information and what your background is? > C++ at least has extern "C" going for it, which disables name mangling. Rust doesn't have that, nor does it have a stable ABI. Rust has #[no_mangle] and extern "C" and those two guarantee that ABI stability you're looking for. > Then furthermore, a vast amount of effort has been put into these tools over the last years to ensure that they run on any *nix and any architecture, and even so they can be ported with relative ease. That's actually a breeze in Rust, including cross-compilation (which is relatively painful in C/C++). > For example, how do you suggest implementing glibc in Rust? You might argue "why would we need the C standard library when we're porting things to Rust", and the answer is that if you want to make a move towards rust, having a C library (particularly the GNU one, a lot of software depends on GNU extensions) is of utmost importance until that goal has been achieved. There's work towards that: https://gitlab.redox-os.org/redox-os/relibc |
I am primarily a systems programmer and write software for the petroleum industry in my country. I work with C++ and in some (rare) cases C, and I've been doing that for the past 4 years. I have my own WIP hobby unix-like microkernel project written in C as well.
>Rust has #[no_mangle] and extern "C" and those two guarantee that ABI stability you're looking for.
I admittedly did not know this before it was pointed out to me.
>That's actually a breeze in Rust, including cross-compilation (which is relatively painful in C/C++).
It really isn't. Have you looked at rustc's compiler targets? It's not a very long list. Support is improving, but there's still a lot of key areas that are completely missing. To my knowledge it supports x86, ARM, MIPS and POWER. That's not a long list.
>There's work towards that: https://gitlab.redox-os.org/redox-os/relibc
That's good, and is genuinely what's necessary to put Rust in key components.