🌏
【要約】Dart macros開発作業中止に関して
概要
🤯
結論
作業中止の背景
- macrosを提供することにより、ホットリロードの最適化を阻害することが判明
- コンパイルコストが増大
- ホットリロードの即効性を維持することが困難になった
- macros以外にも優先すべき機能が複数存在している
macros以外に優先すべき投資事項
Dartのデータ処理強化
- 最も要望の多い課題
- マクロ導入もデータ処理やシリアル化向上が目的だった
- 今後よりカスタマイズされた言語機能を実現するために議論していく
ビルド時間とコード生成の改善
-
build_runner
の改善に取り組み、ビルド時間とコード生成の効率化を検討
- マクロの一部として提供していた
augmentations
機能を独立してリリース予定
期待
augmentations
要約
-
class / function / variables
などを複数のファイルに分散・拡張することが可能になる
例えば、以下のようにStatus
という列挙型の値と、getter property
を分散して記述することも可能になる(はず)
例(あくまで想像)
part 'status_augment.dart';
enum Status {
initialized,
loading,
success,
failure,
completed,
cancelled,
error,
timeout,
unknown,
}
part of 'status.dart';
augment enum Status {
bool get isSuccess => this == Status.success || this == Status.completed;
bool get isFailure => this == Status.failure || this == Status.error || this == Status.timeout;
}
Riverpod / Freezed
-
Dart macros
開発中止に伴いriverpod_generatorを今後どのようにアプローチするかを検討している模様(コード生成によるアプローチの見直し等)
まとめ
Dart macros
の開発中止は個人的には驚きましたが
よりDart
という言語をよくしていこうと言う試みかと思うので
dart_langチームには感謝と称賛を送りたいです。
今後の追加機能に期待していきたいと思います🙌
Discussion