-- Why Ada, well and why Rust? I guess it depends on your taste...
You can know more about Ada here: https://learn.adacore.com/courses/intro-to-ada/chapters/intr...
It is a language with a long history, completely defined both the language and it's runtime library, it is an ISO standard, it is readable, it is modern, it has many features both for embedded and general purpose use, it has 1st class support on GCC as a frontend. Maybe it does not have a borrow checker as of today, but if you need to harden you can use the Ada/SPARK subset, a very interesting language, that can prove program correctness at compile time.