Google desarrolló Dart con la idea de crear una alternativa a JavaScript, un lenguaje que pudiese ser soportado directamente por los navegadores en lugar de tener que ser eventualmente compilados a JavaScript. Esto, sin embargo, no parece haber tenido mucha aceptación porque fuera de Chrome, ningún navegador lo soportaba e incluso Chrome lo desechó por un tiempo. No obstante todos estos problemas, Dart fue re-inventado y se creó un mejor compilador.
Cuando Dart se liberó hace poco este mismo año, la versión re-escrita se reveló como fuertemente tipeada por omisión, basada en clases y tratando las funciones como objetos. Mike James dice que Dart 2 regresó a la vida cuando la beta se reveló como el resultado de tomar JavaScript moderno y añadiendo un tipo jerárquico verdadero, y con eso se tuvo una oportunidad para ser usado en el mundo de las apps, de los sistemas operativos móviles.
Dart 2 incluyó un sistema de tipos el cual en principio, evita crear expresiones que evalúen un valor que no cheque con el tipo estático de la expresión. Este sistema de tipos de Dart obliga a usar una combinación de verificación de chequeo estático (errores en tiempo de compilación) y verificación en el caso del módulo de tiempo de ejecución (runtime).
No obstante esto, la nueva versión incluye también soporte para las conversiones de enteros a dobles (int-to-double), lo que evita errores causados cuando una expresión espera un número doble precisión pero le llega un entero.
El lernguaje tiene otras mejoras, como mejor soporte para mixins, lo cual permite el re-usar el código de una clase en una jerarquía de múltiples clases. Dart 2.1 introduce de hecho una nueva sintaxis para mixins, con una nueva palabra clave «mixin»que puede ser usada para definir clases que solamente puedan ser usadas como mixins. Esto puede extenderse a otras clases y se pueden invocar métodos en su superclase.
Las mejoras en el desempeño se aplican a grupos específicos de desarrolladores, como en el caso de quienes trabajan con Flutter o desarrolladores web. Flutter es el SDK de apps móviles de Google, el cual puede ser usado para crear interfaces nativas en iOS y Android. Usan Dart como lenguaje de programación y en esta nueva versión la primera ventaja es que no causa un desempeño demasiado pesado (overhead) del sistema. Los desarrolladores web podrían ver mejoras en el tamaño del código y los tiempos de compilación de Dart. De acuerdo al equipo creador de Dart, hay una reducción de un 17% en la salida y 15% de mejora en el tiempo de compilación (en algunos casos, no todos),
Hay otros cambios, como el soporte a los buffers de protocolos, que significa un lenguaje neutral para una plataforma neutral para serializar datos estructurados. Este mecanismo ha sido adoptado ampliamente y lo usa mucho Google.
Dart SDK 2.1 está disponible de la página del lenguaje.