Dart обновился до версии 3.5. Мы получили улучшение совместимости с JS, стабилизацию новой модели взаимодействия Dart с JavaScript для веб-разработки, улучшение совместимости с нативом и другие фичи.
Flutter-команда Friflex делится тезисами из официального релиза Dart 3.5.
Веб-платформа и совместимость с JS
Появилась поддержка компиляции веб-приложений на Flutter в WebAssembly! Для нее необходима новая модель совместимости Dart с JS. Ранее она находилась в режиме предварительного просмотра. В Dart 3.5 она появилась в стабильной версии.
Обновились привязки к API браузера в пакете веб до версии 1.0. Они заменили устаревшую библиотеку dart:html.
Нативная совместимость Dart
В 3.5 улучшилась нативная совместимость, которая поддерживает прямые вызовы из Dart в C, Java, Kotlin, Objective-C и Swift. Совместимость с:
C обеспечивает библиотека FFI (Foreign Function Interface), которая поддерживается уже несколько лет. Подробнее об этом на Github.
Java и Kotlin обеспечивает генератор JNIgen, который сейчас находится в статусе предварительного просмотра. Больше деталей смотрите на Pub.dev.
Objective-C строится на базе FFI и нашего генератора FFIgen, который сейчас находится в статусе предварительного просмотра.
Стабильная версия взаимодействия Java и Kotlin с использованием JNIgen появится в течение двух кварталов. Такие же планы есть и по взаимодействию с Objective-C.
В следующих релизах появятся улучшения поддержки этих библиотек и Swift.
Репозиторий пакетов Pub.dev
Pub.dev — репозиторий пакетов, где сообщество делится и находит пакеты с разными функциональными возможностями. В репозитории появились новые функции.
Механизм, с помощью которого авторы могут помечать свои пакеты категориями, например, виджетами.
Команда pub unpack позволяет быстро загрузить пакет в файловую систему. Это может быть полезно, например, если нужно запустить пакет на своем локальном компьютере.
Команда pub downgrade —tighten позволяет проверять все ограничения версий в зависимостях пакета.
Производительность IDE и анализатора для крупных монорепозиториев
Монорепозиторий — это распространенный способ структурировать исходный код для набора связанных пакетов и приложений в одном репозитории, например, как в репозитории пакетов Flutter.
Благодаря обратной связи от сообщества стало известно о низкой производительности некоторых инструментов, в частности, анализатора. Было решено создать единое общее разрешение версий каждой зависимости в монорепозиториях. Для этого появилась функция под названием workspaces. В следующем релизе Dart будет больше подробностей. Узнать, как это работает сейчас, можно на Github.
Нативный interop и упаковка нативного исходного кода
Как упаковать и собрать нативный исходный код и не заставлять при этом пользователя пакета совершать много действий вручную? Для этого у авторов пакетов появилась система нативных ресурсов (native assets system).
Dart и макросы
Обновление макросов может привести к регрессиям в некоторых основных сценариях использования, например, в горячей перезагрузке. Следите за работой и над другими функциями языка.
В планах переписать форматер Dart. Старый дизайн хорошо работал многие годы, но пришло время для нового стиля. Он лучше подходит для декларативного кода, который часто пишут пользователи Flutter. Обновленный форматер появится в ближайшее время. Если вы хотите попробовать его, используйте экспериментальный флаг tall-style. Следуйте инструкции по флагам. И не забывайте про обратную связь.
Новые функции Dart 3.5 уже доступны для установки.
Источник: habr.com