早くも Scala 2.9.0 のリリース候補が出ています

2011年3月25日、早くも Scala 2.9.0 のリリース候補が出ています。本家の記事を適当に邦訳して紹介しますね。
元ネタはこちらの POST となります。
http://www.scala-lang.org/node/8976

Scala 2.9.0 RC1

数か月の作業を終え、Scala チームは新しい Scala 2.9 ディストリビューションの最初のリリース候補を発表することができてうれしく思います。Scala 2.9.0 RC1 は現在ダウンロードページから入手できます。Scala 2.9.0 コードベースでは、特に新しいパラレルコレクションなど、いくつかの追加が含まれています。さらに、多くの既存機能の改良と多くのバグフィックスが含まれています。

このリリース候補のテストに協力してください。リリース候補を試し、気付いた問題を教えてください。

Scala 2.9.0 ディストリビューション

このリリース候補はテスト目的でのみ使用可能です。本番環境のためのものではありません。最終版のリリースは、開発者とテスターからのフィードバックを得るために少なくとも2週の期間を置くこととします。

What is new?

新しい Scala 2.9 には以下の新機能と変更が含まれます。

並列コレクション

全てのコレクションに新しく par メソッドが追加されました。このメソッドによりコレクションを並列コレクションに変換できます。並列コレクションは foreach, map, filter などの一括処理をマルチコアプロセッサーにて並列実行します。並列コレクションは scala.collection.parallel パッケージにあります。


対象とするコレクションから par により並列コレクションを作成するには、基となるデータセットをコピーする必要があります。しかし特定のコレクションでは par は基となるデータセットを共有することで一定時間の処理となります。


現在利用可能な並列コレクションは以下となります。

  • parallel arrays - scala.collection.parallel.mutable.ParArray
  • parallel ranges - scala.collection.parallel.immutable.ParRange
  • parallel hash maps - scala.collection.parallel.mutable.ParHashMap
  • parallel hash sets - scala.collection.parallel.mutable.ParHashSet
  • parallel hash tries - scala.collection.parallel.immutable.{ParHashMap, ParHashSet}
  • parallel vectors - scala.collection.parallel.immutable.ParVector

seq メソッドは並列コレクションからシーケンシャルコレクションへの変換処理を行います。このメソッドは常に(O(1))の効率となります。

一般化した try-catch-finally

try body
catch handler
finally cleanup

body と handler そして cleanup には任意の式を記述できます。

REPL の改良

jlineの改良、複数行のヒストリ、起動時間の短縮が追加されました。

新しいREPLコマンド

:implicits, :keybindings, :javap が利用可能となりました。

新しいパッケージ

scala.sys と scala.sys.process が sbt.Proces からインポートされるようになりました。

新しいトレイト

App トレイトは既存の Application トレイトの代替で、より安全でより良いパフォーマンスを提供します。そしてコマンドライン引数へのアクセスも可能となっています。これはもう一つの新しいトレイトである DelayedInit によるもので、クロージャにてクラスの初期化コードをキャプチャできます。

コレクションの新しいメソッド

以下のメソッドがコレクションに追加されました。
collectFirst, maxBy, minBy, span, inits, tails, permutations, combinations, subsets

strictfp アノテーション

@strictfp アノテーションがサポートされました。


この他に多数のバグフィックスとパフォーマンスの向上が含まれています。