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 RC1 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
scala.collection.parallel.immutable.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.
Great news! First thanks to the whole Scala team. In a new version of the Eclipse plugin include or planned next?