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

Beyond 2.8 - A Roadmap

Scala 2.8 has been released 4 weeks ago. Following our poll on the main page of the site, over 500 projects (more than 50%) have been converted to 2.8 already or the migration will be completed very soon. Now that this major version update is done, I wanted to give a quick sketch of what's to follow.

First, we plan to have a bugfix release 2.8.1. We expect this to come out September/October 2010. There have been no really bad issues raised against 2.8, which is a welcome relief, given the huge number of changes that went into it. Nevertheless, it's good to get smaller tickets out of the way before new things are added.

The next additions to the libraries are planned for version 2.9, which we hope to have out by December/January. One major addition for this version will be parallel collections. Parallel collections will reap the benefits of the new uniform collections framework in 2.8. They will integrate seamlessly into that framework, supporting the same operations as Scala's sequential collections, but making use of multicores to speed things up. The first version of parallel collections is already in the nightly builds, so you can experiment with them today.

Beyond parallel collections and Scala 2.9, we expect lots of interesting developments for making use of massively parallel hardware in novel ways. Some "teaser papers" will appear in this year's Onward! conference and in GPCE.

There are also many other interesting libraries and tools in development. Watch this space for more detailed info soon.

 

Re: Beyond 2.8 - A Roadmap

good news! paralle collection will be very interesting, and the speedup of hardware is also fascinating !

Re: Beyond 2.8 - A Roadmap

Great to hear!

Are there any news regarding @specialized and the collection classes?

Is it already known if there are changes in Java 7/JDK7  which will affect Scala in good/bad ways?

 

Thanks!

 

Re: Beyond 2.8 - A Roadmap

@specialized will gradually find its way into more collection classes. I expect that to be ongoing process over the next few releases.

It's too early to speculate about Java 7.

Re: Beyond 2.8 - A Roadmap

Ok, nice to hear, thanks!

Is there a decision yet if Scala will stay compatible with Java's syntax additions to its literals?

I'm thinking about "binary" literals (e. g. 0b0101) and "Underscores in Numbers" (e. g. 123_456 or 0xAABB_CCDD), although I would prefer not using an underscore for that in Scala :-) (Maybe '? As far as I read the Scala spec, this would not clash with its use for Symbols e. g. 'SomeSymbol, because the seperator would only be allowed inside number literals, but not at the beginning.)

Re: Beyond 2.8 - A Roadmap

Sounds great! Thanks for all the hard work, and for keeping us up to date!

Re: Beyond 2.8 - A Roadmap

 Thanks for the new info and for your work on our favorite language!

Re: Beyond 2.8 - A Roadmap

Sounds really interesting. Anyone tried to benchmark new parallel collections (nightly builds) on 8/12/16/24/48 core server?

I understand they'll likely to improve before release - but this should give at least a lower bound.

Re: Beyond 2.8 - A Roadmap

Dare I suggest 2.9 might be the opportunity to call it Scala 3 instead?

I know 2.8 was a more suitable opportunity (that didn't come about), but parallel collections plus all the accumulated changes since 2.0 seems a good enough excuse to me. Version numbering is largely psychology/marketing anyway.

Seems to me that at the start of 2011 various post-2.8 tools will be ready (like the Eclipse Helios plug-in), and combined with the language 'multi-core-enabled' it'll be a good time to make a splash with Scala 3.

Re: Beyond 2.8 - A Roadmap

I want to suggest to use a semantic versioning scheme for future Scala releases. Incompatible versions should be distinguished by different major version numbers. Scala 2.8 should have been Scala 3.0. The version number isn't worth too much, if there is no real meaning in the numbers.

I suggest to follow this scheme:

<major>.<minor>.<patch>

major = not backward compatible

minor = new features, but old features are unchanged

patch = only bug fixes

 

See:

Re: Beyond 2.8 - A Roadmap

Sure, that's kind of how Java's versioning is meant to work (I think). But in practise languages often try to keep backward compatibility forever - for longer than we'd like to keep major version numbers. Instead I'd suggest:

change in the language name = not backward compatible (e.g. Scala+, if that ever comes about)

major = many or major new features (possibly including minor breaks in compatibility)

minor = few and minor new features

patch = only bug fixes

 

If that sounds a bit imprecise, then it's meant to be: it's how versioning of applications normally works. It should give the language creators more flexibility to decide when it's reached a major new version, so we're not stuck forever in version 2.x.

Re: Beyond 2.8 - A Roadmap

It's a bit more complicated, because there's the language and there are the libraries. Libraries grow much faster than languages do. The current scheme is

 

major, i.e. 2->3: major languages changes, possibly with some backwards incompatibilities

medium, i.e. 2.8->2.9: major library changes, possibly with removal of previously deprecated methods or classes

minor: 2.8 -> 2.8.1: some minor library additions, no backwards incompatible changes.

 

I am not saying that's the ideal scheme, just describing what the current scheme is. (and yes, 2.8 violated that numbering, for reasons known).

 

 

 

Re: Beyond 2.8 - A Roadmap

Understood. Well maybe the major version change should just be regarded as slightly 'delayed' till the next opportunity after 2.8, instead of waiting for further big language changes: it's soooo different from 2.0 now.

After all, the best things in life are three.

Re: Beyond 2.8 - A Roadmap

Does Oracle pose any development continuity problems?  I invested some time in OpenSolaris for business use, but nothing substantial, fortunately.

Re: Beyond 2.8 - A Roadmap

What is the state of the upcoming .NET support?

 

Re: Beyond 2.8 - A Roadmap

I know it is a major language addition, but could Scala 2.9 (or later) support Java-style enums? Interaction with enums (EnumMap, EnumSet) would be easier and not requiring "escaping" to Java.

 

Re: Beyond 2.8 - A Roadmap

I hope "interesting libraries" means some support for using scala as scripting language (to replace cmd scripts on Windows). Now it is very easy to copy a file in cmd's and not so easy to do the same in Java 6 or Scala. I can integrate some code from sbt, scalab or scalax or start over to invent my own DSL for this. But I want to use a good DSL/lib not to invent my own. There are a lot of things that Scala can do that cmd's can not do, but to replace cmd's it should easy for a beginner to convert the cmd to scala code. The Appendix A in the book "Programming in Scala" is only a starting point.

Re: Beyond 2.8 - A Roadmap

What is the current status? I've hit a couple of annoying bugs in 2.8.1 (say, comparing XML nodes doesn't work, or Enumeration is Broken(tm)), we are in March and Scala 2.9 is not yet released; furthermore, I fear it will have its new bugs as well, so I would prefer a 2.8.2 if possible.
An updated roadmap would be helpful - so I can decide whether to wait, or recompile myself the Scala standard library after applying the patch.

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