We are very happy to announce the final release of Scala 2.10.4!
The release is available for download from scala-lang.org or from Maven Central.
The Scala team and contributors fixed 33 issues since 2.10.3!
In total, 36 RC1 pull requests, 12 RC2 pull requests and 3 RC3 pull requests were merged on GitHub.
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):
- Development version (Scala IDE 3.0.3-rc3 on Scala 2.10.4)
- Stable version (will have 2.10.4 as soon as Scala IDE 3.0.3-vfinal is released)
Have a look at the getting started guide for more info.
New features in the 2.10 series
Since 2.10.4 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
-
A class may now extend
AnyVal
to make it behave like a struct type (restrictions apply). -
https://docs.scala-lang.org/overviews/core/value-classes.html
-
-
Implicit Classes
-
The implicit modifier now also applies to class definitions to reduce the boilerplate of implicit wrappers.
-
-
String Interpolation
-
val what = "awesome"; println(s"string interpolation is ${what.toUpperCase}!")
-
https://docs.scala-lang.org/overviews/core/string-interpolation.html
-
-
Futures and Promises
-
Asynchronously get some JSON:
for (req <- WS.url(restApiUrl).get()) yield (req.json \ "users").as[List[User]]
(uses play!)
-
-
Dynamic and applyDynamic
-
x.foo
becomesx.applyDynamic("foo")
ifx
’s type does not define afoo
, but is a subtype ofDynamic
-
-
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
-
Get on top of the advanced Scala features used in your codebase by explicitly importing them.
-
https://docs.scala-lang.org/sips/modularizing-language-features.html
-
-
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
???
andNotImplementedError
- Addition of
IsTraversableOnce
+IsTraversableLike
type classes for extension methods -
Deprecations and cleanup
-
Floating point and octal literal syntax deprecation
-
Removed scala.dbc
-
Experimental features
-
Scala Reflection
-
Macros
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 |
---|---|
26 | |
15 | |
5 | |
3 | |
3 | |
3 | |
3 | |
2 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 |
Commits and the issues they fixed since v2.10.3
Issue(s) | Commit | Message |
---|---|---|
SI-7902 | 5f4011e | |
SI-8205 | 8ee165c | |
SI-8126, SI-6566 | 806b6e4 | |
SI-8146, SI-8146, SI-8146, SI-8146 | ff13742 | |
SI-6443, SI-8143 | 1baf11a | |
SI-8152 | 9df2dcc | |
SI-8111 | c91d373 | |
SI-8111 | 2c770ae | |
SI-7120, SI-8114, SI-7120 | 5876e8c | |
SI-7636, SI-6563 | 255c51b | |
SI-8104, SI-8104 | c0cb1d8 | |
SI-8085 | 7e85b59 | |
SI-8085 | a12dd9c | |
SI-6426 | 47562e7 | |
SI-8062 | f0d913b | |
SI-7912 | 006e2f2 | |
SI-8060 | bb427a3 | |
SI-7995 | 5ed834e | |
SI-8019 | c955cf4 | |
SI-8029 | fdcc262 | |
SI-7439 | 8d74fa0 | |
SI-8010 | 9036f77 | |
SI-7982 | 7d41094 | |
SI-6913 | 7063439 | |
SI-7458 | 02308c9 | |
SI-7548 | 652b3b4 | |
SI-7548 | b7509c9 | |
SI-8005 | 3629b64 | |
SI-8004 | 696545d | |
SI-7463, SI-8003 | b915f44 | |
SI-7280 | 053a274 | |
SI-7915 | 04df2e4 | |
SI-7776 | d15ed08 | |
SI-6546 | 075f6f2 | |
SI-7638, SI-4012 | e09a8a2 | |
SI-7519 | 50c8b39e | |
SI-7519 | ce74bb0 | |
SI-4936, SI-6026 | e350bd2 | |
SI-6026 | 2bfe0e7 | |
SI-7295 | 25bcba5 | |
SI-7020 | 7b56021 | |
SI-7783 | 2ccbfa5 | |
SI-7815 | 733b322 |
Complete commit list!
sha | Title |
---|---|
5f4011e | |
8ee165c | |
d167f14 | |
806b6e4 | |
ff13742 | |
cbb88ac | |
1baf11a | |
9df2dcc | |
c91d373 | |
2c770ae | |
5876e8c | |
bd4adf5 | |
255c51b | |
c0cb1d8 | |
7e85b59 | |
a12dd9c | |
3fa2c97 | |
2aa9da5 | |
47562e7 | |
f0d913b | |
9cdbe28 | |
006e2f2 | |
bb427a3 | |
27a3860 | |
139ba9d | |
e555106 | |
dc6dd58 | |
f8d8f7d | |
5ed834e | |
c955cf4 | |
fdcc262 | |
8d74fa0 | |
9036f77 | |
3faa2ee | |
7d41094 | |
7063439 | |
02308c9 | |
652b3b4 | |
b7509c9 | |
0c963c9 | |
3629b64 | |
696545d | |
b915f44 | |
053a274 | |
eb9f0f7 | |
3a8796d | |
04df2e4 | |
ec89b59 | |
1d29c0a | |
31ead67 | |
852a947 | |
40af1e0 | |
ba0718f | |
d15ed08 | |
6045a05 | |
075f6f2 | |
e09a8a2 | |
50c8b39e | |
ce74bb0 | |
e350bd2 | |
2bfe0e7 | |
25bcba5 | |
7b56021 | |
8986ee4 | |
2ccbfa5 | |
ee9138e | |
733b322 |