The Dart SDK is a set of tools and libraries for the Dart programming language.

You can find information about Dart online at dartlang.org.

Here's a brief guide to what's in here:

bin/             Binaries/scripts to compile, run, and manage Dart applications.
  dart           Dart virtual machine
  dart2js        Dart-to-JavaScript compiler
  dartanalyzer   Dart static analyzer
  dartdoc        Dart documentation generator
  pub            Pub, the Dart package manager
  dartfmt        Dart code formatter

lib/             Libraries that are shipped with the Dart runtime. More
                 information is available at api.dartlang.org.

packages/        Additional packages that are shipped outside of the Dart
                 runtime. More information is available at api.dartlang.org.

version          The version number of the SDK (ex. 1.5.1).

revision         The Subversion revision of the SDK build (ex. 37107).
