Scala 2.11.4 is now available!

We are very pleased to announce the release of Scala 2.11.4!

Scala 2.11.4 is a bugfix release that is binary compatible with previous releases in the Scala 2.11 series. The changes include:

  • Scala shell (REPL) is more friendly to Ctrl+D. It leaves your terminal in a clean state and suggests using :quit the next time (see #3902). Kudos to @gourlaysama!
  • REPL uses different colors when printing references to vals and types. Pass -Dscala.color to enable that behavior (see #3993). Thanks to @puffnfresh!
  • The Scala specification received a fair amount of love and became much more beautiful. It has got syntax highlighting (#3984), linkable headers, and a side bar with TOC (#3996). A few final touches has been merged that fix typos and mistakes stemming from automatic Latex to Markdown conversion we’ve done a while ago. Thanks for attention to details @gourlaysama, @som-snytt and roberthoedicke!
  • Non-deterministic pattern matching warnings has been fixed (SI-7746). Many thanks to @gbasler for diving deep (#3954) into logical formulas constructed by our pattern matcher implementation!

Compared to 2.11.2, this release resolves 54 issues. Out of 120, we merged 95 pull requests: 90 for 2.11.3, and 5 for 2.11.4.

The next minor Scala 2.11 release will be available before the end of the year, or sooner if prompted by a serious issue.

Known Issue in Scala 2.11.4

Serialization of anonymous functions in Scala 2.11.1 to 2.11.4 is affected by issue SI-8960. Normally, all anonymous function classes generated by the compiler have a SerialVersionUID field of value 0l. The issue causes the SerialVersionUID to be missing. This in turn causes the JVM to compute the UID from the class signature on deserialization, which may trigger a ClassNotFoundException if the outer class of the function is not on the classpath.

The issue was discovered by Josh Rosen, who also wrote up a detailed description. A fix has been committed and will be available in Scala 2.11.5.

Do Not Use Scala 2.11.3

Due to a binary incompatibility in Scala 2.11.3, we recommend upgrading to Scala 2.11.4, which resolves the incompatibility, as well as another blocker issue that was discovered in the days after the 2.11.3 release.

We have analyzed the mistakes that lead to the breakage (human error), and are taking measures to prevent this from happening again. We apologize for the inconvenience, and thank everyone who was involved in reporting and diagnosing these critical issues.

Available Libraries and Frameworks

A large number of Scala projects have been released against Scala 2.11. Please refer to the list of libraries and frameworks available for Scala 2.11.

A release of the Scala IDE that includes Scala 2.11.4 is available on their download site.

Release Notes for the Scala 2.11 Series

The release notes for the Scala 2.11 series, which also apply to the current minor release, are available in the release notes for Scala 2.11.1. They contain important information such as:

  • The specification of binary compatibility between minor releases.
  • Details on new features, important changes and deprecations in Scala 2.11.

Contributors

A big thank you to everyone who’s helped improve Scala by reporting bugs, improving our documentation, participating in mailing lists and other public fora, and submitting and reviewing pull requests! You are all awesome.

According to git shortlog -sn --no-merges v2.11.2..v2.11.4, 35 people contributed to this minor release: Lukas Rytz, Adriaan Moors, Antoine Gourlay, A. P. Marki, Jason Zaugg, Robert Hoedicke, Eugene Burmako, Rex Kerr, Max Bileschi, Brian McKenna, Grzegorz Kossakowski, Maks Atygaev, Evgeny Vereshchagin, Simon Ochsenreither, Dominik Gruntz, Masato Sogame, Gerard Basler, Dan Garrette, Artem Stasuk, David Turner, Iulian Dragos, Jeroen ter Voorde, Kato Kazuyoshi, Konstantin Fedorov, Krystian Nowak, Lukas Elmer, Malte Isberner, Paolo Giarrusso, Paweł Wiejacha, Robert Hoedicke, dgruntz, Roman Janusz, harryhuk, Michał Pociecha.