Scala 2.10.3 is now available!

ANNOUNCEMENT

We are very happy to announce the final release of Scala 2.10.3!

The release is available for download from scala-lang.org or from Maven Central.

The Scala team and contributors fixed 50 issues since 2.10.2!

In total, 63 RC1 pull requests, 19 RC2 pull requests and 2 RC3 pull requests were opened on GitHub of which 72 were merged after having been tested and reviewed.

Known Issues

Before reporting a bug, please have a look at these known issues.

Scala IDE for Eclipse

The Scala IDE with this release built right in is available through the following update-site:

  • for Eclipse 4.2/4.3 (Juno/Kepler)

Have a look at the getting started guide for more info.

New features in the 2.10 series

Since 2.10.3 is strictly a bug-fix release, here’s an overview of the most prominent new features and improvements as introduced in 2.10.0:

  • Value Classes

  • Implicit Classes

  • String Interpolation

  • Futures and Promises

  • Dynamic and applyDynamic

  • Dependent method types:

    • def identity(x: AnyRef): x.type = x // the return type says we return exactly what we got
  • New ByteCode emitter based on ASM

    • Can target JDK 1.5, 1.6 and 1.7

    • Emits 1.6 bytecode by default

    • Old 1.5 backend is deprecated

  • A new Pattern Matcher

    • rewritten from scratch to generate more robust code (no more exponential blow-up!)

    • code generation and analyses are now independent (the latter can be turned off with -Xno-patmat-analysis)

  • Scaladoc Improvements

    • Implicits (-implicits flag)

    • Diagrams (-diagrams flag, requires graphviz)

    • Groups (-groups)

  • Modularized Language features

  • Parallel Collections are now configurable with custom thread pools

  • Akka Actors now part of the distribution

    • scala.actors have been deprecated and the akka implementation is now included in the distribution.
  • Performance Improvements

    • Faster inliner

    • Range#sum is now O(1)

    • Update of ForkJoin library

    • Fixes in immutable TreeSet/TreeMap

    • Improvements to PartialFunctions

  • Addition of ??? and NotImplementedError
  • Addition of IsTraversableOnce + IsTraversableLike type classes for extension methods
  • Deprecations and cleanup

    • Floating point and octal literal syntax deprecation

    • Removed scala.dbc

Experimental features

The API is subject to (possibly major) changes in the 2.11.x series, but don’t let that stop you from experimenting with them! A lot of developers have already come up with very cool applications for them. Some examples can be seen at hxxp://scalamacros.org/news/2012/11/05/status-update.html.

A big thank you to all the contributors!

# Author
33 Jason Zaugg
12 Eugene Burmako
6 Som Snytt
4 Vlad Ureche
4 James Iry
4 Grzegorz Kossakowski
4 François Garillot
3 Adriaan Moors
3 Viktor Klang
2 Antoine Gourlay
2 Simon Ochsenreither
1 Christopher Vogt
1 Seth Tisue
1 Iulian Dragos
1 Aleksandar Prokopec
1 Roland Kuhn
1 Den Shabalin
1 Rich Dougherty

Commits and the issues they fixed since v2.10.2

Issue(s) Commit Message
SI-7862 8e11dcb [nomaster] SI-7862: MANIFEST.MF file for Scala sources
SI-7861 7f4b44b SI-7861 Don't execute internal callbacks on the user Executor
SI-7398 a1796aa SI-7398 Enable test for Java 8 source parser under Java 8
SI-7825 bf0f9da SI-7825 Consider DEFAULTMETHOD when refchecking concreteness
SI-7818 cb028ba SI-7818 Cast our way out of extended existential angst
SI-7767 2391887 SI-7767 Test case for Scaladoc on early initializers
SI-7767 48283ca SI-7767 avoid rejecting Scaladoc comments in early initializers
SI-7269 fe9a3e9 SI-7269 Rework MapLike#retains to account for desugaring change
SI-7814 a19babc SI-7814 Updates the instrumented version of ScalaRuntime.
SI-7814 fb43ec8 SI-7814 Avoid init cycle between Predef, `package`, ScalaRuntime
SI-7652 7804cec [nomaster] SI-7652 REPL extended quest for tools
SI-7652 8b10daf [nomaster] SI-7652 Bad tools fails loudly
SI-7149 989c3f8 SI-7149 Use a WeakHashSet for type uniqueness
SI-7150 3ada703 SI-7150 Replace scala.reflect.internal.WeakHashSet
SI-7782 bce786f SI-7782 Derive type skolems at the ground level
SI-4760 27d61a2 SI-4760 Parser handles block-ending import
SI-7790 cb9f2b9 [nomaster] SI-7790 No ScriptEngine in 2.10 build
SI-7775 9d5ed33 SI-7775 Harden against the shifting sands of System.getProperties
SI-7779 5dbc37d SI-7779 Account for class name compactification in reflection
SI-7486 bc6d4b5 SI-7486 More tests for cycles triggered by implicit search
SI-7778, SI-942 ed34bcb SI-942 A test case, five years adrift.
SI-7756, SI-7694, SI-7716 42e0f73 SI-7716 Exclude patmat synthetics from bounds checking
SI-7603 076a92b SI-7603 Remove diagnostic code for annotation error
SI-7603 ab8a223 SI-7603 Fix thread safety of FlagTranslation
SI-7752 3222add SI-7752 Don't disambiguate type parameters of overloaded alts
SI-7014 f91242c SI-7014 Annot arg may refer to annotated class's member
SI-7694 e65321c SI-7694 Add @uncheckedBounds to the library
SI-7694 5724cae SI-7694 @uncheckedBounds, an opt-out from type bounds checking
SI-7020 ebb01e0 SI-7020 Determinism for pattern matcher warnings
SI-7733 1d28fe6 [nomaster] SI-7733 reflective packages now more consistent with scalac
SI-7331 36524c2 SI-7331 tb.parse returns unpositioned trees
SI-4907, SI-4615 cd41987 SI-4907 SI-4615 scala.bat honors -J and -D options.
SI-7455 050b4c9 SI-7455 Drop dummy param for synthetic access constructor
SI-7636 c4bf1d5 SI-7636 Fix a NPE in typing class constructors
SI-7687 2473e66 SI-7687 Handle spaces in %COMSPEC% path in scala.bat.
SI-7569 c34b048 [backport] SI-7569 Fix end position in PostfixSelect tree
SI-7657 ef979c0 SI-7657 clarifies the "macro overrides method" rule
SI-7336 48c677c SI-7336 - Link flatMapped promises to avoid memory leaks
SI-7265 06606e8 SI-7265 General test for spec version
SI-7649 6368ae7 SI-7649 Fix positions for reshaped tag materializers
SI-7617 e72ae70 SI-7617 typedAssign no longer expands lhs
SI-7638 504b5f3 SI-7638 Superaccessor lookup after specialization
SI-7603, SI-7603 eebaae5 SI-7603 Speculative fix for annotation binding error
SI-7579, SI-7344 2285493 SI-7344 Specialize methods in private scopes
SI-7571 e7ac254 SI-7571 Allow nesting of anonymous classes in value classes
SI-7343 c43b504 SI-7343 Fixed phase ordering in specialization
SI-7498 c71fa58 [backport] SI-7498 ParTrieMap.foreach no longer crashes
SI-7214, SI-7505 d5288f8 SI-7505 Test case for pattern matcher + type alias bug
SI-6841 608f577 SI-6841 Fix bug at the intersection of DelayedInit and named args
SI-7558 dd5fa60 SI-7558 Fix capture of free local vars in toolbox compiler
SI-7556 28c5f73 SI-7556 Fix runtime reflection involving ScalaLongSignature
SI-7507 d2faeb9 SI-7507 Fix lookup of private[this] member in presence of self type.
SI-7375 4dc3a33 SI-7375 ClassTag for value class aliases
SI-6138 b941551 SI-6138 Centralize and refine detection of `getClass` calls
SI-7236, SI-7237, SI-7391 f92ef91 SI-7391 Always use ForkJoin in Scala actors on ... ... Java 6 and above (except
SI-7473 5b54681 SI-7473 Bad for expr crashes postfix
SI-7421 e18e48d SI-7421 remove unneeded extra-attachement in maven deploy
SI-7497 d38e8ae SI-7497 Fix scala.util.Properties.isMac

Complete commit list!

sha Title
8e11dcb [nomaster] SI-7862: MANIFEST.MF file for Scala sources
7f4b44b SI-7861 Don't execute internal callbacks on the user Executor
cb4b8eb update typesafe.artifactory-online.com to private-repo
bf93057 Change Scala license to unmodified 3-clause BSD.
a1796aa SI-7398 Enable test for Java 8 source parser under Java 8
bf0f9da SI-7825 Consider DEFAULTMETHOD when refchecking concreteness
cb028ba SI-7818 Cast our way out of extended existential angst
2391887 SI-7767 Test case for Scaladoc on early initializers
48283ca SI-7767 avoid rejecting Scaladoc comments in early initializers
fe9a3e9 SI-7269 Rework MapLike#retains to account for desugaring change
a19babc SI-7814 Updates the instrumented version of ScalaRuntime.
fb43ec8 SI-7814 Avoid init cycle between Predef, `package`, ScalaRuntime
7804cec [nomaster] SI-7652 REPL extended quest for tools
8b10daf [nomaster] SI-7652 Bad tools fails loudly
9772ec8 typedAnnotated no longer emits nulls
a78dddd Modify perRunCaches to not leak WeakReferences
989c3f8 SI-7149 Use a WeakHashSet for type uniqueness
3ada703 SI-7150 Replace scala.reflect.internal.WeakHashSet
bce786f SI-7782 Derive type skolems at the ground level
27d61a2 SI-4760 Parser handles block-ending import
cb9f2b9 [nomaster] SI-7790 No ScriptEngine in 2.10 build
133b5c0 Commit .gitignore directly
9d5ed33 SI-7775 Harden against the shifting sands of System.getProperties
5dbc37d SI-7779 Account for class name compactification in reflection
bc6d4b5 SI-7486 More tests for cycles triggered by implicit search
ed34bcb SI-942 A test case, five years adrift.
42e0f73 SI-7716 Exclude patmat synthetics from bounds checking
076a92b SI-7603 Remove diagnostic code for annotation error
ab8a223 SI-7603 Fix thread safety of FlagTranslation
75b44a6 [nomaster] macro expansions are now auto-duplicated
3222add SI-7752 Don't disambiguate type parameters of overloaded alts
f91242c SI-7014 Annot arg may refer to annotated class's member
e65321c SI-7694 Add @uncheckedBounds to the library
5724cae SI-7694 @uncheckedBounds, an opt-out from type bounds checking
ebb01e0 SI-7020 Determinism for pattern matcher warnings
1d28fe6 [nomaster] SI-7733 reflective packages now more consistent with scalac
1dac5ef showRaw now prints symbols of def trees
26a8679 currentRun.compiles now correctly works in toolboxes
5626c74 [nomaster] macro errors now always have positions
36524c2 SI-7331 tb.parse returns unpositioned trees
cd41987 SI-4907 SI-4615 scala.bat honors -J and -D options.
2864c7f brings JavaMirrors up to speed with ClassfileParser
79009e3 Rename t7636-neg.check to the standard t7636.check.
050b4c9 SI-7455 Drop dummy param for synthetic access constructor
c4bf1d5 SI-7636 Fix a NPE in typing class constructors
2473e66 SI-7687 Handle spaces in %COMSPEC% path in scala.bat.
c34b048 [backport] SI-7569 Fix end position in PostfixSelect tree
ef979c0 SI-7657 clarifies the "macro overrides method" rule
48c677c SI-7336 - Link flatMapped promises to avoid memory leaks
06606e8 SI-7265 General test for spec version
6368ae7 SI-7649 Fix positions for reshaped tag materializers
d09a46b fix typo in BigInt/BigDecimal deprecation messages
e72ae70 SI-7617 typedAssign no longer expands lhs
55decf7 makes it more convenient to work with SuppressMacroExpansionAttachment
504b5f3 SI-7638 Superaccessor lookup after specialization
eebaae5 SI-7603 Speculative fix for annotation binding error
0c752d7 Less noise on a partest failure.
2285493 SI-7344 Specialize methods in private scopes
e7ac254 SI-7571 Allow nesting of anonymous classes in value classes
d2c5324 Refactoring to the scala-concurrent-tck.scala - there were numerous logical is
da54f34 Cleaning up method implementations in Future Optimizations: 1) Avoiding
c43b504 SI-7343 Fixed phase ordering in specialization
c0ba5eb Removed redundant `retypedMethod` in `Duplicators`
da1ae7a [backport] relax time constraint in duration-tck.scala (for Windows VMs) (cherry
3494397 Add Eclipse project for JUnit tests.
25a8e70 Add support for JUnit tests
c71fa58 [backport] SI-7498 ParTrieMap.foreach no longer crashes
d5288f8 SI-7505 Test case for pattern matcher + type alias bug
ac4e3ca Refactor testing logic for only running under certain JDK versions
fc6da8d Test for reading JDK 8 (classfile format 52) class files.
608f577 SI-6841 Fix bug at the intersection of DelayedInit and named args
dd5fa60 SI-7558 Fix capture of free local vars in toolbox compiler
28c5f73 SI-7556 Fix runtime reflection involving ScalaLongSignature
d2faeb9 SI-7507 Fix lookup of private[this] member in presence of self type.
4dc3a33 SI-7375 ClassTag for value class aliases
b941551 SI-6138 Centralize and refine detection of `getClass` calls
f92ef91 SI-7391 Always use ForkJoin in Scala actors on ... ... Java 6 and above (except
5b54681 SI-7473 Bad for expr crashes postfix
bae4196 A test case for a recent LUB progression.
e18e48d SI-7421 remove unneeded extra-attachement in maven deploy
d38e8ae SI-7497 Fix scala.util.Properties.isMac
b89dc03 Increase build.number to 2.10.3
658d90a c.typeCheck(silent = true) now suppresses ambiguous errors
73d494d Reimplementing much of the DefaultPromise methods Optimizations: 1) Avoiding to