🎯
Dart 2.14 🎯 忙しい人のためのアップデートまとめ (21/9/9)
はじめに
この記事は9月9日付のDart 2.14公式アナウンスのまとめです。
Flutter 2.5 はこちら
Dart ヤバイ
- RedMonkのプログラミング言語ランキングに初登場「驚くべき上昇」
https://redmonk.com/sogrady/2021/08/05/language-rankings-6-21/ - Stack Overflowの最新調査で開発者に愛される言語7位
https://insights.stackoverflow.com/survey/2021#technology-most-loved-dreaded-and-wanted
Null safety 順調
- 上位250のパッケージはすべてnull safetyサポート
- 上位1000の94%がサポート
- flutter runの実行を解析すると56%のプロジェクトが移行済み
Apple Silicon でのネイティブ実行サポート
- SDKにmacOS ARM64版が追加
- Flutter SDKにバンドルされているDart SDKではまだ対応していない
- コマンドラインツールの実行速度がかなり速くなるはず
Dart / Flutter の公式lintコレクション
- スタイルルールが多いので、場面ごとにどのルールを適用するのがおすすめか公式見解を出そうという趣旨
- pedanticが使われてきたがこれはGoogle内部で使われてきたもので一般のスタイルガイドともFlutterチームのものとも少し異なるので、今後は以下の3つを使ってね
- package:lints/core.yaml: Dartチームが考える理想のルール集。pub.devのスコアエンジンはpedanticの代わりにこれを基準にするように変更済み。
- package:lints/recommended.yaml: マストのルール、プラスアルファ。一般的なDart開発に最適。
-
package:flutter_lints/flutter.yaml: マストのルールにFlutter特有のルールなどを追加。Flutterのコードにおすすめ。
- Flutter 2.5 から flutter create 時に analysis_options.yaml が自動で生成され flutter_lints が dev_dependencies に追加されるようになります
- pedanticからの移行ガイドはこちら
カスケード記法周りのフォーマッター改善
- カスケード記法を含む場合のコードのフォーマット速度を大幅改善
- 以下のケースでdoIt()がbadにかかるのかfooとbadにかかるのかわかりづらかった(実際は両者にかかる)のでフォーマットを変更
BEFORE
var result = errorState ? foo : bad..doIt();
AFTER
var result = errorState ? foo : bad
..doIt();
- その他の変更はこちら
言語機能
- 右論理シフト演算子(>>>)が復活(昔あったみたい)
- 型引数に関数型のジェネリクスが使えるようになった
late List<T Function<T>(T)> idFunctions;
- アノテーションに型引数が使えるようになった
<int>(42, "The meaning")
公式パッケージ、コアライブラリ
- Objectクラスに静的メソッド hash, hashAll, hashAllUnordered が追加
- DateTimeクラスで30分シフトのDST(daylight saving time)地域の時間処理が正確に
- package:ffi, アリーナアロケーターを利用したメモリ管理に対応
- package:ffigen, C typedefからDart typedef の生成が可能に
pub.dev アップロード対象のコントロール
- pubコマンドで新しく .pubignore ファイルをサポート。pub.devにアップしたくないファイルやフォルダを指定できる。.gitignore と同じフォーマット。
- 詳細はこちら
dart test 周りのパフォーマンス
- dart testに無関係なpubspecへの変更をした際にもネイティブへの事前コンパイルがなされていたのを、バージョンが変わった時だけbuildが走るように
- 事前コンパイル自体の速度も改善
Discussion