Google недавно объявил о запуске новая версия языка программирования Dart 2.15, который продолжает развитие радикально переработанной ветки Dart 2. и это отличается от исходной версии языка Dart использованием строгой статической типизации (типы могут выводиться автоматически, поэтому указывать типы не требуется, но динамическая типизация больше не используется и изначально рассчитывается, тип присваивается переменная, а затем применяется строгая проверка типа).
В этой новой версии были реализованы различные улучшения и, прежде всего, введение некоторых новых функций, таких как изолированные группы, а также решения некоторых обнаруженных уязвимостей.
Основные новые функции Dart 2.15
В этой новой версии Dart 2.15 Предусмотрены инструменты для быстрого параллельного выполнения задач с изоляцией контроллера.
Кроме того в многоядерных системах время выполнения Дарт, по умолчанию, запускает код приложения на ядре ЦП и использует другие ядра для выполнения системных задач такие как асинхронный ввод-вывод, запись в файлы или выполнение сетевых вызовов.
Еще одна новинка, которую представляет Dart 2.15, - это новая концепция, изолированные группы, (выделить группы) предоставление общего доступа к различным внутренним структурам данных в изолятах, принадлежащих к одной группе, что может значительно снизить накладные расходы при общении с агентами в группе. Например, запуск дополнительной изоляции в существующем пуле выполняется в 100 раз быстрее и требует от 10 до 100 раз меньше памяти, чем запуск отдельной изоляции, что устраняет необходимость инициализации структур данных программы.
Несмотря на то, что в отдельных блоках в группе, общий доступ к изменяемым объектам по-прежнему запрещен, группы используют общую динамическую память, что значительно ускоряет перенос объектов из одного блока в другой без необходимости ресурсоемких операций копирования.
В новой версии также разрешено передавать результат работы контроллера при вызове Isolate.exit () передавать данные в основной блок изоляции без выполнения операций копирования. Кроме того, проведена оптимизация механизма передачи сообщений: небольшие и средние сообщения теперь обрабатываются примерно в 8 раз быстрее. Объекты, которые могут передаваться между изолятами с помощью вызова SendPort.send (), включают различные типы функций, замыканий и трассировок стека.
В инструментах для создания указателей к отдельным функциям в других объектах, сняты ограничения на создание таких указателей в коде конструктора, который может быть полезно при создании интерфейсов на базе библиотеки Флаттер.
Библиотека dart: в ядре улучшена поддержка перечисления, например, теперь вы можете сгенерировать строковое значение из каждого значения перечисления с помощью метода «.name», получить значения по имени или сопоставить пары значений.
Также подчеркивается, что реализован метод сжатия указателячто позволяет использовать более компактное представление указателей в 64-битных средах если для адресации достаточно 32-битного адресного пространства (используется не более 4 ГБ памяти). Тесты показали, что такая оптимизация уменьшает размер кучи примерно на 10%. В Flutter SDK новый режим уже включен для Android по умолчанию, и его планируется включить для iOS в следующем выпуске.
Также отмечается, что репозиторий pub.dev теперь имеет возможность отозвать уже опубликованную версию пакета, например, в случае опасных ошибок или уязвимостей.
Из другие изменения которые выделяются:
- Дополнительная защита от уязвимости (CVE-2021-22567), вызванной использованием символов Юникода, которые изменяют порядок отображения в коде.
- Исправлена уязвимость (CVE-2021-22568), которая могла выдавать себя за другого пользователя pub.dev при публикации пакетов на стороннем сервере, который принимает токены доступа oauth2 от pub.dev.
- Dart SDK включает инструменты для отладки и анализа производительности (DevTools), которые ранее поставлялись в отдельном пакете.
- К команде «dart pub» и репозиториям пакетов pub.dev были добавлены инструменты для отслеживания случайного раскрытия конфиденциальной информации, например, оставление учетных данных для систем непрерывной интеграции и облачных сред внутри пакета.
- Если такие утечки обнаружены, команда «dart pub publish» остановится с сообщением об ошибке. В случае ложной тревоги можно пропустить проверку через белый список.
источник: https://medium.com/