Scala wrote:
It is finally here!! After many, many months of hard work, the Scala team is truly happy to announce the new, much-awaited stable release of Scala! The all-new Scala 2.8.0 final distribution is ready to be downloaded from our
Download Page. The Scala 2.8.0 codebase includes a huge number of bug fixes with respect to 2.7.7, and an impressive amount of new features. Please read below for further details!
The Scala 2.8.0 distribution
What is new?
The Scala 2.8 codebase includes the following new fixes and features:
*
Redesigned collection library
The collection library has undergone a complete overhaul for Scala 2.8, offering a more coherent and efficient design, while maintaining virtually complete compatibility with existing sources. Detailed information at:
http://www.scala-lang.org/sid/3
*
New array implementation, manifests for polymorphic arrays
Handling of arrays has been simplified and optimized in Scala 2.8. The previous compiler magic has been replaced by a more systematic and predictable implementation in terms of implicit conversions. Full details at:
http://www.scala-lang.org/sid/7
*
Type specialization
Scala 2.8 adds specialized type parameters, which enable the compiler to generate transparently multiple versions of a given definition, and to use the most specific version whenever the static type information at a call site allows it. Details at:
http://www.scala-lang.org/sid/9
*
Named and default arguments
Named arguments improve the readability of method calls with many arguments. Default arguments reduce code duplication, and enable "copy" methods for case classes, useful to generate quickly modified copies of case classes. A complete description at:
http://www.scala-lang.org/sid/1
*
Package objects
Packages can now contain besides classes and objects also methods, fields or type aliases. These are added to a package by declaring a package object. More capabilities might be added to package objects in subsequent releases.
*
Beefed up Scala Swing libraries, better documentation
Components publish key events, input events can be consumed, refactored window subhierarchy, additional demos, Swing listeners are installed lazily, more complete component caching, minor refactorings, bugfixes, more Scaladocs. Design document at:
http://www.scala-lang.org/sid/8
*
Revamped REPL
Many bugfixes. Tab-completion for all packages on the classpath, as well as object and instance methods and fields, including type aliases and package objects. Searchable history, integrated shell access, and a power mode which offers direct access to compiler internals.
*
Implicits changes
We have refined the implicit resolution process so that resolution is now able to determine type variables.
*
Improved equality
Equality across numeric types is to be consistent across all the primitives types, while also adhering to the equals/hashCode contract. Numeric comparisons will have the same results as they would between Java primitives. This is currently still being completed.
*
Packrat parser combinators
With support for packrat parsing, parser combinators are now able to handle left-recursive grammars and will show improved performance for ambiguous productions.
*
Improved XML library
Many bugfixes.
*
Type constructor inference
Type inference has been extended to deal with type constructors, so that, in certain cases, you can omit type parameter lists that contain higher-kinded types (aka type constructors, e.g., List).
*
Improved Annotations
Scala 2.8 adds support for nested java annotations. For annotations on fields, it is now possible to specify which synthetic members (getter / setter) will have the annotation. Documentation about Scala annotations can be found at:
http://www.scala-lang.org/sid/5
*
Enhanced actors
New Reactors provide more lightweight, purely event-based actors with optional, implicit sender identification. Support for actors with daemon-style semantics was added. Actors can be configured to use the efficient JSR166y fork/join pool, resulting in significant performance improvements on 1.6 JVMs. Schedulers are now pluggable and easier to customize.
*
Support for continuations
Continuations are supported by a compiler plugin, which is now supported as part of the main distribution.
Internal improvements
*
New presentation compiler
This new infrastructure, within the Scala compiler, enables IDEs to hook into the compiler to find efficiently information about the structure of the program under editing. This new code offers a better platform for the development of IDE plugins.
*
New build manager
The new feature used by for example Eclipse to detect intelligently changes in the files and compile only necessary Scala sources, instead of performing clean build on whole projects. This technique enables to significantly reduce the compilation time on bigger projects.
*
Speed improvements
The compiler now runs as optimised code. In addition, a number of improvements and fine-tunings have further improved the compiler speed up to 50%.