It's time for a game engine in Rust. That should eliminate a lot of the mentioned bugs. But in case of Unity: why not use F#? ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-sK6BUkQE5U4.html
We tried using F#, but unfortunately a couple of things stand in the way: 1) how Unity links things with the .meta files. With F# you are forced to use .dll's, which then breaks scripts if you rename the class, for example. 2) F# relies on having a great garbage collector and isn't really great for low-level things, which are still required for game development. 3) The tooling (IDEs, debuggers) was abysmal compared to C#, at least at the time. Overall the principles in this course can be applied whether you use C# or F#. As for Rust, it's a nice systems programming language, but manual memory management is still a pain there. It's great for maximum performance, but the functional approach is very limited by the need to prove lifetimes and not having a garbage collector.