The Dart SDK repository: what you get, and when you should not build it
The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.
At a glance
- What is it?
- The dart-lang/sdk repository holds the Dart VM, the dart2js and dartdevc web compilers, the analyzer, and the core libraries. This is a guide for engineers deciding whether to install the SDK or build it from source.
- Who is it for?
- Install the released SDK from dart.dev if you are writing Dart or Flutter applications; the repository is the wrong entry point for that. Build from source only if you are changing the VM, the compilers, the analyzer, or the core libraries, and read docs/Building.md before you start, because the DEPS file pins third-party revisions that the build fetches.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Dart, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- dart-lang/sdk11,346 ★ · +59
| Repository | 2026-09-22 | 2026-11-13 |
|---|---|---|
| dart-lang/sdk | 11.3k | 11.3k |
59 Stars in the last 52 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What the dart-lang/sdk repository actually contains
Dart is a strongly typed programming language with null safety and patterns, and this repository is where the implementation lives. The README describes Dart as approachable, portable, and productive, and lists the targets: compile to ARM, x64, or RISC-V machine code for mobile, desktop, and backend, or to JavaScript and WebAssembly for the web. The top-level layout confirms that scope rather than contradicting it. There is runtime/ for the VM, pkg/ for packages including the analyzer, tests/ for the test suites, benchmarks/, samples/, third_party/, and the build files BUILD.gn, sdk_args.gni, and DEPS.
The audience is narrower than the language's popularity suggests. Most people who write Dart never touch this repository: they install a released SDK and pull packages from pub.dev. The people who do work here are compiler and VM engineers, analyzer contributors, and maintainers of the core libraries. The README points contributors at the contribution guide (CONTRIBUTING.md) for details.
Two compiler pipelines under one repository
The mechanism the README describes is a split between Dart Native and Dart Web. Dart Native covers devices and servers, and contains two execution modes: a Dart VM with JIT compilation, and an AOT compiler that produces machine code ahead of time. Dart Web covers the browser, and splits again into dartdevc, described as the development-time compiler, and dart2js, described as the production-time compiler. That naming is worth reading closely. The development compiler trades output quality for iteration speed; the production compiler is the one you ship.
The consequence for anyone evaluating the repository is that a single source tree produces several distinct artifacts, and they do not fail in the same ways. A bug in the JIT path and a bug in dart2js are different problems in different directories. The repository has a tests/ directory and a samples/ directory with an ffi/ example and an embedder/ example. The embedder sample is relevant if you are hosting the VM inside another application.
Getting the SDK and running a first program
The README gives no installation commands. It says to visit dart.dev to learn about the language and tools, and to browse pub.dev for packages. So the install path is the released SDK from that site, not this repository. The README's own description of the workflow is hot reload for seeing changes instantly in a running app, and it points at DevTools for diagnosing app issues.
Because the repository contains no getting-started commands, there is nothing to copy here that would be accurate. What the README does document is where to read: dart.dev for the language tour, tools, and codelabs, pub.dev for community packages, and api.dart.dev for API reference documentation built from the stable release. The same site publishes documentation from the beta and dev channels and from the primary development branch.
That last URL is the documentation counterpart of the code in this repository. When you are tracking a change that has landed on main but has not shipped, the main-branch documentation is the version to read, because the stable documentation describes what users already have.
Building the SDK yourself is a different project
The README's building section does not contain steps. It links to docs/Building.md for getting the source, preparing the machine, and building, and notes that more documents live in the docs directory. Treat that as the real entry point. The presence of DEPS at the top level tells you why: the build pulls pinned third-party revisions, so a source build depends on network access and on those pins resolving, not just on a compiler being installed. sdk_args.gni and BUILD.gn are the build configuration surface.
This is where most readers should stop. Building the SDK gives you a toolchain you then have to maintain against a moving main branch. If your goal is to ship an app, a source build adds a failure mode, namely a locally built SDK that behaves differently from the released one, with no benefit. If your goal is to change the VM, the analyzer, or a core library, then a source build is the only option, and docs/Building.md is mandatory reading before you start.
Where the repository is the wrong tool
Three cases stand out. First, application development: the README routes you to dart.dev and pub.dev, and the repository offers no application-level getting-started material. Second, anything expecting a supported binary: the repository has no GitHub releases, and the README describes the SDK as built from source only through the building guide, so there is no artifact here to download. Third, a stable API surface: the README explicitly separates the stable documentation from the beta, dev, and main-branch documentation, which is an admission that the branch you are reading moves ahead of what ships.
There is also a scope question. The repository is large and mixed-language: Dart dominates, but the build files, the PRESUBMIT.py script, and the third_party directory show that a source checkout is not a Dart-only concern. Anyone expecting a self-contained Dart package to vendor into their own build is looking at the wrong artifact; pub.dev is where consumable packages live.
Alternatives and how they differ
The honest alternative is not another language but another distribution channel for the same language. Installing the released SDK from dart.dev gives you the same dart toolchain and the same core libraries without the DEPS fetch, the GN build, and the pinned third-party revisions. The difference is control versus cost: a source build lets you patch the VM or the analyzer and see the effect immediately, while the released SDK is a fixed point you can reason about.
A second alternative, for web targets specifically, is to consume the compiler output rather than the compiler. dart2js and dartdevc exist to turn Dart into JavaScript, and if your project is already JavaScript, you are the consumer of that output, not a user of this repository. The README's framing supports that reading: Dart Web is presented as a target for Dart programs, not as a toolkit for JavaScript projects. Choosing between these paths is really choosing whether you are a producer or a consumer of the toolchain.
Licence, patents, and the cost of staying current
Dart is free and open source under BSD-3-Clause, and the README points to LICENSE and to a separate PATENT_GRANT file. The patent grant is a distinct document from the licence, which is worth noting if your organisation reviews open source dependencies: a permissive licence and a patent grant are two separate approvals, and the README links them separately rather than folding one into the other. Redistribution terms are in those files; this is not legal advice, and the files are short enough to read directly.
Maintenance cost depends on which side you are on. If you consume the released SDK, upgrades come from dart.dev and the cost is testing your code against a new version. If you build from source, you own a build that tracks main, and the last push to this repository was on 2026-10-04, so main moves. The README's roadmap link goes to a combined Dart and Flutter roadmap on the Flutter wiki, which means the direction of the language is not described in the README itself. That is a real gap for anyone planning a long-lived fork.
Editorial conclusion
Install the released SDK from dart.dev if you are writing Dart or Flutter applications; the repository is the wrong entry point for that. Build from source only if you are changing the VM, the compilers, the analyzer, or the core libraries, and read docs/Building.md before you start, because the DEPS file pins third-party revisions that the build fetches. Verify the licence and patent terms in LICENSE and PATENT_GRANT before you redistribute anything you build.
Frequently asked questions
What is the Dart SDK used for?
It provides the language toolchain: a Dart VM with JIT and an AOT compiler for native targets, and the dartdevc and dart2js compilers for the web, plus the analyzer and core libraries. The README frames it as a way to build high-quality apps on any platform.
How do I download the Dart SDK?
The README does not host downloads; it directs readers to dart.dev to learn about the language and tools, and to pub.dev for packages. The repository itself is the source tree, built through the guide in docs/Building.md.
Is Dart faster than Python?
The README does not make performance comparisons against other languages. It describes compilation targets instead: machine code for ARM, x64, or RISC-V, and JavaScript or WebAssembly for the web.
Is Dart better than Kotlin?
The README does not compare Dart with Kotlin or any other language. It lists Dart's own properties, such as null safety and patterns, and its native and web compilation targets.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/dart-lang-sdk)Star history chart for your README
[](https://hysenlabs.com/projects/dart-lang-sdk)Was this useful?