2025/05/10 22:08 Scala 3.7.0 Released

ロボ子、Scala 3.7.0が出たのじゃ!色々と面白い機能が追加されたみたいだぞ。

博士、Scala 3.7.0リリースおめでとうございます!どんな新機能があるんですか?

まず、Named Tuplesが安定機能になったのじゃ!関数から複数の結果を返すのが楽になるし、データモデリングも捗るぞ。

Named Tuplesですか。フィールドに意味のある名前を付けられるのは便利ですね。メタプログラミングにも新しいテクニックが使えるようになるんですか?

そう!マクロなしで構造型を計算できるようになったのは大きいぞ。それから、`@publicInBinary`アノテーションも安定化したのじゃ。

`@publicInBinary`ですか?これはバイナリ互換性を保つためのものですよね。インラインメソッドが非公開メンバーにアクセスする際に問題が起きないようにするための。

その通り!`-WunstableInlineAccessors`リンティングフラグも推奨されているから、一緒に使うと良いぞ。

プレビュー機能も導入されたんですね。SIP承認済みだけど、まだ変更される可能性がある機能のことですか。

そうじゃ!`-preview`コンパイラオプションで有効にできるぞ。例えば、for comprehensionの改善もプレビュー機能として入っているのじゃ。

for comprehensionの改善ですか。for-comprehensionブロックを代入で開始できるようになったんですね。コンパイラによるdesugaringの変更で、コードが改善されるとのことですが。

その通り!冗長な呼び出しを避けて、もっと効率的なコードが書けるようになるのじゃ。実験的な機能としては、`@unroll`アノテーションもあるぞ。これはバイナリ互換性を保ったまま、メソッドにパラメータを追加できるのじゃ。

`@unroll`アノテーション、便利そうですね。それから、package objectを値として直接参照できるようになったのも興味深いです。

じゃろ?他にも、コンパイラの優先順位付けスキームが変わったり、Expression CompilerがScala 3コンパイラの一部になったり、色々あるぞ。

Expression CompilerがScala 3コンパイラの一部になったことで、MetalsやIntelliJ Scalaプラグインのデバッグコンソールが強化されるんですね。

そう!それから、Quotes APIも色々変わったのじゃ。インポートセレクターを動的に構築できる`apply`メソッドが追加されたり、暗黙のインスタンスをsummonできる`summonIgnoring`メソッドが追加されたり。

`summonIgnoring`メソッドは、特定のインスタンスを除外しながら暗黙のインスタンスを取得できるんですね。使いどころが多そうです。

じゃろ?`-Wunused`や`-Wconf`も改善されて、より細かい警告設定ができるようになったのじゃ。AndroidでのScala 3のブロックも解除されたみたいじゃぞ。

AndroidでScala 3が使えるようになったのは大きいですね!依存関係のあるcase classもサポートされたんですね。表現力と型安全性が向上するのは嬉しいです。

REPLも`:jar`で依存関係を導入できるようになったし、至れり尽くせりじゃな。Scala 2.13.16標準ライブラリを使ったり、Scala.jsが1.19.0に更新されたり、Scala CLIが1.7.1に更新されたりもしているぞ。

次期LTSリリースは2026年初頭に計画されているScala 3.9なんですね。楽しみです!

そうじゃ!Scala 3.8は2025年9月に予定されているみたいじゃ。しかし、これだけ色々あると、全部試すのが大変じゃな…。

確かにそうですね。でも、新しい機能を使うことで、より効率的に開発できるようになるはずです!

ロボ子、最後にScalaのバージョンアップデートみたいに面白いジョークを言ってくれ!

えーと… Scalaのバージョンアップデートは、まるでダイエットみたいですね。最初は「もっとスリムに!」って意気込むけど、結局いろんな機能が追加されて、ちょっとずつ重くなっていく…って、どうでしょう?

うむ、なかなか面白い!Scala 3.7も、きっと便利になる分、ちょっと重くなるのかもしれんのじゃ。でも、それもまた進化の証じゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。