> Reputation for overcomplexity, loss of users. Becoming the next C++ or Haskell.
I think Rust is already there. It's a concern, but I'm not sure you can or should try too hard to avoid this.
What you can do is look to make simplifications as you add complexity.
And sometimes innovations can have simplifying effects. For example, the various "effects" libraries for Haskell simplify I/O code compared to not having them.
It's quite difficult to simplify an existing language, even when adding a feature could theoretically simplify a language. For instance, higher kinded types are simple in principle: it's just removing an arbitrary restriction about what you're allowed to pass to a type constructor. However, when adding them to an existing language it doesn't always work that way. In the limit of removing type system restrictions you end up with dependent types, which are very simple in terms of the number of type system rules that they require, but try adding them to Java and you'll get a monstrously complicated beast.
There is at least one language that evolves in the opposite direction. The philosophy of Oberon is that "Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away."
And sadly lost its opportunity to Java in the late 90's.
So whatever Wirth has done was quite of interesting in terms of language research for the language geeks among us, but hardly with any market relevance.
I think Rust is already there. It's a concern, but I'm not sure you can or should try too hard to avoid this.
What you can do is look to make simplifications as you add complexity.
And sometimes innovations can have simplifying effects. For example, the various "effects" libraries for Haskell simplify I/O code compared to not having them.