Scala 2.13.9
The following changes are highlights of this release:
Regression
Library maintainers should avoid publishing libraries using Scala 2.13.9. Please use 2.13.10 instead. 2.13.9 has a regression where binary-incompatible bytecode is emitted for case classes which are also value classes (case class ... extends AnyVal
).
Compatibility with Scala 3
- Tasty Reader: Add support for Scala 3.2 (#10068)
- Tasty Reader: Restrict access to experimental definitions (#10020)
- To aid cross-building, accept and ignore
using
in method calls (#10064 by @som-snytt) - To aid cross-building, allow
?
as a wildcard even without-Xsource:3
(#9990) - Make Scala-3-style implicit resolution explicitly opt-in rather than bundled in
-Xsource:3
(#10012 by @povder) - Prefer type of overridden member when inferring (under
-Xsource:3
) (#9891 by @som-snytt)
JDK version support
- Make
-release
more useful, deprecate-target
, align with Scala 3 (#9982 by @som-snytt) - Support JDK 19 (#10001 by @Philippus)
Warnings and lints
- Add
-Wnonunit-statement
to warn about discarded values in statement position (#9893 by @som-snytt) - Make unused-import warnings easier to silence (support filtering by
origin=
) (#9939 by @som-snytt) - Add
-Wperformance
lints for*Ref
boxing and nonlocalreturn
(#9889 by @som-snytt)
Language improvements
- Improve support for Unicode supplementary characters in identifiers and string interpolation (#9805 by @som-snytt)
Compiler options
- Use subcolon args to simplify optimizer options (#9810 by @som-snytt)
- For troubleshooting compiler, add
-Vdebug-type-error
(and remove-Yissue-debug
) (#9824 by @tribbloid)
Security
- Error on source files with Unicode directional formatting characters (#10017)
- Prevent
Function0
execution duringLazyList
deserialization (#10118)
Bugfixes
- Emit all bridge methods non-final (perhaps affecting serialization compat) (#9976)
- Fix null-pointer regression in
Vector#prependedAll
andVector#appendedAll
(#9983) - Improve concurrent behavior of Java
ConcurrentMap
wrapper
(#10027 by @igabaydulin) - Preserve null policy in wrapped Java
Map
s (#10129 by @som-snytt)
Changes that shipped in Scala 2.12.16 and 2.12.17 are also included in this release.
For the complete 2.13.9 change lists, see all merged PRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.9 is binary-compatible with the whole Scala 2.13 series.
Upgrading from 2.12? Enable -Xmigration
while upgrading 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.
We especially acknowledge and thank A. P. Marki, also known as Som Snytt, who is responsible for an especially large share of the improvements in this release.
This release was brought to you by 27 contributors, according to git shortlog -sn --no-merges @ ^v2.13.8 ^2.12.x
. Thank you A. P. Marki, Lukas Rytz, Seth Tisue, Jamie Thompson, Sébastien Doeraene, Scala Steward, Georgi Krastev, Jason Zaugg, Philippus, Balys Anikevicius, Gilad Hoch, NthPortal, Zhang Zhipeng, Arman Bilge, Dale Wijnand, Dominik Helm, Eric Huang, Guillaume Martres, Harrison Houghton, Krzysztof Pado, Michał Pałka, Zeeshan Arif, counter2015, jxnu-liguobin, mcallisto, naveen, philwalk.
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