Last time I checked, most embedded development is done using C especially on low power devices.
A mix. Some is done in C. In part that's due to a lack of a good C++ compiler. AVRs and Arms support C++. My shitey little 8051 only supports C (lol IAR making class a synonym for struct does not a C++ compiler make), so I write in C.
However, many of the shitey 8051s are being superceded by ARMs. I'd love to switch, but we're about to enter production so it's not worth it now. The next version will use the ARM. It's lower power too, so better battery life, and possibly cheaper overall since it is more heavily integrated.
Not much competes with C in the embedded space.
Apart from C++, that's true.
I don't think the world is moving away from C, but I do think that C is in decline on the PC.
OK fair enough. C's in heavy decline everywhere except embedded and for some reason Linux userland apps. But hell, have you ever seen glib code? Holy fuck why would anyone ever subject themsleves to that, it's bloody mental. Imagine writing code in CPython exclusively. Madness.
With regard to C on the PC though... it's easier to work in other more forgiving languages at the expense of having slower code because modern machines are so fast very few people actually care that much about the overhead.
Forgiving? There's C++ which is precisely as fast in theory and in practice often faster, and supports vasty richer abstractions. And of course there's Rust. It has mostly the same machine model as C and C++, so one would expect it to reach the same speed soon. That will of course depend on the quality of the front (and middle?) end of the compiler, and the back end is shared with C and C++ compilers.
That's also not a hypothetical "java is 10x faster than before and THIS year it just edges out C++ (like every other year)" bullshit that you get. Rust's machine model allows exactly the same optimizations as C.
One of the design goals of Rust is to be as fast as C++.
We found out through painful experience that we don't want these people working in C because the damage they can do in it is very large and costly, compared to the damage they can do in something like Java where idiocy is much easier to detect early in a project.
Ain't that the case!