01.10.2020

Выпуск языка программирования Dart 2.8


Состоялся релиз языка программирования 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 и плагины с поддержкой Dart для IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 и Vim;
  • Дополнительные пакеты с библиотеками и утилитами распространяются через репозиторий pub, который насчитывает более 10 тысяч пакетов.

Источник: https://www.opennet.ru/opennews/art.shtml?num=52889

Добавить комментарий