This page is no longer maintained — Please continue to the home page at www.scala-lang.org

Scala 2.9.0 RC1

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.

Re: Scala 2.9.0 RC1

Typo: sbt.Proces should be sbt.Process

Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland