Анонс Dart 3.4

от автора

Анонс Dart 3.4

Анонс Dart 3.4

Dart 3.4 вышел сегодня! Этот релиз демонстрирует совместные усилия Dart и Flutter в посте Flutter 3.22 / Dart 3.4 / IO24, так что обязательно ознакомьтесь с полной информацией там. В этом посте мы расскажем о поддержке WebAssembly, а затем подробно остановимся на одном из основных пунктов дорожной карты для языка Dart на этот год: макросы.

Обновления WebAssembly

Сегодня мы рады сообщить, что полная поддержка WebAssembly (Wasm) стала доступна для веб-приложений Flutter в последнем стабильном выпуске Flutter 3.22!

Это многолетние инвестиции в Dart & Flutter. Если вы следили за развитием событий, то видели, как мы постепенно развиваемся:

  • Стандартизация WasmGC,

  • Добавление совершенно нового бэкенда компилятора Dart для генерации кода WasmGC, а также

  • Пересмотр наших предположений по взаимодействию с web и JavaScript для наилучшей поддержки Wasm.

Мы будем продолжать развивать WebAssembly. Наши следующие усилия позволят обеспечить полную поддержку Wasm в приложениях на чистом Dart, а также завершить некоторые недостающие функции (например, отложенную загрузку). Комплексный инструментарий для компиляции Wasm в Dart все еще находится в разработке, но вы можете попробовать предварительную версию в стабильном режиме уже сейчас, выполнив некоторые временные шаги. В дальнейшем мы также надеемся поддерживать Wasm в Dart за пределами JS-окружения, например, в стандартных системах выполнения Wasm, таких как wasmtime и wasmer.

Макросы Dart: повышение уровня абстракции разработки

Мы потратили много лет на разработку системы макросов Dart. Чтобы улучшить опыт разработки в Dart, макросы предоставляют решение для метапрограммирования, подобное генерации кода. Это решение встроено в язык Dart, чтобы обеспечить разработчикам максимальную производительность, эффективность и продуктивность. Теперь мы готовы предложить предварительный просмотр этого опыта!

Долгое время болевой точкой для разработчиков Dart была тривиальная, но утомительная схема сериализации и десериализации JSON-данных. Создание многократно используемого и достаточно мощного решения является сложной задачей в Dart, поскольку он не поддерживает рефлексию во время выполнения по соображениям производительности. В качестве альтернативы мы прибегаем к решениям по генерации кода, таким как JsonSerializable. Они зависят от внешних инструментов, которые запускаются перед самим кодом, что усложняет работу разработчика.

Сегодня мы анонсируем предварительную версию радикально нового подхода к сериализации и десериализации JSON: макроса JsonCodable.

Макрос — это тип кода, который генерирует дополнительный код путем интроспекции другого кода во время компиляции. Например, вот Dart-класс Vehicle с новым макросом JsonCodable:

@JsonCodable() class Vehicle {   final String description;   final int wheels;   Vehicle(this.description, this.wheels); }  void main() {   final jsonString = Vehicle('bicycle', 2).toJson();   print('Vehicle serialized: $jsonString'); }

Итак, как это работает? Откуда взялся метод toJson() (и сопутствующий ему конструктор fromJson())? Это экспериментальная реализация нашей новой системы макросов, призванной упростить работу разработчиков. Когда компилятор Dart видит аннотацию @JsonCodable(), он немедленно находит определение макроса JsonCodable в реальном времени и начинает его выполнять. Вот как работает макрос:

  1. Создайте новый «Скринкаст, демонстрирующий опыт использования макроса: изначально автодополнения кода toJson не существует, но после добавления @JsonCodable в класс, автодополнение toJson появляется сразу.

    Долгосрочные цели по макросам

    Конечная цель — дать сообществу возможность создавать свои собственные макросы. Это повышает уровень абстракции программирования на Dart. Возьмем, к примеру, дата-классы — самый популярный запрос для языка Dart. Мы рассмотрели возможность добавления встроенной поддержки дата-классов в Dart, но узнали, что мнения о том, что именно должна поддерживать такая конструкция, чтобы установить стандарт, сильно разнятся. Должны ли поля быть о системе макросов Dart, и попробовать предварительную версию макроса JsonCodable уже сегодня.

    Другие улучшения

    Как всегда, этот выпуск содержит все непрерывные разработки, которые направлены на создание лучшей версии Dart из возможных. В этом выпуске мы внесли следующие улучшения:

    • Решено более 50% ошибок автодополнения кода анализатора. (Пожалуйста, продолжайте сообщать о проблемах!)

    • Улучшено согласование анализа типов условных выражений, выражений if-null и выражений switch со спецификацией языка (журнал изменений).

    • Удалены неполные и непоследовательные инструменты из библиотеки dart:cli для погашения технического долга в Dart VM.

    • Устранено несколько недостатков для улучшения новой библиотеки dart:js_interop.

    Загляните в Changelog, чтобы узнать всю историю! Не забудьте прочитать совместную запись в блоге Dart и Flutter, посвященную этому релизу, чтобы получить полную информацию о наших совместных усилиях!

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Мы ждём стабильнейшие макросы в стабильной версии до конца этого года? 🙂

94.44% Да, уже устал от рутины создания дата-классов и всего такого17
0% Нет, отлично справляюсь с помощью а-ля freezed0
5.56% У меня всё хорошо, генерирую тулзами из IDE (●’◡’●)1

Проголосовали 18 пользователей. Воздержались 5 пользователей.

ссылка на оригинал статьи https://habr.com/ru/articles/814411/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *