A More Stable Dart M1

Happy Birthday Dart!

Today the Dart project announced the availability of Dart M1, our first release since the initial technology preview launch almost a year ago. Hurray!


To me, Dart M1 is a signal to developers that the project is stabilizing, and we encourage you to start building libraries and projects. The project isn't yet at 1.0, but this new M1 release contains many more platform features and language updates based on feedback we've received from the community. Now is a very good time to try Dart.

More stable language

The M1 launch signals that the Dart team is more comfortable with the language and is more confident that the days of fast-paced breaking changes are over. Based on feedback from users and the community, the Dart language evolved from its initial release.

As Gilad Bracha, the Dart language spec lead, says, "My favorite part was deleting parts out of the spec." In other words, we added features but we also removed features. You can read more about the numerous Dart M1 language changes.

Continued language evolution

The language will continue to evolve. For example, we plan to add mixins to help with with code reuse. Dart M1 is a signal that the language is more stable, and that we intend to avoid backwards breaking changes, but we'll continue to innovate.

Dart-JavaScript interop

One of the most requested features was for Dart to interopate with existing JavaScript code. We're happy to release the open-source JS-interop library. You'll find examples for Google Maps, Twitter, and more.

Faster Dart VM

Dart compiles to JavaScript to run across modern desktop and mobile browsers. We're also building a new Dart virtual machine that runs Dart code natively. The Dart VM is built for speed. For example, the "snapshots" feature of the VM can speed up application startup by 10X. The Dart VM is also performing better than V8 on a few benchmarks. We're not faster on everything, but the team is pleased with their progress so far.


The above chart illustrates the startup characteristics of dart2js, our Dart to JavaScript compiler, with and without snapshots.


Pub package manager

Building new Dart libraries is fun, but it's more fun to get those libraries out into the wild for others to use. Use pub, the Dart package manager, to discover, install, and manage packages. Pub makes packages available to Dart's import system.

We're not done

The M1 release is the first milestone, and the project is firmly on the train towards a 1.0 release. There's more work to do. For instance, libraries will continue to evolve thanks to mixins, the I/O libraries for server apps will grow, the VM team continues their work on performance, and our work on Web Components continues.

Joining our community

We really appreciate the feedback we've received thus far, and we look forward to what the community will build with a more capable and stable platform. Please join the Dart mailing list, file bugs and feature requests at dartbug.com, and ask questions at Stack Overflow.

Popular posts from this blog

Lists and arrays in Dart

Converting Array to List in Scala

Null-aware operators in Dart