Pre-release

Scala 2.13.0-M4

@lrytz lrytz released this May 15, 2018 · 485 commits to 2.13.x since this release

The 2.13 Scala collections have landed!

This is the first 2.13 milestone that includes the improved and simplified Scala collections library. We expect the API to mostly remain stable after this release, although there may still be minor changes in M5.

The goal for this release is to bootstrap the Scala ecosystem on the new collections.

Collections changes

The most important changes in the collections:

  • Transformation methods no longer have an implicit CanBuildFrom parameter. This makes the library easier to understand (in source code, Scaladoc, and IDE code completion). It also makes compiling user code more efficient.
  • The type hierarchy is simplified.Traversable no longer exists, only Iterable. (And as in previous milestones, parallel collections are now in a separate hierarchy in a separate module.)
  • scala.Seq is now an alias for scala.collection.immutable.Seq (no longer scala.collection.Seq)
  • Views have been vastly simplified and should now work reliably. They no longer extend their corresponding collection type, for example, an IndexedSeqView no longer extends IndexedSeq.
  • The to[Collection] method was replaced by the to(Collection) method
  • collection.breakOut no longer exists, use .view and .to(Collection) instead
  • Immutable hash sets and hash maps have a new implementation (ChampHashSet and ChampHashMap, based on the "CHAMP" encoding). We are eager for reports of resulting performance changes.
  • New collection types:
    • immutable.ArraySeq is an effectively immutable sequence that wraps an array
    • immutable.LazyList is a lazy linked list that is lazy in both the head and the tail. immutable.Stream (only lazy in the tail) is deprecated.
  • Deprecated collections were removed (MutableList, immutable.Stack, others)

To learn more about those changes and how to adapt your code, take a look at the FAQ wiki page. This document is intended for library maintainers and assumes familiarity with the 2.12 Scala collections. User documentation will be made available for the next milestone.

Other changes

Other notable changes in Scala 2.13.0-M4:

  • The scala-xml library is no longer bundled with the release, and scala-compiler no longer has a scala-xml dependency #6436
  • Procedure syntax (def m() { ... }) is deprecated #6325
  • View bound syntax (A <% B) is deprecated #6500
  • -Y and -X flags that affect language semantics were removed #6505
  • Methods with no parameter lists, or only an empty parameter list, are no longer eta-expanded (val f: () => Any = someMethod). Explicit eta-expansion is required (someMethod _). #6475
  • Partial unification (#5102) is enabled by default (and thus -Ypartial-unification is no longer accepted)
  • The "macro paradise" compiler plugin is incorporated into the compiler. Instead of using the plugin, macro annotations can be enabled with the -Ymacro-annotations flag. #6606
  • Assorted deprecated methods and classes have been removed

For more details, see closed bugs and merged PRs.

See also the notes for the previous milestones: M3, M2, M1.

The compiler performance in 2.13 is 5-10% better compared to 2.12. The integration of the new collections library shows up in the performance graph as a nice improvement.

Contributors

A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.

A special congratulations to @julienrf from the Scala Center, the top contributor this cycle due to his tireless work on the new collections. Especially significant external contributors to the collections work were @odd, @marcelocenerine, and @msteindorfer; others are included below. A special welcome to newcomer @NthPortal, and a shoutout to the growing team of regulars who keep the scala/scala PR queue filled with excellence and conviviality.

This release was brought to you by 76 contributors, according to git shortlog -sn --no-merges ^e2a211c ^v2.13.0-M3 v2.13.0-M4. Thank you Julien Richard-Foy, Lukas Rytz, Stefan Zeiger, Jason Zaugg, Marcelo Cenerino, Martin Odersky, Odd Möller, A. P. Marki, Adriaan Moors, Seth Tisue, Ólafur Páll Geirsson, Harrison Houghton, Eugene Yokota, NthPortal, Miles Sabin, Guillaume Martres, Aggelos Biboudis, Mike Skells, Martijn Hoekstra, jvican, Xavier Fernández Salas, awibisono, Allan Renucci, BuildTools, Ethan Pronovost, Jimin Hsieh, Cong Zhao, howtonotwin, Kenji Yoshida, Georgi Krastev, Heikki Vesalainen, Piotr Kukielka, Danila Matveev, Nicolas Stucki, Dale Wijnand, Stephen Nancekivell, Aaron S. Hawley, Jasper Moeys, Tim Ruhland, Viktor Klang, Isaac Levy, Philippus Baalman, Alex Levenson, Rob Norris, Ryan Williams, Chujie Zeng, Shohei Shimomura, Antoine Gourlay, Sébastien Doeraene, Vince, esarbe, Iaroslav Zeigerman, ke-to, kelebra, mmocentre, roman, sh0hei, Alex Glukhovtsev, Iulian Dragos, Jeff Brower, Jeff Shaw, Jonathan Frawley, Håkon Hjelde Wold, Kentaro Tokutomi, LPTK, Dhanesh Arole, Dhanesh, David Hoepelman, Matthias Sperl, Michael Steindorfer, Daniel Moss, Oleksii Tkachuk, Paolo Giarrusso, Pathikrit Bhowmick, Peter Fraenkel, Rex Kerr.

Obtaining Scala

Scala releases are available through a variety of channels, including (but not limited to):

Latest release

Scala 2.12.6

@SethTisue SethTisue released this Apr 27, 2018 · 2143 commits to 2.13.x since this release

Scala 2.12.6

The main highlight is:

  • Macros work again when compiling on Java 9 or 10, fixing 2.12.5 regression (PR #6446)

Further highlights:

  • Deprecate floating-point Ranges (PR #6550)
  • Update to JLine 2.14.6 for better Emacs integration (PR #6478)
  • Add a completions command to REPL for better Emacs integration (PR #6379)

For more details, see closed bugs and merged PRs.

Compiler performance since 2.12.5 is stable.

2.12.6 is binary compatible with other 2.12.x versions.

Contributors

A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.

This release was brought to you by 11 contributors, according to git shortlog -sn --no-merges v2.12.5..v2.12.6. Thank you Jason Zaugg, Lukas Rytz, A. P. Marki, Adriaan Moors, Heikki Vesalainen, Martijn Hoekstra, Harrison Houghton, Eugene Yokota, Stefan Zeiger, jvican, sh0hei.

Scala 2.12 Notes

The release notes for Scala 2.12.0 have important information applicable to the whole 2.12 series.

Obtaining Scala

Scala releases are available through a variety of channels, including (but not limited to):

Scala 2.12.5

@lrytz lrytz released this Mar 20, 2018 · 145 commits to 2.12.x since this release

Main highlights of this release:

  • When compiling on Java 9 or higher, the new -release N flag changes the compilation classpath to match the JDK version N. This works for the JDK itself and for multi-release JARs on the classpath. Details in the PR: #6362.
  • With the new -Ybackend-parallelism N compiler flag, the backend can now run bytecode serialization, classfile writing and method-local optimizations (-opt:l:method) in parallel on N threads. (thanks @mkeskells!) PR: #6124.
  • The raw"" and s"" string interpolators are now intercepted by the compiler to produce more efficient bytecode. PR: #6093.
  • The -Ycache-plugin-class-loader and -Ycache-macro-class-loader flags enable caching of classloaders for compiler plugins and macro definitions. This can lead to significant performance improvements. PRs: #6412, #6314. (thanks @xeno-by and @jvican!)

Further highlights:

  • The apply method on the PartialFunction companion object is now deprecated. PR: #6005.
  • Scala JARs (library, reflect, compiler) now have an Automatic-Module-Name attribute in their manifests. PR: #6395.
  • Enabling unused warnings now leads to fewer false positives. (thanks @som-snytt!) PR: #6190.
  • Explicit eta-expansion (foo _) of a nullary method no longer gives a deprecation warning. PR: #6177.

For more details, check out all closed bugs and merged PRs.

Compiler performance since 2.12.4 is stable.

As usual for minor releases, Scala 2.12.5 is binary compatible with the whole Scala 2.12 series.

Known issues

There is a regression since 2.12.4 when compiling code on Java 9 or 10 that uses macros. Running on Java 9 or 10 isn’t affected, only compiling. Details: scala/scala-dev#480

There is no workaround. You must either compile on Java 8 or wait for 2.12.6.

Contributors

A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.

This release was brought to you by 36 contributors, according to git shortlog -sn --no-merges v2.12.4..v2.12.5. Thank you, Jason Zaugg, A. P. Marki, Mike Skells, Harrison Houghton, Adriaan Moors, Lukas Rytz, Seth Tisue, jvican, Eyal Farago, Philippus Baalman, Martijn Hoekstra, Stefan Zeiger, howtonotwin, Jasper Moeys, Cong Zhao, Piotr Kukielka, Rex Kerr, Ben Elliott, id.ilych, Markus Hauck, mkeskells, Steve Robinson, Viktor Klang, ghik, Ólafur Páll Geirsson, Aaron S. Hawley, Janek Bogucki, Håkon Hjelde Wold, Jonathan Frawley, Dale Wijnand, Marconi Lanna, Pavel Petlinsky, Antoine Gourlay, Alex Levenson, Shohei Shimomura, Teemu Lehtinen!

Scala 2.12 Notes

The release notes for Scala 2.12.0 have important information applicable to the whole 2.12 series.

Obtaining Scala

Scala releases are available through a variety of channels, including (but not limited to):

Pre-release

Scala 2.13.0-M3

@adriaanm adriaanm released this Jan 31, 2018 · 2062 commits to 2.13.x since this release

Thanks to Miles Sabin's hard work (sponsored by Lightbend), this milestone adds support for literal types, as well as improving the compiler with better support for typelevel programming, to benefit libraries such as Shapeless. More of this is coming in M4.

The standard library now adheres to the compact1 profile, enabling a signification reduction of the deployment footprint of Scala applications.

Most importantly, this is the last 2.13 milestone with the old collection library! The next (and last) milestone of this series will integrate the new collections incubating at https://github.com/scala/collection-strawman/. For the next few months, our focus will be on integrating, refining, optimizing the new implementation. Our foremost concern is to ensure a smooth upgrade experience, and we are eager to hear your feedback on this as you begin porting your projects. We will document how to try out the new collections as soon as binaries are available, so you don't have to wait until M4 (see M4 milestone for target date and open issues).

A special welcome to @joroKr21 and @japgolly, and a shoutout to the growing team of regulars who keep the PR queue filled with excellence and kindness: @som-snytt, @mkeskells and @hrhino! They authored several of the additional PRs we'd like to highlight for this milestone: https://github.com/scala/scala/pulls?q=is%3Amerged+is%3Apr+milestone%3A2.13.0-M3+label%3Arelease-notes.

PS: -Xsource:2.13 is now enabled by default (we overlooked that in the previous milestones). To facilitate upgrading, -Xsource:2.12 allows opting out of a few breaking changes. Starting in 2.13, the source version will be the only option that influences language semantics, obsoleting -Xexperimental and the various -Y flags.

Scala.js compatibility

To use Scala 2.13.0-M3, Scala.js users must upgrade to Scala.js 0.6.22, 1.0.0-M3, or newer versions. Prior releases are not compatible.

Contributors

A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.

This release was brought to you by 46 contributors, according to git shortlog -sn --no-merges v2.13.0-M2..v2.13.0-M3. Thank you, Jason Zaugg, Lukas Rytz, Miles Sabin, Adriaan Moors, A. P. Marki, Harrison Houghton, Mike Skells, jvican, Philippus Baalman, Seth Tisue, Eyal Farago, Stefan Zeiger, Tomas Mikula, Martijn Hoekstra, Janek Bogucki, Jasper Moeys, Rex Kerr, Juliusz Sompolski, Ben Elliott, Markus Hauck, id.ilych, Steve Robinson, mkeskells, Georgi Krastev, Kenji Yoshida, Edin Dudojević, Dhirendra Kumar Kashyap, Nafer Sanabria, Pavel Petlinsky, David Barri, 杨博 (Yang Bo), Arnout Engelen, Teemu Lehtinen, Allison H, cong, ghik, Aaron S. Hawley, svatsan, Julien Richard-Foy, Kamil Kloch, Marconi Lanna, Edmund Noble, Martin Grotzke, Martynas Mickevičius, Matt Sicker, Mike!

Obtaining Scala

Scala releases are available through a variety of channels, including (but not limited to):

Scala 2.11.12

@adriaanm adriaanm released this Nov 9, 2017 · 5085 commits to 2.13.x since this release

Scala 2.11.12 is a maintenance release to allow running Scala 2.11 tooling on Java 9. Five pending backports were merged.

This release addresses (#6108) a privilege escalation vulnerability that was identified in the Scala compilation daemon CVE-2017-15288.

We strongly encourage you to upgrade to the latest stable version of Scala 2.12.x, as the 2.11.x series is no longer actively maintained.

There is a known bug on Java 9 involving the repl: the workaround is to launch it as scala -nobootcp.

More general information about the Scala 2.11 series is available in the release notes for Scala 2.11.1.

Scala 2.10.7

@adriaanm adriaanm released this Nov 9, 2017 · 10633 commits to 2.13.x since this release

Scala 2.10.7 is a maintenance release to bring (partial) Java 9 support to the sbt 0.13 series. A total of three pending backports were merged.

This release addresses (#6128) a privilege escalation vulnerability that was identified in the Scala compilation daemon CVE-2017-15288.

We strongly encourage you to upgrade to the latest stable version of Scala 2.12.x, as the 2.10.x series is no longer actively maintained.

There is a known bug on Java 9 involving the repl: the workaround is to launch it as scala -nobootcp.

More information about the Scala 2.10 series is available in the release notes for Scala 2.10.4. A few more bugs were fixed since then in 2.10.5.

Scala 2.12.4

@adriaanm adriaanm released this Oct 19, 2017 · 2583 commits to 2.13.x since this release

Our benchmarks show a further 5–10% reduction in compile times since 2.12.3.

Improved Java 9 friendliness, with more to come!

  • #6097 Fix runtime reflection of empty package members under Java 9
  • #6098 Adapt to change in Java 9 classloader hierarchy

This release addresses (#6120) a privilege escalation vulnerability that was identified in the Scala compilation daemon CVE-2017-15288.

We'd like to highlight a few of the excellent contributions by @hrhino and @TomasMikula, previewing 2.13 improvements (available now under -Xsource:2.13):

  • #5867 Include the parts of a compound/refinement type in implicit scope
  • #6074 Resolve implicit instances for abstract types, according to the spec
  • #6069 Higher-kinded type variable unification

For Spark, with love:

  • #6101 Make Lazy* classes serializable

Preparing for simplification of named arguments in 2.13:

  • #6089 Deprecate assignments in argument position

Rather than pollute /tmp,

  • #6120 Move compilation daemon portfile under ~/.scalac/

For more details, check out all closed bugs and merged PRs.

As usual for minor releases, Scala 2.12.4 is binary compatible with the whole Scala 2.12 series.

Contributors

A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.

This release was brought to you by 24 contributors, according to git shortlog -sn --no-merges v2.12.3..v2.12.4. Thank you, Jason Zaugg, Lukas Rytz, jvican, Adriaan Moors, A. P. Marki, Harrison Houghton, Tomas Mikula, Philippus Baalman, Miles Sabin, Seth Tisue, Dhirendra Kumar Kashyap, Martijn Hoekstra, Martin Grotzke, Martynas Mickevičius, Matt Sicker, Mike, Mike Skells, Rex Kerr, cong, Allison H, Janek Bogucki, Edmund Noble, Jasper Moeys, Kenji Yoshida!

Scala 2.12 Notes

The release notes for Scala 2.12.0 have important information applicable to the whole 2.12 series.

Obtaining Scala

Scala releases are available through a variety of channels, including (but not limited to):

Scala 2.12.3

@retronym retronym released this Jul 27, 2017 · 729 commits to 2.12.x since this release

Changes

Further significant changes since 2.12.2 include:

  • #5978 Avoid calling static initializers when reflecting on Java classes
  • #5964 New setting -opt-inline-from to control where to inline from
  • #5931 Upgrade to jline 2.14.4
  • #5880 bundle newer scala-parser-combinators (1.0.5->1.0.6)
  • #5879 -Xlint:unused -Ywarn-unused is intuitive
  • #5848 add per-phase profiling to scalac

For more information, check out all closed bugs and merged PRs.

As usual for minor releases, Scala 2.12.3 is binary compatible with the whole Scala 2.12 series.

Contributors

A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.

This release was brought to you by 49 contributors, according to git shortlog -sn --no-merges v2.12.2..v2.12.3. Thank you, Jason Zaugg, Lukas Rytz, Som Snytt, Dale Wijnand, Janek Bogucki, Adriaan Moors, Seth Tisue, Earl St Sauver, Eugene Yokota, Mike Skells, Miles Sabin, Iulian Dragos, 杨博 (Yang Bo), Cody Allen, Harrison Houghton, Jasper Moeys, xuwei-k, Ganesh Prasad Kumble, Rory Graves, Rui Gonçalves, Sayyed, Atiq (Agoda), BrianLondon, Arnout Engelen, chengpohi, joymufeng, kenji yoshida, Adrien Suree, Edmund Noble!

Scala 2.12 Notes

The release notes for Scala 2.12.0 have important information applicable to the whole 2.12 series.

Obtaining Scala

Scala releases are available through a variety of channels, including (but not limited to):