Компания Google представила выпуск языка программирования Dart 1.9. Dart позиционируется как язык структурированного программирования для Web, обладает похожим на Java синтаксисом, не требует явного определения типов и может использоваться для создания серверных и клиентских приложений. Для запуска внутри браузера код на языке Dart компилируется в представление JavaScript, для выполнения серверных приложений развивается специальная виртуальная машина Dart VM. Код связанных с языком компонентов распространяется под лицензией BSD.
Для упрощения разработки на языке Dart поставляется SDK, включающий в себя компилятор в JavaScript - dart2js, виртуальную машину Dart VM, пакетный менеджер pub, статический анализатор кода dart_analyzer, набор библиотек, интегрированная среда разработки Dart Editor и плагины с поддержкой Dart для IntelliJ IDEA, WebStorm, Eclipse, Emacs, Sublime Text 2 и Vim. Для выполнения и отладки приложений на языке Dart, без компиляции в JavaScript, предоставляется Dartium - специальная сборка браузера Chromium с интегрированной виртуальной машиной Dart VM. Дополнительные пакеты с библиотеками и утилитами распространяются через репозиторий pub, который насчитывает 1565 пакетов, в том числе фреймворки для разработки web-приложений AngularDart и polymer.dart.
Новый выпуск примечателен предоставлением удобных средств для асинхронного программирования, которое применимо для любых областей, включая организацию взаимодействия с пользователем, сетевые операции и файловый ввод/вывод. Для организации выполнения кода в асинхронном режиме представлены новые методы "async" и выражения "await", которые реализованы поверх Future API. Сложные асинхронные взаимодействия могут быть реализованы с использованием привычных приёмов управления потоком выполнения на основе циклов (for/while), условных операторов и исключений (try/catch).
Кроме того, в новом выпуске представлены синхронные и асинхронные генераторы sync* и async*, при помощи которых может быть упрощена генерация последовательностей без необходимости создания итераторов и без ручного управления созданием потока.
Другие новшества:
- Полноценная реализация перечисляемых типов (enum). Разработчику предоставлена возможность определения специальных классов, представляющих предопределённый набор фиксированных значений;
- Статический анализатор Dart Analyzer объединён с сервером Dart Analysis Server, что даёт возможность упростить интеграцию средств для анализа кода на языке Dart в сторонние интегрированные среды разработки, такие как IntelliJ и Sublime;
- В Dart VM обновлена реализация движка работы с регулярными выражениями. Новый движок в некоторых ситуациях работает до 150 раз быстрее, чем используемый ранее.
- В Dart VM полностью реализовано API Isolate, что упрощает создание приложений, при выполнении масштабируемых на несколько CPU.