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

Scala 2.8.0 Beta 1

After many months of hard work, the Scala Team is proud to release the first beta of the much-awaited new Scala 2.8! Scala 2.8.0 Beta 1 is now available from our Download Page. It includes a huge number of bug fixes with respect to 2.7.7, and many new features. This beta is the foundation for the release of the upcoming final version of 2.8.0, expected in a few months. Read below to find out what is new!

 

The Scala 2.8.0 Beta distribution

What is new?

The new 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. Package objects are still work in progress; more capabilities might come for 2.8 final or a release soon afterwards.
  • 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. This plugin is not included in this first beta, but will be added in subsequent releases.
     

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.

    During the beta preview period, the Scala IDE for Eclipse will be updated more frequently with respect to the main Scala beta releases. You can follow its development by using the following update site:
    http://www.scala-lang.org/scala-eclipse-plugin-beta-preview
    Please note that you must use this address as an update site within Eclipse as described on this page, it cannot be visited using your internet browser.
     

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.

  • We would like to thank:
    Paul Phillips, Miles Sabin, Ilya Sergey, Caoyuan Deng, James Matlik, Frank Teubler, Kevin Wright, Manohar Jonnalagedda, Pedro Furlanetto, Johannes Rudolph, Jason Zaugg, Seth Tisue, Ismael Juma, Mark Harrah, Miguel Garcia, Colin Howe, Mirko Stocker, Spiros Tzavellas, Matt Russell, David Taylor, and all the other frequent contributors to our mailing lists, too many to list here. Thank you all!

 

The Scala Team at EPFL

Martin Odersky, Lukas Rytz, Hubert Plociniczak, Iulian Dragos, Gilles Dubochet, Philipp Haller, Aleksandar Prokopec, Antonio Cunei, Tiark Rompf, Eugene Zouev, Donna Malayeri, Phil Bagwell, Adriaan Moors, Ingo Maier.

Re: Scala 2.8.0 Beta 1; Where's the api?

Hey! The next step foreward for this exciting new language! Thank you all!!!

By the way: Where's the actual api documentation for this version?

Keep on!

Re: Scala 2.8.0 Beta 1; Where's the api?

The API files are included in the distribution if you install the Beta using the IzPack installer. If you install the Beta using the tgz or zip files, you can just type "sbaz install scala-devel-docs" to download and install the API files.

Alternatively, you can browse the API online at: http://www.scala-lang.org/beta-api

Re: Scala 2.8.0 Beta 1

For those who want to have a play with continuations, I've written
some instructions
for building the plugin from source.

Thanks a lot to the Scala team for an excellent release.

Rich

Re: Scala 2.8.0 Beta 1

Good Job!

Re: Scala 2.8.0 Beta 1

Very happy to see the continued improvements to Scala.

Regarding the Eclipse plugin, is there now or are there plans to make it possible to specify the Scala compiler version used by Eclipse? The plugin installs a version of Scala and it seems that there is no way to change this. This is problematic for various reasons, the most important (at least to me) being that it makes the plugin useless with Maven based projects (e.g. Lift projects) because the code completion and error messages are not necessarily valid because the Maven project is compiled against the version of Scala specified in the .pom file which may not be the same as used by the plugin.

I have the same problem with the approach used in the NetBeans Scala plugin. So far, the IntelliJ IDE is the only one that satisifies this need.

Please Add more and more features !

Like Mozart-Oz,support :

dataflow computing
open distributed computing
constraints and logical inference

and software transaction memory,utilize the OPEN-CL devices... ,then Scala will not only  be a PostFunctional language,but also a great All-Purpose language with the high performance but still concise ,elegante !

Re: Scala 2.8.0 Beta 1

Thanks to all Scala team.

Scala is a really great language: functional-post-functional-object-oriented-hybrid-superfun...

Massimo

 

Re: Scala 2.8.0 Beta 1

Congratulations!

A great quality improvement in the eclipse plugin.

thank you Miles Sabin!

Jan

Scala Actors NIO

Hello,

thanks for great job ! :) I am waiting for Scala 2.8 so long...

 

To use scala's actors library in professional, SCALAble (!!) applications they should be based on NIO !!!

 

Is there chance that it would be changed from todays java.net old fashion IO ??

 

Thanks,

Arthur.

PS: waitin for those (and other) improvements people create Akka Actors, LiftActors, Scalaz Actors. Waiting more we will get first NIO2 with JDK7 than simple NIO in actors :(.

 

 

Re: Scala 2.8.0 Beta 1

Thanks for the improving exciting new language!

 

P.S. I've found an erratum in SID # 3 - New Collection Classes document:

Section 3.5 The Map traits, on page 13

 

 

// For immutable maps:

var capitals = immutable.Map[String, String]()

...

// For mutable maps:

val mcapitals = mutable.Set[String, String]()

...

 

Instead of mutable.Set[String, String]() it should be mutable.Map[String, String]()

 

 

Re: Scala 2.8.0 Beta 1

For every case class, a method named "copy" is now generated...

 

Surely this is true only of concrete case classes?

 

Re: Scala 2.8.0 Beta 1

Ah, I see. Inheritance from case classes has been deprecated.

 

That certainly makes life more complicated, since I've used case classes as ancestors of other case classes in a number of places.

 

Re: Scala 2.8.0 Beta 1

Great effort.

This said, there are also unwelcome improvements. Example:


import scala.io.Source
def getLinesFromFile(file: File) = Source.fromFile(file, "ISO-8859-1").getLines

is not accepted any longer, for two reasons:

1st, the fromFile function with second argument of type string no longer exists.

2nd, the getLines function cannot be used without parentheses. I suspect this comes from the fact that the function now has one optional argument.

Corrected code fragment:


import scala.io.Source
def getLinesFromFile(file: File) = Source.fromFile(file).getLines()

As these issues seem to be intentional, I won't submit a bug report on them. Nonetheless, I would prefer to see at least the 2nd issue corrected before the final release.

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