Mojo avoids mistakes of C++, but does it avoid Rust’s “billion dollar mistake”? See below.
Not to me (and I see I’m not the only one opposing). Isn’t it static, i.e. like the Julia subset where you type all your functions? And since that’s not needed in Julia, then Julia is a superset of Mojo capabilities? Except Julia has GC (by default), and Mojo has a borrow checker (could such be added as an option-in for Julia?). The safety of Rust is that the borrow checker isn’t opt-in (important for concurrency), but since Mojo is like two languages in one, it’s opt-in there (only on for new Mojo code, not the legacy Python code).
However, Julia is as safe as Python; as safe as Rust actually for single-threaded code(?), with out the mental overhead of Rust.
See here on Rust’s mistake, and Rust’s glidesort:
I don’t believe Mojo reinvented Julia, i.e. Julia is still better, at least in most ways. Julia solved the two-language problem, while Mojo didn’t yet, it’s only on its roadmap. It only solved it with CPython making legacy Python code work, and PythonCall.jl also does that, with same semantics (only the syntax is different for the legacy (Python) code).