Выпуск языка программирования Dart 2.8
10 мая 2020 года
Состоялся релиз языка программирования Dart 2.8, в котором продолжено развитие кардинально переработанной ветки Dart 2, переориентированной на разработку для Web и мобильных систем и оптимизированной для создания компонентов, выполняемых на стороне клиента.
Dart 2 отличается от изначального варианта языка Dart применением сильной статической типизации (типы могут выводиться автоматически, поэтому указание типов не является обязательным, но динамическая типизация больше не используется и вычисленный изначально тип закрепляется за переменной и в дальнейшем применяется строгая проверка типа). Для разработки Web-приложений предлагается набор специфичных библиотек, таких как dart:html, а также web-фреймворк Angular. Для создания мобильных приложений продвигается фреймворк Flutter, на основе которого в том числе построена пользовательская оболочка развиваемой в Google новой микроядерной операционной системы Fuchsia.
В новом выпуске:
- Добавлены средства для безопасного использования значения "Null", нарушающие обратную совместимость. Например, на этапе компиляции теперь будет выводиться ошибка в случае попытки присвоения значения "Null" переменной с типом, не подразумевающим неопределённое состояние, таким как "int". Также введены ограничения по совместимости переменных с типами, допускающими Null и нет, такими как "int?" и "int" (переменной с типом "int? может быть присвоена переменная с типом "int", но не наоборот). Тоже касается и переменных, возвращаемых в операторе "return" - если в теле функции переменной с типом, не допускающим состояние "Null", не присвоено значение, компилятор выведет ошибку. Указанные изменения позволят избежать крахов, вызванных попытками использования переменных, значение которых не определено и выставлено в "Null".
- Репозиторий pub.dev преодолел отметку в 10 тысяч пакетов. В рамках цикла подготовки Dart 2.8 существенно увеличена производительность получения пакетов из pub.dev за счёт поддержки извлечения пакетов в несколько параллельных потоков при выполнении команды "pub get", а также благодаря отложенной предкомпиляции при выполнении команды "pub run". Тестирование команды "pub get" для нового проекта на базе Flutter показало снижение времени выполнения операции с 6.5 до 2.5 секунд, а для более крупных приложений, таких как Flutter gallery, с 15 до 3 секунд.
- Добавлена новая команда "pub outdated" для поддержания в актуальном состоянии всех зависимостей к установленным пакетам. При помощи команды "pub outdated" можно без внесения изменений в файл pubspec оценить наличие более новых значительных версий для всех зависимостей, связанных с указанным пакетом. В отличие от "pub upgrade" новая команда выполняет проверку не только версий, соответствующих pubspec, но и более новых веток. Например, для пакета с закреплёнными зависимостями "foo: ^1.3.0" и "bar: ^2.0.0" запуск "pub outdated" покажет наличие как доступных для обновления, так и более новых веток:
Dependencies Current Upgradable Resolvable Latest foo 1.3.0 1.3.1 1.3.1 1.3.1 bar 2.0.1 2.1.0 3.0.3 3.0.3
Особенности языка Dart:
- Привычный и простой для изучения синтаксис, естественный для программистов на JavaScript, Си и Java.
- Обеспечение быстрого запуска и высокой производительности для всех современных web-браузеров и различных типов окружений, от портативных устройств до мощных серверов;
- Возможность определения классов и интерфейсов, позволяющих использовать инкапсуляцию и повторно использовать существующие методы и данные;
- Указание типов позволяет упростить отладку и выявление ошибок, делает код более ясным и читаемым, упрощает его доработку и анализ сторонними разработчиками.
- Среди поддерживаемых типов: различные виды хэшей, массивов и списков, очереди, числовые и строковые типы, типы для определения даты и времени, регулярные выражения (RegExp). Имеется возможность создания своих типов;
- Для организации параллельного выполнения предлагается использовать классы с атрибутом isolate, код которых выполняется полностью в изолированном пространстве в отдельной области памяти, взаимодействуя с основным процессом через отправку сообщений;
- Поддержка использования библиотек, упрощающих поддержку и отладку больших web-проектов. Сторонние реализации функций могут подключаться в виде разделяемых библиотек. Приложения можно разбить на части и поручить разработку каждой из частей отдельной команде программистов;
- Набор готовых инструментов для поддержки разработки на языке Dart, включая реализацию средств динамической разработки и отладки с исправлением кода на лету ("edit-and-continue");
- Для упрощения разработки на языке Dart поставляется SDK, пакетный менеджер pub, статический анализатор кода dart_analyzer, набор библиотек, интегрированная среда разработки DartPad (Архивная копия от 8 ноября 2020 на Wayback Machine) и плагины с поддержкой Dart для IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 и Vim;
- Дополнительные пакеты с библиотеками и утилитами распространяются через репозиторий pub, который насчитывает более 10 тысяч пакетов.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.