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
  docgen         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).

util/            Support files for dart_analyzer and pub.
