kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

Scala 2.9.1 final 雑感

このブログ読んでるような人ならとっくに知ってそうですが、昨日、Scala 2.9.1 finalがリリースされました。

今回のバージョンアップは、メンテナンスリリースということで、2.9.0.1と完全にバイナリ互換になっています。というと、あんまり嬉しくなさげですが、Scalaユーザにとっては現実的に非常に嬉しいバージョンアップです。というのも、REPLの起動がかなり速くなったからです。

Scalaのコンパイルが遅い、というのはScalaユーザのScalaに対する不満としてよく挙げられるものの一つです。特に、対話環境(REPL)の起動が遅い事はたびたびつぶやかれたものです。私も、REPLの起動が遅い事は不満でした。Scala 2.9.1 finalでは、この問題点がかなり改善されています。

自宅のマシン環境で、Scala 2.9.0.1で起動に7秒程度かかっていたのが、Scala 2.9.1 finalでは1秒程度にまで短縮されました。元が遅すぎた、という話はありますが、これでREPLの起動速度に関するストレスがかなり低減されるのは嬉しいものです。

また、REPLの起動速度のみならず、scalacのコンパイル速度自体も改善されています。こちらは、REPLの起動速度程ではありませんが、手元のScalaプログラムを色々食わせてみた結果、1.5倍くらいのコンパイル速度向上は見込めそうです(ただし、プログラムの性質/規模によって変わると思われるので、気になる人は手元で確かめてみてください)。

速度向上以外では、

  • 限定継続に関するコンパイラクラッシュ問題の修正
  • AnyVal配下(Javaで言うプリミティブ型)のオブジェクトからgetClass()できるようになった
    • e.g. 1.getClass()
  • 種々のバグ修正

などがあります。修正の一覧は、Scala 2.9.1 finalのページに書かれているので、気になる方はざっと通して読んで見てはいかがでしょうか。