ニュース

Google、「Dart 3.7」「Flutter 3.29」をリリース ~ワイルドカード変数などの新仕様

試験導入されていたマクロ機能はキャンセル

公式「Medium」におけるアナウンス

 米Googleは2月12日(現地時間)、「Dart 3.7」「Flutter 3.29」をリリースした。

Dart 3.7

 「Dart」は、Googleが主導で開発を進めているオープンソースのプログラミング言語。クロスプラットフォーム対応のUIツールキット「Flutter」の開発言語として根強い支持を集めている。

 最新の「Dart 3.7」では、言語機能としてワイルドカード変数が導入された。現行の「Dart」では、コールバックで使われないパラメーターには「_」という名前を付けるのが慣例だ。しかし、パラメーターが2つ以上ある場合「__」(アンダーバー2つ)や「___」(アンダーバー3つ)などと異なる名前を考える必要があった。ワイルドカード変数が導入されれば、これらはすべて「_」(アンダーバー1つ)でよくなる。これはパターンマッチングでの挙動に合わせた変更で、言語の一貫性が向上する。

コールバックで使われないパラメーターには「_」という名前を付けるのが慣例(上)だが、2番目以降のパラメーターでも「__」や「___」ではなく「_」が使える(中)。これはパターンマッチングでの挙動と同じ(下)

 この言語仕様の変更はパラメーターとローカル変数にのみ適用され、トップレベル変数やメンバーには適用されない。そのため、ユーザーコードで手直しが必要になる可能性はあるが、ライブラリのパブリックAPIが壊れることはない。

 そのほかにも、「Dart」のフォーマッターが書き直され、整形後の書式が“短い”スタイルから、引数をリスト形式で記述し最後にコンマを加えるスタイルへ改められた。これは「Flutter」が「Dart」を一種のマークアップ言語として用いるようになった結果、ここ数年間で「Dart」の記述方法が大きく変わった(宣言的な記述、深いネスト)ことを反映してのものだという。古いスタイルも当面の間維持されるが、「Dart 3.7」が十分に普及した暁にはサポートが廃止されるだろう。

古いフォーマッタースタイルと新しいフォーマッタースタイル

 そのほかにも「lint」の改善、WebAssembly互換APIへの移行に伴うレガシーAPIの廃止、パッケージサイト「pub.dev」のダークモード対応などが行われているという。

 一方で、試験導入されていたマクロ機能は、残念ながらキャンセルされた。

Flutter 3.29

 「Flutter 3.29」における変更は、ウィジェットの改善が中心。以下の点にも注意したい。

  • WebAssembly(WASM)対応に特別なHTTPレスポンスヘッダーが不要に
  • 「Vulkan」ドライバーのないAndroid環境では、「Skia」の代わりに「OpenGLES」上で動作する「Impeller」にフォールバックされるようになる(既定で有効)
  • 「Skia」のサポートがiOSバックエンドから削除。オプトアウトフラグは機能しなくなった。今後のリリースで「Skia」コンポーネントの削除が開始され、バイナリサイズがさらに削減される見込み
  • Android/iOSでスレッドの仕様が変更。従来はメインスレッド(Dart)とUIスレッド(Flutter)がわけられていたが、今後はいずれもメインスレッドで処理される。モバイルプラットフォームではシリアル化やメッセージの受け渡しのオーバーヘッドが大きかったため
  • Web HTMLレンダラーを削除