Scala 2.8.0 final

Created by admin on 2010-07-14.
Updated: 2010-11-09, 19:31

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!

New array implementation, manifests for polymorphic arraysHandling 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

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.

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 primitive.

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 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%.

Bug fixes

Additional tools

Scaladoc 2 A new look-and-feel, automatic comments expansion and wiki-like syntax, as well as compile-time error checking. Read more about changes on the Scaladoc 2 mini-site.

Sbaz 2 Sbaz includes many bug fixes and enhancements. It now gives better feedback to the user during lengthy downloads and while diagnosing dependency audits, which in turn have been re-factored and enhanced. Sbaz should work properly on Windows using either cmd or cygwin, and is now capable of reliably updating itself. Support for pack200 has been added, in some cases reducing file sizes up to 70%.

Scalap A new Scalap, contributed by the community, is included. The new Scalap is aware of package objects and can decompile them by using <package_name>.package

Scala IDE for Eclipse The IDE has been extensively reworked with much functionality moved into the Scala compiler where it can be better maintained and reused by non-Eclipse IDEs and other tools. The integration with Eclipse's JDT has been deepened, and much previously Scala-specific behaviour and functionality is now provided directly by the JDT leading to across the board improvements. The Scala IDE for Eclipse is now hosted at Assembla. You can obtain it from its download page.

Acknowledgments and Thanks

Many members of the Scala community have helped us by fixing or reporting bugs, contributing new code and tools (including some of those listed above), and addressing user questions on the mailing lists: their contributions help shaping the future of Scala day by day.

I'm happy that Scala 2.8 is final now and hope that this release is the beginning of the Scala conquest of the business world. And I'm hoping that new developers find their way to http://scala-forum.org.

For the great work they have done, both for 2.8 as well as the previous releases!

Learning scala should become a mandatory course for all (java?-)programmers which seek to improve their skills. From all the languages I've learnt so far, its my definitive favorite and the best guidance into "good" programming I ever had. I have even started to build my own tuples, options and single-linked-lists to use them in "pure" java as well.. ;-)

It is the same with me, too. Scala was the most inspiring language I've ever learned. The first thing I have done is to implement an Option class for my Java projects to avoid NullPointerExceptions. Every Java developer should learn Scala even if Scala cannot be used in the actual projects for whatever reason.

You work deserves appreciation. However, I still find Scala IDE to be very unstable. It detect perfectly legal code as error, messing with import statements all the time. I make a fresh installation of Eclipse Classic 3.5.2 & Scala IDE on top, but as soon as I make a 10-lines-of-code class, things start to mess.

I hope that you guy will fix these problems soon. Scala is great, and it deserves a decent IDE like Java (or even Ruby)

That may be so, but since Eclipse is one of the most widely used IDE's, and many developers aren't in a position to choose, it's vital to Scala's acceptance that the plugin improves. I introduced Scala at work, where we develop an Eclipse RCP application, and my fellow developers have stopped using Scala, mainly due to the build problems and the incessant cycle of cleaning/closing projects that is required. I'm regarded as a bit of a nutty Scala fanboy for not giving up on the Scala + Eclipse combo.

That said, I'm well aware that everybody's working very hard and doing a great job. I think 2.8.0 is great, and the plugin is improving constantly, so a great big thank you to all involved! I absolutely love Scala to bits.