Доступен язык программирования Dart 2.1

После трёх месяцев разработки представлен релиз языка программирования Dart 2.1, в котором продолжено развитие кардинально переработанной ветки Dart 2, переориентированной на разработку для Web и мобильных систем и оптимизированной для создания компонентов, выполняемых на стороне клиента.

Dart 2 отличается от изначального варианта языка Dart применением строгой статической типизации (типы могут выводиться автоматически, поэтому указание типов не является обязательным, но динамическая типизация больше не используется и вычисленный изначально тип закрепляется за переменной и в дальнейшем применяется строгая проверка типа). Для разработки Web-приложений предлагается набор специфичных библиотек, таких как dart: html, а также web-фреймворк Angular. Для создания мобильных приложений продвигается фреймворк Flutter, на основе которого в том числе построена пользовательская оболочка развиваемой в Google новой микроядерной операционной системы Fuchsia.

Особенности нового выпуска:

  • Обеспечена проверка типов на этапе компиляции (ранее проверка осуществлялась на этапе редактирования в IDE с использованием Dart Analyzer). Код проверки типов синхронизирован между компилятором и утилитой для анализа кода. Реализован вывод более ясных сообщений об ошибках, связанных с некорректным использованием типов;
  • Значительно ускорено выполнение проверки типов, как для компилируемого кода, так и для кода, выполняемого в виртуальной машине с JIT. Внесённые оптимизации позволили существенно ускорить работу инструментов для разработчиков. Например, время выполнения операции анализа кода крупного приложения, использующего фреймворк Flutter, уменьшилось с 41 до 25 секунд;
  • Повышена компактность генерируемого кода для Web. Размер кода выдаваемого транслятором dart2js в режиме минимизации вывода сокращён на 17%, а время компиляции сокращено на 15%;
  • Предложен новый синтаксис для «примесей» (mixin). Добавлено новое ключевое слово «mixin», которое можно использовать для определения классов, которые можно использовать только в виде примесей. Реализована возможность использования примесей для расширения других классов и вызова методов в образуемых примесями суперклассах;
  • Добавлена поддержка использования переменных с типом «int» в конструкциях с типом «double» (в подобных случаях int автоматически преобразуется в double). Например, переменные с типом «int» теперь можно использовать в качестве аргументов вызовов, определённых с типом «double»;
  • Добавлена официальная поддержка языка protobuf (Protocol buffers), используемого для сериализации структурированных данных.

© OpenNet