Google обновил Dart новой версией 2.1, которая имеет меньший размер кода, имеет более быстрые инструменты и предлагает более быструю проверку типов.
Dart изначально был создан как альтернатива JavaScript, которая будет поддерживаться непосредственно браузерами, а не компилироваться в JavaScript. Это никогда не прижилось, потому что, кроме Chrome, браузеры никогда не добавляли поддержку, и даже Chrome через некоторое время прекратил поддержку. Вместо этого Dart был переработан как лучший компилятор.
Когда Dart был выпущен в начале этого года, выяснилось, что переписанная версия по умолчанию строго типизирована, основана на классах и рассматривает функции как объекты. Майк Джеймс описал Dart 2 еще тогда, когда была показана бета — версия, как результат использования современного JavaScript — скажем, ES2015-и добавления к нему истинной системы иерархических типов, а также с возможностью использования в мире мобильных приложений.
Dart 2 также включал систему звукового типа. Другими словами, вы не можете создавать выражения, которые вычисляют значение, не соответствующее статическому типу выражения. Система типов Dart обеспечивает это с помощью комбинации статической проверки (ошибки во время компиляции) и проверок во время выполнения.
Однако, несмотря на проверку звука, новая версия включает поддержку преобразования int в double, чтобы избежать ошибок, вызванных тем, что выражение ожидает удвоения, но получает целое число.
В новой версии также улучшена поддержка миксинов. Они предоставляют способ повторного использования кода класса в нескольких иерархиях классов, и Dart 2.1 вводит новый синтаксис для миксинов с новым ключевым словом mixin, которое можно использовать для определения классов, которые могут использоваться только в качестве миксинов. Теперь они также могут расширять другие классы и вызывать методы в своем суперклассе.
Повышение производительности относится к конкретным группам разработчиков, в частности к разработчикам Flutter и веб-разработчикам. Flutter-это SDK для мобильных приложений Google, который можно использовать для создания собственных интерфейсов на iOS и Android. Он использует Dart в качестве своего языка, и обновленная версия была изменена таким образом, чтобы проверки, добавленные системой нового типа, больше не вызывали больших накладных расходов. Веб-разработчики также должны увидеть улучшение, поскольку размер кода и время компиляции для кода Dart, работающего в Интернете, были улучшены; команда разработчиков Dart говорит, что они увидели хорошие результаты, такие как сокращение на 17% размера уменьшенного вывода и улучшение времени компиляции на 15% в некоторых случаях.
Другие изменения в новой версии включают поддержку буферов протокола. Это нейтральный к языку и платформе способ сериализации структурированных данных. Этот механизм широко используется, поддерживается и широко используется в Google.
Еще одним улучшением является поддержка кода Dart на knative. Это платформа, основанная на Kubernetes, которая поддерживает создание, развертывание и управление бессерверными рабочими нагрузками. Команда Dart говорит, что они знают, что knative, вероятно, будет слишком низкоуровневым для большинства разработчиков приложений Dart, но считают, что это может стать важным строительным блоком для улучшения поддержки кода Dart в облаке Google в таких ситуациях, как создание бэкэндов для приложений Flutter.
Dart SDK 2.1 теперь доступен для загрузки с домашней страницы Dart, в то время как разработчики Flutter найдут его включенным в выпуск Flutter 1.0.