github scala/scala v2.13.3
Scala 2.13.3
on GitHub

Scala 2.13.3 is primarily a bugfix release.

It also includes:

  • improvements to warnings and linting
  • experimental -Xasync support

For more detail, read on.

Behavior changes

  • Symbol#toString is now Symbol(foo) instead of the deprecated single-quote form 'foo (#8933)

Bugfixes

  • Fix 2.13-only bug in Java collection converters that caused some operations to perform an extra pass (#9058)
  • Fix 2.13.2 performance regression in Vector: restore special cases for small operands in appendedAll and prependedAll (#9036)
  • Increase laziness of #:: for LazyList (#8985)
  • Allow trailing backslash in string interpolators (#8942)
  • Respect @uncheckedVariance in higher-kinded types (fixing 2.13.2 regression) (#8938)

Warnings and linting

  • Deprecate auto-application of (non-Java-defined) methods with a single empty parameter list (#8833)
    • The PR has instructions for suppressing the warning if it is unwanted
  • Warn by default on mismatch of presence/absence of an empty parameter list when overriding (#8846)
    • -Xlint:nullary-override is no longer accepted, since this now warns by default
  • Discourage multi-argument infix syntax: lint applications (x op (a, b)), also lint operator-name definitions (#8951)
  • Fix @nowarn to use correct semantics for & (#9032)
  • Make -Wunused:imports work again even when -Ymacro-annotations is enabled (#8962)
  • Replace -Wself-implicit with -Xlint:implicit-recursion (#9019)
  • Under -Xsource:3, disallow auto-eta-expansion of SAMs (#9049)

Experimental -Xasync

This successor to scala-async allows usage with other effect systems besides scala.concurrrent.Future.

  • Compiler support for scala-async; enable with -Xasync (#8816)

We will publish a blog post with more detail on this work by @retronym, building on his earlier collaboration with @phaller. In the meantime, see the PR description.

This feature will also be included in the 2.12.12 release.

Other changes

For complete 2.13.3 change lists, see all merged PRs and all closed bugs.

Some changes that will ship in 2.12.12 are also included in this release, most notably:

  • Annotation parsing & @Deprecated (#8781)
  • Fix Scaladoc tool on JDK 11 with -release 8: exclude sig files in Symbol#sourceFile (#8849)

Compatibility

As usual for our minor releases, Scala 2.13.3 is binary-compatible with the whole Scala 2.13 series.

Upgrading from 2.12? Enable -Xmigration during upgrade to request migration advice from the compiler.

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 28 contributors, according to git shortlog -sn --no-merges HEAD ^v2.13.2 ^2.12.x. Thank you A. P. Marki, Jason Zaugg, Seth Tisue, Dale Wijnand, Lukas Rytz, Georgi Krastev, David Barri, Eugene Yokota, Diego E. Alonso Blas, Akhtiam Sakaev, Glenn Liwanag, changvvb, Evgeny Ganchurin, Mike Skells, Martijn Hoekstra, yudedako, Anatolii Kmetiuk, Gilles Peiffer, JyotiSachdeva.ext, Karol Chmist, Kenji Yoshida, Lorenzo Costanzia di Costigliole, NthPortal, Steven Barnes, Sébastien Doeraene, Travis Brown, counter2015, nogurenn.

Thanks to Lightbend for their continued sponsorship of the Scala core team’s efforts. Lightbend offers commercial support for Scala.

Scala 2.13 notes

The release notes for Scala 2.13.0 have important information applicable to the whole 2.13 series.

Obtaining Scala

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

one month ago