Created by admin on 2011-03-25. Updated: 2011-03-25, 21:28

After many months of work, the Scala Team is happy to announce the first release candidate of the new Scala 2.9 distribution! Scala 2.9.0 RC1 is currently available from our Download Page. The Scala 2.9.0 codebase includes several additions, notably the new Parallel Collections, but it also introduces improvements on many existing features, and contains many bug fixes.

Please help us with the testing of this release candidate, and let us know of any issues you may detect.

The Scala 2.9.0 distribution

This Release Candidate is made available for testing purposes only and is not intended for production environments. We will wait at least two weeks before issuing a final release, in order to allow developers and testers to send us their feedback.

What is new?

The new Scala 2.9 codebase includes the following new features and changes:

Parallel Collections

Every collection may be converted into a corresponding parallel collection with the new `par` method. Parallel collections utilize multicore processors by implementing bulk operations such as `foreach`, `map`, `filter` etc. in parallel. Parallel collections are located in the package `scala.collection.parallel`.

Depending on the collection in question, `par` may require copying the underlying dataset to create a parallel collection. However, specific collections share their underlying dataset with a parallel collection, making `par` a constant time operation.

Currently available parallel collections are:

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

The method `seq` is used to convert from a parallel collection to a corresponding sequential collection. This method is always efficient (O(1)).

Other features

Generalized try-catch-finally:

try body catch handler finally cleanup

Here, body, hander, and cleanup can be arbitrary expressions.

Better REPL:

Better jline support, multi-line history, faster startup.

New REPL commands:

:implicits, :keybindings, :javap

New packages:

scala.sys and scala.sys.process which are imported from sbt.Proces

New trait:

App, a safer and more performant alternative to Application. It now allows to access command line arguments. It relies on another new trait, DelayedInit, which lets one capture class initialization code in a closure.

New methods in collections:

collectFirst, maxBy, minBy, span, inits, tails, permutations, combinations, subsets

Annotation @strictfp is now supported.

A large number of bugfixes and performance improvements.