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 nowSymbol(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 inappendedAll
andprependedAll
(#9036) - Increase laziness of
#::
forLazyList
(#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 inSymbol#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):
- Bump the
scalaVersion
setting in your sbt-based project - Download a distribution from scala-lang.org
- Obtain JARs via Maven Central