I'm on the Dart team.
> when i look at the dart language itself compared to today's language (rust & swift for example) i feel a bit underwhelmed.
My personal opinion is that Dart right now is a very mature implementation of an OK language. The original language designers were very conservative in the design of the language. In their hearts, they really wanted to make another Smalltalk — a very minimal, dynamic, object-oriented scripting language. But they felt that to be successful, it needed to be painted in a veneer of Java-esque syntax and have some sort of static type system. I don't think the designers ever really loved either of those aspects.
This is a big part of why Dart's original type system was optional and an unsound. It was intended to be just enough types to satisfy people who want types, without cluttering up the VM implementation with concerns around static types. This made sense when the initial goal was to have a VM directly in the browser that ran Dart programs from source. When you run from source on the end user's machine, there isn't really a good time to run a static type checker.
A lot has changed since then:
* The initial designers have moved on to other things. Lars will tell you he's a "1.0 guy" and shepherding a long-running language committee isn't his thing. I think the projects they're working on now are much closer to their hearts. It's hard to do a great job on something you aren't personally enthused by, so this is good for everyone.
* We aren't trying to get the VM in Chrome. I think this is overall a good thing. It means that all execution paths for Dart involve a compiler running on the developer's machine.
These two pieces make it much easier to move Dart to be a modern, expressive, statically-typed language, which is much more inline with what users have been asking for. The biggest example of this is Dart 2, which replaced the old optional type system with a rich, sound static type system with generic methods and type inference.
We also have a really good (I think) language team that is excited to move the language forward and make users happy. We're working on non-nullable types. We're making collection literals more expressive with spread ("...") and control flow.
Now that we have a real static type system that's part of the language, it enables us to hang language semantics off the types. For example, we're adding set literals right now. Those use the same curly brace delimiters as map literals. That makes an empty set/map ("{}") ambiguous. Fortunately, we can rely on the surrounding type context to disambiguate in most cases. We couldn't do that in Dart 1. This also puts on the table features like extension methods that rely on the static type system.
So, my hope is that over time, we'll be able to catch up and get to a point where the language itself is really positively exciting for people. We have some work to do to get there, but I think we're moving in the right direction and faster than we have before.