chore(deps): update dependency scala to v2.13.17
This MR contains the following updates:
| Package | Change | Age | Confidence | 
|---|---|---|---|
| scala (source) | 
2.12.17 -> 2.13.17
 | 
||
| scala (source) | 
2.12.20 -> 2.13.17
 | 
Release Notes
scala/scala (scala)
v2.13.17: Scala 2.13.17
[wip] to be announced — follow https://contributors.scala-lang.org/t/scala-2-13-17-release-planning/6994
v2.13.16: Scala 2.13.16
The Scala team at Akka (formerly Lightbend) is pleased to announce Scala 2.13.16.
The following changes are highlights of this release:
Breaking change
- On the empty string, 
.tailand.initnow throw (instead of returning the empty string) (#10851 by @sh0hei)- This is a bugfix, but be aware that existing code might, perhaps inadvertently, be relying on the old behavior
 
 
Compatibility
- Support Scala 3.6 in TASTy reader (#10893)
 - Support JDK 24 in optimizer (via ASM upgrade) (#10888 by @Philippus)
 
REPL
- REPL: JLine 3.27.1 (was 3.26.3) and on Windows use JNI not JNA (#10899, #10898, #10882)
- These upgrades hopefully won't be noticed, but, REPL users on Windows take note
 - JNA is no longer a dependency of 
scala-compiler.jar 
 
Align with Scala 3
- Under 
-Xsource:3, deprecate infix named args (#10857 by @som-snytt) 
Errors and warnings
- Fix 2.13.15-only false positives with 
-Wunused:patvars(#10870 by @som-snytt) 
Collections
- Do not use 
rangeHashwhenrangeDiffis 0 (#10912 by @Friendseeker)- This may affect fragile code relying on ordering of hash-based collections
 
 - Deprecate 
collection.mutable.AnyRefMap(#10862 by @wangyum)- Since Scala 2.13.0 it has no performance advantage over 
collection.mutable.HashMap 
 - Since Scala 2.13.0 it has no performance advantage over 
 
More changes
For the complete 2.13.16 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.16 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 many of the improvements in this release.
This release was brought to you by 19 contributors, according to git shortlog -sn --no-merges @​ ^v2.13.15 ^2.12.x. Thank you A. P. Marki, Seth Tisue, Scala Steward, Lukas Rytz, Friendseeker, Ondra Pelech, Philippus Baalman, Benjamin Maurer, Corey O'Connor, Eric Seidel2, Hamza Remmal, Jamie Thompson, João Costa, Kenji Yoshida, Mathias Kools, Rikito Taniguchi, Yuming Wang, rochala, sh0hei.
Thanks to Akka for their continued sponsorship of the Scala 2 team’s efforts. Akka 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 
using scalasetting in your Scala-CLI project - Bump the 
scalaVersionsetting in your sbt or Mill project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.15: Scala 2.13.15
The Scala team at Lightbend is pleased to announce Scala 2.13.15.
The following changes are highlights of this release:
Breaking changes
- 
-Wconf:x,ynow means-Wconf:x -Wconf:y, with y overruling x, rather than the reverse (to align with Scala 3.4+ and with user intuition) (#10708 by @som-snytt) - Compiler plugins: rework and improve phase assembly (#10687 by @som-snytt)
- Plugin authors should check to see if they are affected
 - Plugin users may see strange errors if a plugin is affected and not adjusted by its author
 - Most plugins are not affected
 
 
Compatibility
- Support JDK 23 in optimizer (via upgrade to patched ASM 9.7.0) (#10744)
 - Support Scala 3.5 in TASTy reader (#10811 by @bishabosha)
 - REPL: JLine 3.26.3 (was 3.25.1) (#10827)
 
Features
- Support alternative JVM system images (via 
-system, like javac) (#10801 by @szeiger) - Add 
-Ycollect-statisticsfor collecting statistics without printing them (#10795 by @szeiger) 
Align with Scala 3
- Add 
-Xsource-features:double-definitionsto warn or error for double definitions (#10846 by @som-snytt) - Under 
-Xsource:3, allow importinggiven, for cross-building (#10786 by @som-snytt) - Under 
-Xsource:3, remove by-name restriction for case copy (#10770 by @som-snytt) 
Errors and warnings
- Fix 
-Wconfand-nowarnto be more consistent (#10750 by @som-snytt) - Add 
-Wtostring-interpolatedto warn if interpolator usestoString(#10776 by @som-snytt) - Improve inferred-
Anylint (fixing false positives and false negatives) (#9452 by @som-snytt) - Fix false-positive unused warnings in for comprehensions (#10812 by @som-snytt)
- (Still seeing false positives, or new false positives? see #10870)
 
 - Fix false-positive by-name implicit warnings with 
-Wmacros(#10781 by @som-snytt) - Mention if missing symbol is on the class path (#10774 by @som-snytt)
 - Avoid unused import warnings in REPL (#10769 by @som-snytt)
 - Add 
-Vcyclicto improve reporting of "cyclic reference" errors (#10680 by @som-snytt) 
More changes
For the complete 2.13.15 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.15 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 many of the improvements in this release.
This release was brought to you by 13 contributors, according to git shortlog -sn --no-merges @​ ^v2.13.14 ^2.12.x. Thank you A. P. Marki, Lukas Rytz, Scala Steward, Seth Tisue, Jamie Thompson, Stefan Zeiger, Hamza Remmal, EnzeXing, Marissa, Philippus Baalman, Samuel Chassot, luozexuan, nbauma109.
Thanks to Lightbend for their continued sponsorship of the Scala 2 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 
using scalasetting in your Scala-CLI project - Bump the 
scalaVersionsetting in your sbt or Mill project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.14: Scala 2.13.14
The Scala team at Lightbend is pleased to announce Scala 2.13.14.
The following changes are highlights of this release:
Align with Scala 3
- Introduce 
-Xsource-features, for customizing the behavior of-Xsource:3and-Xsource:3-cross(#10709)- A section of the Scala 3 Migration Guide documents these flags: documentation
 
 
Regression fixes
- Rename 
-Xlint:named-booleansto-Wunnamed-boolean-literal(and no longer include it in-Xlint) (#10704 by @som-snytt) - Fix 
ArrayBuilderregression in Scala 2.13.13 (OutOfMemoryErrorwhen adding empty arrays) (#10722 by @som-snytt) - Fix 2.13.13 regression in Scaladoc compilation when using Scala 3 definitions (#10700 by @bishabosha)
 
Other improvements
- Unused warnings: for macros, by default, look for usages in expansion (#10693 by @som-snytt)
 - REPL: Upgrade to JLine 3.25.1 (was 3.24.1) (#10717)
 - Remove 
SHELLOPTS=viand-Xjline support; reinstate-Xnojline(#10716 by @hvesalai) 
More changes
For the complete 2.13.14 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.14 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 many of the improvements in this release.
This release was brought to you by 9 contributors, according to git shortlog -sn --no-merges @​ ^v2.13.13 ^2.12.x. Thank you A. P. Marki, Lukas Rytz, Seth Tisue, Scala Steward, Jamie Thompson, Antoine Amiguet, Heikki Vesalainen, Robert Stoll, guqicun.
Thanks to Lightbend for their continued sponsorship of the Scala 2 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 
using scalasetting in your Scala CLI project - Bump the 
scalaVersionsetting in your sbt or Mill project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.13: Scala 2.13.13
The Scala team at Lightbend is pleased to announce Scala 2.13.13.
The following changes are highlights of this release:
Language
- Support binary integer literals using 
0b, as in Java (#10656 by @som-snytt) 
Compatibility
- TASTy reader: support Scala 3.4 (#10670 by @bishabosha)
 - Support certain Java libraries compiled on JDK 21 (#10675 by @SethTisue)
 - For JDK 22 support, upgrade to ASM 9.6 (#10576 by @Philippus)
 
Align with Scala 3
- Allow either 
-Xsource:3(for preparing to switch to 3) or-Xsource:3-cross(for crossbuilding on 2 and 3); some existing users of-Xsource:3should switch to-Xsource:3-crossto avoid unwanted behavior changes (#10573 by @som-snytt)- A new section in the Scala 3 Migration Guide documents 
-Xsource:3and-Xsource:3-cross: documentation 
 - A new section in the Scala 3 Migration Guide documents 
 - For migration to 3, accommodate case companion as function (#10648 by @som-snytt)
 - Scala 3 migration warning for implicits found in package prefix (#10621 by @lrytz)
 
Other improvements
- 
-Yreleasesupplements-release, allows access to additional JVM packages (#10543 by @som-snytt) - 
-Xlintnow enables-Xlint:named-booleansto lint unnamed boolean literal args (#10612 by @som-snytt) - Respect 
java.lang.Deprecatedannotation even in Scala sources (#10517 by @kapunga) - Optimize tail recursion on effectively final methods even when 
finalkeyword is absent (#10629 by @som-snytt) - Add 
-Xlint:pattern-shadowto lint pattern varids which are backquotable (#8806 by @som-snytt) - In mixed compilation, allow Java sources to reference 
MODULE$(#10644 by @som-snytt) - Scaladoc: re-align 
-doc-source-urlbehavior with 2.12 (#10581 by @lrytz) 
Known issues
- When upgrading to 2.13.13, existing users of 
-Xsource:3should explicitly consider switching to-Xsource:3-cross. Some behaviors of-Xsource:3have changed, e.g. in result type inference for inherited methods; see new doc page for details - Some library authors who were already using 
-Xsource:3are getting MiMa failures when upgrading to 2.13.13 and switching from-Xsource:3to-Xsource:3-cross. If you’re in this situation, you may need to wait for 2.13.14; see scala/bug#12961 - Users of sbt must upgrade to sbt 1.9.9 to use the 
consoletask to access the 2.13.13 REPL (sbt/sbt#7502); error message isNoSuchMethodError: org.jline.utils.AttributedString.fromAnsi - Regression: Scaladoc generation may fail if you are using the TASTy reader to access Scala 3 dependencies (scala/bug#12955); error message is "Unsupported Scala 3 generic tuple type"; we'll fix it in 2.13.14
 - Regression: on JDK 11 (but not 8 or 17 or 21), the REPL prints a harmless "illegal reflective access" warning at startup (scala/bug#12957); we'll fix it in 2.13.14
 - The inclusion of 
-Xlint:named-booleansin-Xlint(#10612) has already proved at least somewhat controversial, and will likely be adjusted for 2.13.14; you can leave feedback on this at #10704 
More changes
For the complete 2.13.13 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.13 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 many of the improvements in this release.
This release was brought to you by 23 contributors, according to git shortlog -sn --no-merges @​ ^v2.13.12 ^2.12.x. Thank you A. P. Marki, Lukas Rytz, Jamie Thompson, Seth Tisue, Scala Steward, friendseeker, Paul J Thordarson, Philippus Baalman, Shardul Chiplunkar, Stefan Zeiger, Dale Wijnand, Dmitry Komanov, Eugene Yokota, Georgi Krastev, GerretS, Jason Zaugg, Martijn, Mohammad Yousuf Minhaj Zia, Roberto Tyley, Ryan Scheidter, Trey Cahill, c, Dependabot.
Thanks to Lightbend for their continued sponsorship of the Scala 2 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 
using scalasetting in your Scala CLI project - Bump the 
scalaVersionsetting in your sbt or Mill project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.12: Scala 2.13.12
The Scala team at Lightbend is pleased to announce Scala 2.13.12.
The following changes are highlights of this release:
Feature: Quickfixes
For some errors and warnings, the compiler now suggests an edit that could fix the issue. Tooling such as IDEs can then offer the edits, or the compiler itself will make the change if run again with -quickfix.
- Implement quickfixes, aka actionable diagnostics (via 
CodeAction) (#10406 by @eed3si9n) - Add 
-quickfixcompiler option to apply quickfixes to source files (#10482 by @lrytz) - Add quickfixes to some warnings and errors (#10484 by @lrytz)
 
Align with Scala 3
- Emit migration warnings under 
-Xsource:3as fatal warnings, not errors (#10439 by @som-snytt, #10511)- 
-Xmigrationwill demote the errors to warnings - 
-Wconf:cat=scala3-migration:swill silence these errors/warnings altogether 
 - 
 - Warn about 
@elidableunder-Xsource:3(#10377 by @som-snytt) 
Collections
- 
IndexedSeq#headnow throwsNoSuchElementException(notIndexOutOfBoundsException) (#10392 by @som-snytt) 
Regression fixes
- Deduplicate 
JavaDeprecatedAttrinClassfileParser(#10422 by @som-snytt) - Avoid brittle flags encoding for Java enums (#10424 by @som-snytt)
 
Scaladoc tool changes
Library authors should be aware that the behavior of -doc-source-url has changed, as follows:
You may need to adjust your build accordingly, to avoid generating broken source links.
Tooling
The following change is mainly of concern to tooling maintainers.
Other notable changes
For the complete 2.13.12 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.12 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 a large share of the improvements in this release.
This release was brought to you by 12 contributors, according to git shortlog -sn --no-merges @​ ^v2.13.11 ^2.12.x ^366ba2f. Thank you A. P. Marki, Lukas Rytz, Seth Tisue, Scala Steward, Michel Davit, Nicolas Stucki, Alex Leigh, Eugene Yokota, Georgi Krastev, Jamie Willis, Julien Richard-Foy, NthPortal.
Thanks to Lightbend for their continued sponsorship of the Scala 2 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 
using scalasetting in your Scala CLI project - Bump the 
scalaVersionsetting in your sbt or Mill project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.11: Scala 2.13.11
The Scala team at Lightbend is pleased to announce Scala 2.13.11.
The following changes are highlights of this release:
Collections
- Faster 
Vectorconcatenation (#10159 by @ansvonwa) - New 
LinkedHashMap/LinkedHashSetimplementation (#10221 by @liang3zy22) 
Compatibility
- Support JDK 20 and 21 by upgrading to ASM 9.5 (#10363, #10184 by @Philippus)
 - Fix crash reading JDK 21 classfiles (#10397)
 - Support Java 17 
sealedin Java sources and classfiles (#10348, #10105 by @som-snytt) - Support Scala 3.3 in TASTy reader (#10299 by @bishabosha)
 
Align with Scala 3
- Accept 
implicit _,implicit (x: Int)in lambdas, like Scala 3 does (#10327 by @som-snytt) - Deprecate infix type args, as they are dropped in Scala 3 (#10255 by @som-snytt)
 - Allow eta-expansion of methods with dependent types (#10166)
 - Abstract parent 
copydoes not suspend casecopy(#10085 by @som-snytt) - Don't GLB binders of type patterns, use the type directly (#10247)
 - Under 
-Xsource:3, warn that inherited members no longer take precedence over outer definitions in Scala 3 (#10220, #10339) - Under 
-Xsource:3, adjust 2.13.9 change to ignore override type for whitebox macro expansion (#10188 by @som-snytt) - Under 
-Xsource:3, use narrowest type for pt of override (#10198 by @som-snytt) - Under 
-Xsource:3, warn about change to parenless lambda parens (#10320 by @som-snytt) 
Lints and warnings
- Lint select from 
Unit, orIntthat incurs widening (#10372 by @som-snytt) - Lint for integral divisions that are widened to a float (#10369 by @som-snytt)
 - Lint if args adapted to 
Unitand discarded (#10150 by @som-snytt) - Warn that implicit should have explicit type (#10083 by @som-snytt)
 
Other notable changes
- Disallow mixins where super calls bind to vals (#10268)
 - Make scalac's argument-file processing more like javac's in handling spaces and line breaks (#10319 by @som-snytt)
 - Bump JLine and JNA versions (#10318)
 - 
javabootclasspathsupersedesjrt(#10336 by @som-snytt) - Report total errors on stderr (#10272 by @som-snytt)
 - Fix pathologically slow compilation of some pattern matches since 2.13.7 (#10258 by @KisaragiEffective)
 - Provide 
equalsandhashCodeonIterableWrapperagain (fixing 2.13.9 regression) (#10205 by @som-snytt) - Improvements to 
-Vimplicits; errors now show complete implicit search tree (#9944 by @tribbloid) - 
-Vprintdefaults to-Vprint:typer; phases may be prefixed with~to mean "before and after" (#10173 by @som-snytt) 
2.13.11 also includes the changes from Scala 2.12.18. (A few of the most significant, such as those involving JDK 20 and 21 compatibility, are listed above.)
For the complete 2.13.11 change lists, see all merged MRs and all closed bugs.
Known issues
A few regressions have been discovered:
- Exhaustivity checker emits spurious warning when matching on Java enum type (2.13.11 regression) (scala/bug#12800)
 - Duplicated 
@Deprecatedannotations when extending Java interface with deprecated default method causejava.lang.annotation.AnnotationFormatErrorwhen accessed via Java reflection (2.13.11 regression) (scala/bug#12799) 
We'll address these in Scala 2.13.12.
Compatibility
As usual for our minor releases, Scala 2.13.11 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 a large share of the improvements in this release.
This release was brought to you by 28 contributors, according to git shortlog -sn --no-merges @​ ^v2.13.10 ^2.12.x. Thank you A. P. Marki, Lukas Rytz, Seth Tisue, Anselm von Wangenheim, Scala Steward, Liang Yan, Jamie Thompson, jxnu-liguobin, AminMal, Jason Zaugg, Kenji Yoshida, Rituraj, ashish, Chris Kipp, Dale Wijnand, Francesco Kriegel, Georgi Chochov, Goooler, João Costa, Kisaragi Marine, Rafał Sumisławski, Ruslans Tarasovs, Simon R, Sébastien Doeraene, Tomasz Godzik, Zhang Zhipeng, danarmak, hepin.p.
Thanks to Lightbend for their continued sponsorship of the Scala 2 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 
scalaVersionsetting in your sbt project - Bump the 
using scalasetting in your Scala-CLI project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.10: Scala 2.13.10
The Scala team at Lightbend is pleased to announce the availability of Scala 2.13.10.
The following changes are highlights of this release:
Binary compatibility regression fixed
- Fix 2.13.9 regression which broke binary compatibility of case classes which are also value classes (#10155)
 
Library maintainers should avoid publishing libraries using Scala 2.13.9.
Other notable changes
- Fix 2.13.9 regression in linting, causing spurious "variable x is never used" warnings (#10154)
 - 
-Xsource:3now respects refinements by whitebox macro overrides (#10160 by @som-snytt) - Scaladoc tool: fix parsing bug which could cause very slow performance or incorrect output (#10175 by @liang3zy22)
 - Restore 
-Vprint-args, for echoing arguments provided to compiler (#10164 by @som-snytt) 
For the complete 2.13.10 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.10 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 6 contributors, according to git shortlog -sn --no-merges @​ ^v2.13.9 ^2.12.x. Thank you A. P. Marki, Liang Yan, Seth Tisue, Antoine Parent, Luc Henninger, 梦境迷离.
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 
scalaVersionsetting in your sbt-based project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.9: 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 
usingin 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 
-releasemore useful, deprecate-target, align with Scala 3 (#9982 by @som-snytt) - Support JDK 19 (#10001 by @Philippus)
 
Warnings and lints
- Add 
-Wnonunit-statementto 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 
-Wperformancelints for*Refboxing 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 
Function0execution duringLazyListdeserialization (#10118) 
Bugfixes
- Emit all bridge methods non-final (perhaps affecting serialization compat) (#9976)
 - Fix null-pointer regression in 
Vector#prependedAllandVector#appendedAll(#9983) - Improve concurrent behavior of Java 
ConcurrentMapwrapper (#10027 by @igabaydulin) - Preserve null policy in wrapped Java 
Maps (#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 MRs 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 
scalaVersionsetting in your sbt-based project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.8: Scala 2.13.8
The Scala team at Lightbend is pleased to announce the availability of Scala 2.13.8.
This is a modest, incremental release focused on addressing regressions in 2.13.7.
Highlights
- Make REPL work again on Mac M1 (upgrade JLine & JNA) (#9807 by @SethTisue)
 - Fix slicing of views of 
IndexedSeqs (including fixing 2.13.7reverseIteratorregression) (#9799 by @som-snytt) - Fix 2.13.7 regression in implicit resolution (#9829 by @joroKr21)
 - Fix 2.13.7 
releaseFenceregression affecting GraalVM compatibility (#9825 by @lrytz) - Fix 2.13.7 regression affecting wildcards and F-bounded types (#9806 by @joroKr21)
 
A few small changes that will ship in 2.12.16 are also included in this release.
For the complete 2.13.8 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.8 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.
This release was brought to you by 8 contributors, according to git shortlog -sn --no-merges @​ ^v2.13.7 ^2.12.x. Thank you A. P. Marki, Seth Tisue, Georgi Krastev, Jason Zaugg, Lukas Rytz, Martijn Hoekstra, Philippus Baalman, Chris Kipp.
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 
scalaVersionsetting in your sbt-based project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.7: Scala 2.13.7
The Scala team at Lightbend is pleased to announce the availability of Scala 2.13.7.
Align with Scala 3
- Update TASTy reader to support Scala 3.1 (#9791 by @bishabosha)
 - Allow 
import x.{*, given}under-Xsource:3(#9724 by @smarter) - Allow 
casein pattern bindings even without-Xsource:3(#9721 by @smarter) - Deprecate top-level wildcard type parameters (#9712 by @som-snytt)
 
JDK and Java compatibility
- Support JDK 18 (#9702 by @SethTisue)
 - Support JDK 16 records in Java sources (#9551 by @harpocrates)
 - Allow concrete private interface methods in Java sources (#9748 by @dengziming)
 - Use 
StringConcatFactoryfor string concatenation on JDK 9+ (#9556 by @harpocrates) 
Android compatibility
- Add 
ClassValueCompatto support systems withoutjava.lang.ClassValue(such as Android) (#9752 by @nwk37011) - For Android compatibility, make 
Statics.releaseFence()also catchNoSuchMethodExceptionforjava.lang.invoke.VarHandle.releaseFence()call (#9739 by @nwk37011) 
Concurrency
- Fix asymmetric failure behavior of 
Future#{zip,zipWith,traverse,sequence}by making them fail fast regardless of ordering (#9655 by @lihaoyi) 
Collections
- Make 
ArrayBuffer's iterator fail fast when buffer is mutated (#9258 by @NthPortal) - Fix 
ArrayOpsbugs (by avoidingArraySeq#array, which does not guarantee element type) (#9641 by @som-snytt) - Deprecate 
IterableOps.toIterable(#9774 by @lrytz) 
Other changes
- Accept supplementary Unicode characters in identifiers (#9687 by @som-snytt)
 - Improve tab completion and code assist in REPL (#9656 by @retronym)
 
Some small changes that will ship in 2.12.16 are also included in this release.
For the complete 2.13.7 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.7 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.
This release was brought to you by 25 contributors, according to git shortlog -sn --no-merges @​ ^v2.13.6 ^2.12.x. Thank you A. P. Marki, Lukas Rytz, Seth Tisue, Jason Zaugg, Jamie Thompson, NthPortal, Georgi Krastev, Guillaume Martres, Dale Wijnand, Martijn Hoekstra, Alec Theriault, Rafał Sumisławski, Matt Dziuban, Li Haoyi, Doug Roper, Sébastien Doeraene, VladKopanev, danicheg, dengziming, megri, nwk37011, Magnolia.K, 梦境迷离, Mathias, James Judd.
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 
scalaVersionsetting in your sbt-based project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.6: Scala 2.13.6
The Scala 2 team at Lightbend is pleased to announce the availability of Scala 2.13.6.
Highlights
- TASTy Reader support for Scala 3.0.0 (#9617 by @bishabosha)
 - The splain compiler plugin by @tek was integrated into the compiler, available with the 
-Vimplicitsand-Vtype-diffsflags (#7785) - Escaped double quotes now work as expected in string interpolations, both 
s"\""ands"$""(#8830 by @eed3si9n and #9536 by @martijnhoekstra) 
Other Changes
- Optimized 
BigIntimplementation (#9628) by @denisrosset - Support JDK15 text blocks in Java parser (#9548) by @harpocrates
 - Stricter override checking for protected Scala members which override Java members (#9525) by @kynthus
 - Check 
private[this]members in override checking (#9542) - More accurate outer checks in patterns (#9504)
 - Allow renaming imports from 
_root_(#9482) by @som-snytt - Make more annotations extend 
ConstantAnnotation(9336) by @BalmungSan - A number of syntax changes were added to simplify cross-building between Scala 2 and 3
- Don't error (only warn) on symbol literals under 
-Xsource:3(#9602) - Support writing 
&instead ofwithin types under-Xsource:3(#9594) - Support Scala 3 vararg splice syntax under 
-Xsource:3(#9584) - Support Scala 3 wildcard and renaming imports under 
-Xsource:3(#9582) - Allow soft keywords open and infix under 
-Xsource:3(#9580) - Align leading infix operator with Scala 3 improvements (#9567)
 - Support 
?as wildcard marker under-Xsource:3(#9560) - Support case in pattern bindings under 
-Xsource:3(#9558) - Parse 
+_and-_in types as identifiers under-Xsource:3to support Scala 3.2 placeholder syntax (#9605) 
 - Don't error (only warn) on symbol literals under 
 
Some small changes that will ship in 2.12.14 are also included in this release.
For the complete 2.13.6 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.6 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.
This release was brought to you by 25 contributors, according to git shortlog -sn --no-merges HEAD ^v2.13.5 ^2.12.x. Thank you A. P. Marki, Lukas Rytz, Dale Wijnand, Jamie Thompson, Seth Tisue, 梦境迷离, Guillaume Martres, Martijn Hoekstra, Denis Rosset, Aaron S. Hawley, Kai, Eugene Yokota, Jason Zaugg, Anatolii Kmetiuk, Ikko Ashimine, superseeker13, Eugene Platonov, Diego E. Alonso Blas, Filipe Regadas, Hatano Yuusuke, Luis Miguel Mejía Suárez, Rafał Sumisławski, Alec Theriault, Tom Grigg, Torsten Schmits.
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 
scalaVersionsetting in your sbt-based project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.5: Scala 2.13.5
Scala 2.13.5
The Scala 2 team at Lightbend is pleased to announce the availability of Scala 2.13.5.
Highlights
- TASTy reader: add support for Scala 3.0.0-RC1 (#9501, #9394, #9357) — thank you @bishabosha!
 - Allow name-based extractors to be irrefutable (#9343) — thank you @martijnhoekstra!
 - Upgrade to ASM 9.1, for JDK 16 and 17 support in the optimizer (#9489, #9480)
 
Other changes
- Assorted improvements to exhaustivity checking in pattern matching (#9479, #9472, #9474, #9313, #9462)
 - Assorted improvements to handling of higher-kinded types, aligning with Scala 3 (#9400, #9404, #9405, #9414, #9417, #9439) — thank you @joroKr21!
 - Make 
-targetsupport JVM 13, 14, 15, 16, and 17 (#9489, #9481) - Omit 
@nowarnannotations from generated code, for forwards compatibility at compile-time (#9491) - Add linting of unused context bounds (via 
-Wunused:syntheticsor-Wunused:params) (#9346) — thank you @som-snytt! - Lift artificial restrictions on 
ConstantAnnotations (#9379) - Make Java 
Mapwrappers handle nulls according toput/removecontract (#9344) — thank you @som-snytt! - Make language specification available as a PDF (#7432) — thank you @sake92!
 
Some small changes that will ship in 2.12.14 are also included in this release.
For complete 2.13.5 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.5 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.
This release was brought to you by 23 contributors, according to git shortlog -sn --no-merges HEAD ^v2.13.4 ^2.12.x. Thank you Seth Tisue, A. P. Marki, Dale Wijnand, NthPortal, Jamie Thompson, Lukas Rytz, Martijn Hoekstra, Georgi Krastev, Jason Zaugg, Jasper Moeys, Sakib Hadziavdic, Anatolii Kmetiuk, Arnaud Gourlay, Marcono1234, Chia-Ping Tsai, Mike Skells, Stefan Zeiger, Waleed Khan, Yann Bolliger, Guillaume Martres, 梦境迷离, Ethan Atkins, Darcy Shen.
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 
scalaVersionsetting in your sbt-based project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.4: Scala 2.13.4
Scala 2.13.4:
- Restores default global 
ExecutionContextto 2.12 behavior - Improves pattern matching, especially in exhaustivity checking
 - Adds experimental support for consuming some libraries built by Scala 3
 
and more! Details below.
Concurrency
NOTE The following change affects parallelism and performance.  If you use scala.concurrent.ExecutionContext.global you may want to adapt your code.  (But note that Akka is unaffected, because it uses its own execution contexts.)
In 2.13.0 we made ExecutionContext.global "opportunistic". This enabled "batching" of nested tasks to execute on the same thread, avoiding an expensive context switch. That strategy requires user code to wrap long-running and/or blocking tasks with blocking { ... } to maintain parallel execution.
For 2.13.4, we restore 2.12's default non-batching behavior, which is safer for arbitrary user code. Users wanting increased performance may override the default, if they believe their code uses blocking correctly. We make that choice available via ExecutionContext.opportunistic.
Using ExecutionContext.opportunistic requires a bit of extra boilerplate, made necessary by binary compatibility constraints on the standard library. Detailed instructions are in ExecutionContext.global's Scaladoc.
Further detail: #9270/#9296/scala/bug#12089,
Pattern matching
The pattern matcher is now much better at warning you if a match isn't exhaustive.
The following types of matches no longer disable exhaustivity checking:
- guards (
case <pattern> if <condition> => ...) #9140 - custom extractors (user-defined 
unapplyorunapplySeq) #9140/#9162 - unsealed types, if you opt in via 
-Xlintor-Xlint:strict-unsealed-patmat#9140/#9299 
Additionally,
- private classes are now treated as if sealed #9211
 - singleton types no longer prematurely widen #9209
 - tuples are handled properly #9147/#9163/#9147
 
New warnings reported can be resolved by:
- adding any missing cases
 - in the case of complementary guards (e.g. 
if n > 0andif n <= 0) by dropping the last guard - for custom extractors: demarking irrefutable extractors as such, by defining the return type as 
Some - for sealed types: marking traits or parent classes sealed, parent classes abstract, and classes final
 - explicitly declaring the default case: 
case x => throw new MatchError(x) 
Otherwise, your options for suppressing warnings include:
- annotate the scrutinee with 
@unchecked, such as(foo: @​unchecked) match { ... } - disable exhaustivity checking in the presence of guards and custom extractors with 
-Xnon-strict-patmat-analysis - disable exhaustivity checking of unsealed types with 
-Xlint:-strict-unsealed-patmat - use 
-Wconfto suppress the warnings globally, with e.g.-Wconf:msg=match may not be exhaustive:i 
Scala 3 interop
This release enables the Scala 2 compiler to consume some libraries built in Scala 3. #9109/#9293
The new capability is experimental. To enable it, add -Ytasty-reader to your compiler options.
Not all Scala 3 built libraries are supported, because not all Scala 3 features can be supported. The library author must stay within the supported subset.
For more details and caveats see the blog post Forward Compatibility for the Scala 3 Transition.
Standard library changes
- When compiling on JDK 15, avoid clash with new 
CharSequence#isEmptymethod #9292- The clash is avoided by making 
CharSequencewrappers inPredefnon-implicit. - The change is binary compatible, but not source compatible. Call sites may need updating.
 
 - The clash is avoided by making 
 - Make 
LazyList.cons.applylazier #9095 - Make 
MapView#valuespreserve laziness #9090 - Make 
ListBuffer's iterator fail when the buffer is mutated #9174 - Un-deprecate useful 
StringOpsmethods, despite Unicode concerns #9246 
Compiler changes
- Allow using 
classOfwith object type (e.g.classOf[Foo.type]) #9279 - Fix back-quoted constructor params with identical prefixes #9008
 - Enable range positions (
-Yrangepos) by default #9146 
Other changes
Some changes that will also ship in 2.12.13 are also included in this release, most notably:
- When compiling on JDK 15, avoid clash with new 
CharSequence#isEmptymethod #9292- To avoid the clash, 
implicitwas removed fromPredef's implicit conversions toSeqCharSequenceandArrayCharSequence. - This change is binary compatible, but not source compatible. User code may need updating. See MR for details.
 
 - To avoid the clash, 
 
For complete 2.13.4 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.13.4 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.
This release was brought to you by 40 contributors, according to git shortlog -sn --no-merges HEAD ^v2.13.3 ^2.12.x. Thank you Jamie Thompson, Dale Wijnand, A. P. Marki, NthPortal, Lukas Rytz, Seth Tisue, Jason Zaugg, Georgi Krastev, Eugene Yokota, Martijn Hoekstra, Trey Cahill, Rado Buransky, Ergys Dona, Mike Skells, Greg Pfeil, Kazuhiro Sera, Mitsuhiro Shibuya, NagaChaitanya Vellanki, Sergei Petunin, Sébastien Doeraene, Takahashi Osamu, Viktor Klang, mwielocha, Nicolas Stucki, Jan Arne Sparka, Philippus Baalman, Glenn Liwanag, Rafał Sumisławski, Renato Cavalcanti, Sergei, nooberfsh, Dmitrii Naumenko, Simão Martins, counter2015, Jian Lan, Liu Fengyun, Kanishka, Julien Richard-Foy, Janek Bogucki, Björn Regnell.
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 
scalaVersionsetting in your sbt-based project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.3: Scala 2.13.3
Scala 2.13.3 is primarily a bugfix release.
It also includes:
- improvements to warnings and linting
 - experimental 
-Xasyncsupport 
For more detail, read on.
Behavior changes
- 
Symbol#toStringis 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 inappendedAllandprependedAll(#9036) - Increase laziness of 
#::forLazyList(#8985) - Allow trailing backslash in string interpolators (#8942)
 - Respect 
@uncheckedVariancein 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 MR 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-overrideis 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 
@nowarnto use correct semantics for&(#9032) - Make 
-Wunused:importswork again even when-Ymacro-annotationsis enabled (#8962) - Replace 
-Wself-implicitwith-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 MR 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 MRs 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 
scalaVersionsetting in your sbt-based project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.2: Scala 2.13.2
Scala 2.13.2 has:
- a brand-new 
Vectorimplementation - configurable warnings
 - an improved REPL (now JLine 3 based)
 - bugfixes and more
 
Vector
- Rewrite 
Vector(using "radix-balanced finger tree vectors"), for performance (#8534) 
Small vectors are now more compactly represented. Some operations are now drastically faster on large vectors. A few operations may be a little slower.
Kudos to @szeiger for this work.
Configurable warnings
- Add 
-Wconfflag for configurable warnings,@nowarnannotation for local suppression (#8373) 
Note that scala-collection-compat 2.1.6 (or newer) provides @nowarn for cross-built projects (as a no-op on 2.11 and 2.12).
Special thanks to Roman Janusz (@ghik), whose silencer plugin was the basis for this work.
REPL improvements
- REPL: upgrade to JLine 3 (benefits include multi-line editing) (#8036)
 - Default true 
-Yrepl-class-basedand-Yuse-magic-imports(#8748)- 
-Yrepl-class-basedavoids deadlocks - 
-Yuse-magic-importsimproves performance for long sessions 
 - 
 - Improve REPL display of method types (#8319)
 
Special thanks to @som-snytt for spearheading the JLine 3 upgrade.
We are tracking JLine-related improvements and regressions here. There some known regressions in some less-vital features and behaviors; we plan to address these in future 2.13.x releases.
Language changes
- Unicode escapes are now ordinary escape sequences (not processed early) (#8282)
 
Compiler fixes
- Plug many variance holes (in higher-kinded types, refined types, and private inner classes) (#8545)
 - Fix variance handling for parameterized type aliases (#8651)
 - Exclude universal members (
getClass,toString, etc) from root module import (#8541) - Matching strings makes switches in bytecode (#8451)
 
Deprecations
- Deprecate eta-expansion, via trailing underscore, of methods with no argument lists (#8836)
 - Deprecate nested class shadowing in "override" position (#8705)
 - Deprecate numeric conversions that lose precision (e.g., 
LongtoDouble) (#8679) - Deprecate numeric widening of numeric literals which are not representable with 
Float/Double(#8757) - Deprecate old-style constructor syntax (#8591)
 
Improvements from the future
- There is no more 
-Xsource:2.14, only-Xsource:3(#8812) - Allow infix operators at start of line (under 
-Xsource:3) (#8419) - Case class copy and apply inherit access modifiers from constructor (under 
-Xsource:3) (#7702) 
Other fixes and improvements
- Un-deprecate default floating point 
Orderings; issue migration warning instead under-Xmigration(#8721) - Support macro annotation expansions in 
-Wmacros:MODE(#8799) - Scaladoc can now link to Javadoc for the Java standard library for JDK versions 9 and up (overridable with new 
-jdk-api-doc-baseflag) (#8663) - 
sys.envnow throws on null environment variable (#8579) - Make the hashcode method 
##have no parameter list (instead of a single empty one) (#8814) 
This is not a complete list of changes. For that, see all merged MRs and all closed bugs.
2.13.2 also includes the changes in Scala 2.12.11, most notably:
- Make optimizer work on JDK 13+ (#8676).
 
Compatibility
As usual for our minor releases, Scala 2.13.2 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.
This release was brought to you by 45 contributors, according to git shortlog -sn --no-merges HEAD ^v2.13.1 ^2.12.x. Thank you Som Snytt, Jason Zaugg, Lukas Rytz, Dale Wijnand, Seth Tisue, Diego E. Alonso Blas, Georgi Krastev, Martijn Hoekstra, Eugene Yokota, Harrison Houghton, Stefan Zeiger, NthPortal, Anatolii, Linas Medžiūnas, Aaron S. Hawley, Guillaume Martres, Josh Lemer, Sébastien Doeraene, Jasper Moeys, Julien Truffaut, Oskar Haarklou Veileborg, Lucas Cardoso, Andrew Valencik, Adriaan Moors, yudedako, Steven Barnes, Brian Wignall, Ausmarton Zarino Fernandes, Oguz Albayrak, Philippus, Viktor Klang, Yang Bo, bnyu, psilospore, sinanspd, wholock, Jamie Thompson, Hamza Meknassi, Janek Bogucki, Flash Sheridan, Fabian Page, Kenji Yoshida, Denis Rosset, Lucas S Cardoso, Chris Birchall.
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 
scalaVersionsetting in your sbt-based project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.1: Scala 2.13.1
Scala 2.13.1 is primarily a bug fix release that fixes several regressions in 2.13.0.
Collection-related regressions
- Revert 
Stream.Consto the 2.12 encoding (#8354) - Don't rebuild 
scala.Seqto drop elems inunapplySeq(#8340) - Blacken subtrees where necessary in 
RedBlackTree.take(#8287) - 
Iterator#flatMap#hasNextcallsouter#hasNext1 time, not 2-3 times (#8220) - 
s.c.Map#valuesreturns a strictIterablerather than aView(#8195) - 
Vector.from(ArraySeq)copies elems rather than reusingunsafeArray(#8194) - Fix 
mutable.HashSet.addAll: remove redundant call to super method (#8192) - Fix 
mutable.ArraySeq.ofChar#addString(#8176) - Fix 
HashMap#mapValuesInPlace(#8421) 
Other regressions
- Avoid spurious "illegal cyclic reference" errors (#8382)
 - Stabilize args of 
apply(#8202) - Reject incomplete implicit dictionaries (#8201)
 - Process exit code on script errors (#8169)
 - Fix type inference involving wildcards (#8129)
 
Other bug fixes and improvements
- Extend the Gradle / sbt 0.13 leniency to Windows (#8408)
 - Avoid unnecessary 
toSeqconversions inSeqmethods (#8374) - Avoid memory leaks in 
Streammethods (#8367) - Precompile -i files for script runner (#8349)
 - Stop warning on higher-kinded usage without -language:higherKinds (#8348)
 - Simplify reporters (#8338)
 - More efficient 
ArraySeqiteration (#8300) - Enable hyperlinking to Java docs (#8284)
 - Parent 
implicitNotFoundmessage is supplemental (#8280) - Add protected and private visibility filters to scaladoc (#8183)
 - Fix vulnerability in jQuery used in ScalaDoc (#8179)
 - Synthesize a PartialFunction from function literal (#8172)
 - Fix parsing of 
try(#8071) - Support emitting Java 9 bytecode by adding "-target:9" (#8060)
 - Deprecate 
mutable.MultiMap(#8005) - Add syntactic sugar for 
if(_)(#7707) - A foreign definition induces ambiguity (#7609)
 
This is not a complete list of changes. For that, see all merged MRs and all closed bugs.
Compatibility
Upgrading from 2.12? Enable -Xmigration while upgrading to request migration advice from the compiler.
As usual for our minor releases, Scala 2.13.1 is binary-compatible with the whole Scala 2.13 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 43 contributors, according to git shortlog -sn --no-merges HEAD ^v2.13.0 ^upstream/2.12.x. Thank you Som Snytt, Lukas Rytz, Aaron S. Hawley, exoego, Jason Zaugg, Dale Wijnand, Seth Tisue, Stefan Zeiger, NthPortal, Martijn Hoekstra, Jasper Moeys, Josh Lemer, Isaac Levy, Harrison Houghton, Benjamin Kurczyk, redscarf, 杨博 (Yang Bo), Adriaan Moors, Anatolii Kmetiuk, Eugene Yokota, Georgi Krastev, Miles Sabin, Philippus, xuwei-k, Magnolia.K, Mike Skells, 2efPer, Mitesh Aghera, NomadBlacky, Guillaume Martres, Odd Möller, yui-knk, Georg, Flash Sheridan, Diego E. Alonso Blas, Sébastien Doeraene, Atsushi Araki, psilospore, Akhtyam Sakaev, wanying.chan, Li Haoyi, M.Shibuya, Kota Mizushima.
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 
scalaVersionsetting in your sbt-based project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.13.0: Scala 2.13.0
We are delighted to announce the availability of Scala 2.13.0!
Release summary
2.13 improves Scala in the following areas:
- Collections: Standard library collections have been overhauled for simplicity, performance, and safety. This is the centerpiece of the release.
 - 
Standard library: 
Futureis faster and more robust. Elsewhere, useful classes and methods have been added. - Language: Literal types, partial unification, by-name implicits, more.
 - Compiler: 5-10% faster, deterministic output, improved optimizer.
 
To learn more, read on.
Collections redesign
Standard library collections have been overhauled for simplicity, performance, and safety.
This is the centerpiece of the release.
Most ordinary code that used the old collections will continue to work as-is, except as detailed below.
The most important collections changes are:
- 
Simpler method signatures
- No more 
CanBuildFrom. Transformation methods no longer take an implicitCanBuildFromparameter. - The resulting library is easier to understand (in code, Scaladoc, and IDE code completion).
 - It also makes user code compile faster.
 - A new 
BuildFromimplicit is used in a handful of places that need it. 
 - No more 
 - 
Simpler type hierarchy
- No more 
TraversableandTraversableOnce.- They remain only as deprecated aliases for 
IterableandIterableOnce. 
 - They remain only as deprecated aliases for 
 - Parallel collections are now a separate module.
- As a result, 
GenSeq,GenTraversableOnce, et al are gone. 
 - As a result, 
 
 - No more 
 - 
Immutable 
scala.Seq- 
Seqis now an alias forcollection.immutable.Seq- Before, it was an alias for the possibly-mutable 
collection.Seq. 
 - Before, it was an alias for the possibly-mutable 
 - This also changes the type of varargs in methods and pattern matches.
 - Arrays passed as varargs are defensively copied. (#6970)
 
 - 
 - 
Simplified views that work
- 
collection.Views have been vastly simplified and should now work reliably. 
 - 
 - 
Alphanumeric method names
- All symbolic operators are now just aliases for descriptive alphanumeric method names.
 - Examples: 
++(alias forconcat),+:(alias forprepended),:+(alias forappended), and so on. 
 - 
New, faster 
HashMap/Setimplementations - 
New concrete collections
- 
immutable.LazyListreplacesimmutable.Stream.Streamhad different laziness behavior and is now deprecated. (#7558, #7000) - 
immutable.ArraySeqis an immutable wrapper for an array; there is also a mutable version - 
mutable.CollisionProofHashMapguards against denial-of-service attacks (#7633) - 
mutable.ArrayDequeis a double-ended queue that internally uses a resizable circular buffer (scala/collection-strawman#490) - 
mutable.Stackwas reimplemented (and undeprecated)- In 2.12, both immutable and mutable 
Stacks wereList-based and deprecated. - 2.13 adds a brand-new 
mutable.Stackbacked by anArrayDeque. - 
immutable.Stackwas removed. 
 - In 2.12, both immutable and mutable 
 
 - 
 - 
New abstract collection type 
SeqMap- 
immutable.SeqMapprovides immutable maps that maintain insertion order. (#7954) - Implementations: 
VectorMap(#6854) andTreeSeqMap(#7146) (in addition to the already existingListMap). 
 - 
 
Additional collections changes:
- 
New 
to(Collection)method- Replaces old 
to[Collection]method. - The argument is the companion object of the desired collection type, for example 
.to(Vector). - The API change enables support for all collection types (including 
Map,BitSet, et al). 
 - Replaces old 
 - 
No more 
collection.breakOut- It required 
CanBuildFrom, which no longer exists. - To avoid constructing intermediate collections, use 
.viewand.to(Collection)instead. 
 - It required 
 - 
ListandVectorare safer- They now offer safe publication under the Java Memory Model, using 
releaseFence(#6425) 
 - They now offer safe publication under the Java Memory Model, using 
 - 
Added in-place operations on mutable collections
- 
filterInPlace,mapInPlace,flatMapInPlace, and others. - These methods update the original collection in-place, rather than creating a new collection to hold the results.
 
 - 
 - 
Java interop has moved
- Extension methods for Scala are now in 
scala.jdk - Explicit converters for Java are in 
scala.jdk.javaapi - The reorganization centralizes all to-and-from-Java converters, including both collection and non-collection types, in a single package.
 - Added 
Stepper, which is likeIteratorbut supports efficient unboxed iteration, Java interop. (#7458) 
 - Extension methods for Scala are now in 
 - 
Collection serialization has changed
- Collections now use the serialization proxy pattern uniformly whenever possible. (#6676, #7624, scala-dev#562, sbt/sbt#89)
 - In some classloading environments, notably sbt's non-forked test execution, code changes may be needed.
 
 - 
Added 
.unfold- This allows constructing a collection or iterator from an initial element and a repeated 
Option-returning operation, terminating onNone. - This was added collection companion objects and to 
Iterator(#6851) 
 - This allows constructing a collection or iterator from an initial element and a repeated 
 - 
Added 
.lengthIs/.sizeIsand.sizeCompare - 
Error-prone 
Mapmethods deprecated - 
Added 
.lazyZip- Together with 
.zipon views, this replaces.zipped(now deprecated). (scala/collection-strawman#223) 
 - Together with 
 - 
Added 
.tapEachmethod- This allows inserting side-effects in a chain of method calls on a collection or view. (#7124)
 
 - 
Added 
.updatedWithandupdateWithmethods toMaps - 
Added 
.maxOption,.minOption,.maxByOption,.minByOption- These methods safely handle the empty case. (#6574)
 
 - 
Deprecated symbolic methods with multiple arguments
- Such methods may be disallowed entirely in a future Scala. (#6719)
 
 - 
Adding custom collections and operations works very differently
- See documentation links below.
 
 
To learn more about the new APIs and how to adapt your code, consult:
- 
Scala 2.13's Collections
- Intro for newcomers. Skip if the collections from Scala 2.12 and earlier are already familiar to you.
 
 - The Architecture of Scala 2.13 Collections
 - Implementing Custom Collections (Scala 2.13)
 - Adding Custom Collection Operations (Scala 2.13)
 - 
Migrating a Project to 2.13's Collections.
- This document describes the main changes for collection users that migrate to Scala 2.13 and shows how to cross-build on Scala 2.11/12/13.
 
 - 
scala-collection-compat
- This new module provides shims for cross-building on Scala 2.11/12/13.
 - It also provides two sets of Scalafix rewrites: one for cross-building, one for moving to 2.13 only.
 
 
We welcome assistance in continuing to expand and improve these documents.
Concurrency
Futures were internally redesigned, with these goals:
- provide expected behavior under a broader set of failure conditions
 - provide a foundation for increased performance
 - support more robust applications
 
Details:
- Updated and revised our 
FutureandPromiseimplementation. (#6610, #7663)- Among other changes, handling of 
InterruptedExceptionandRejectedExecutionExceptionis improved. 
 - Among other changes, handling of 
 - Made the global 
ExecutionContext“batched”. (#7470)- (This change was reverted in Scala 2.13.4. The batched executor is available for opt-in, but will no longer be the default. See the 2.13.4 release notes.)
 
 - Added synchronous ("parasitic") 
ExecutionContext. (#7784) 
Standard library: additions
- 
Integrated Java interop (#7987)
- The old 
scala-java8-compatmodule is now part of the standard library. (#7458) - This provides converters for options, function types and Java streams.
 - (As mentioned above, collection converters such as 
JavaConverterswere moved to fit into the new scheme.) 
 - The old 
 - 
new: 
scala.util.Using - 
new: use 
sinterpolator in pattern matches- Provides a simple string matcher as the dual of the simple string interpolator. (#7387)
 - Example: 
val s"$day-$month-$year" = "11-June-2019" 
 - 
new: 
pipeandtap- These chaining operations are available via 
import scala.util.chaining._. (#7007) - Example: 
3.pipe(_ * 5)evaluates to 15 - Example: 
9.tap(println)first prints 9, then returns it 
 - These chaining operations are available via 
 - 
new: 
.toIntOption, et al - 
new: named 
Productelements- Case classes and other 
Products now haveproductElementNamesandproductElementNamemethods. (#6972) 
 - Case classes and other 
 - 
new: 
.withRight,.withLeft - 
new: 
Ordering.Double.TotalOrdering,Ordering.Float.TotalOrdering- The old orderings remain available at: 
Ordering.Double.IeeeOrdering,Ordering.Float.IeeeOrdering - Example: 
List(2.0, 1.0).sortednow warns unless you import or pass an ordering. (#6410) 
 - The old orderings remain available at: 
 - 
new: converters between functions and extractors
- New methods provide conversions among optional 
Functions,PartialFunctions and extractor objects. (#7111) 
 - New methods provide conversions among optional 
 - 
new: 
@unusedannotation- This annotation is useful for suppressing warnings under 
-Xlint. (#7623) 
 - This annotation is useful for suppressing warnings under 
 
Standard library: changes
- 
Library fits in compact1 profile
- This reduces deployment footprint for Scala applications. (#6164, scala/bug#10559)
 
 - 
OptionextendsIterableOnce- This improves type inference when calling an overloaded 
flatMap. (#8038) 
 - This improves type inference when calling an overloaded 
 - Undeprecate 
linesIteratorto avoid conflict with JDK 11'sString.lines(#7269) - 
PartialFunctionnow overloadsandThen. (#7263) - Replaced 
Cloneable/Serializabletraits with type aliases (#6729) - 
ControlThrowablenever suppresses (#7413) - 
BigDecimal's handling ofMathContexts has changed (#6884) 
Standard library: deprecations and removals
Not a complete list, only the deprecations users are likeliest to encounter.
- String-building using 
+with a non-Stringtype on the left (akaany2stringadd) is deprecated. (#6315, #6755) - 
PartialFunction.fromFunctionreplacesPartialFunction.apply(#6703) - Right projections on 
Eitherare deprecated. (#6682, #8012) - Deprecated 
@usecaseScaladoc tag. (#7462) - Deprecated universal 
Equiv. (#7414) - The following modules are no longer included in the distribution: scala-xml, scala-parser-combinators, scala-swing.
- They are community-maintained and published to Maven Central.
 
 - Assorted deprecated methods and classes throughout the standard library have been removed entirely.
 
Language changes
2.13 is primarily a library release, not a language/compiler release. Regardless, some language changes are included:
Features:
- 
Literal types
- Literals (for strings, integers, and so on) now have associated literal types. (#5310)
 - See the original proposal, SIP-23, for motivation and details.
 - The compiler will provide instances of a new typeclass 
scala.ValueOf[T]for all singleton typesT. - A 
Singletonupper bound prevents widening (e.g.T <: Int with Singleton). - The value of a singleton type can be accessed by calling method 
valueOf[T]. Example:val one: 1 = valueOf[1] 
 - 
Partial unification on by default
- Improves type constructor inference, fixes SI-2712.
 - We recommend this great explanation of this feature.
 - This feature is no longer considered experimental (#5102)
 - The compiler no longer accepts 
-Ypartial-unification. 
 - 
By-name implicits with recursive dictionaries
- This extends by-name method arguments to support implicit (not just explicit) parameters.
 - This enables implicit search to construct recursive values.
 - The flagship use-case is typeclass derivation.
 - Details: see the by-name implicits SIP, #6050, #7368
 
 - 
Underscores in numeric literals
- Underscores can now be used as a spacer. (#6989)
 - Example: 
1_000_000 
 
Experimental features:
- 
Macro annotations
- There is no more "macro paradise" compiler plugin for 2.13.
 - Instead, macro annotations are handled directly by the compiler.
 - Macro annotations are enabled with the 
-Ymacro-annotationsflag. #6606 - Macro annotations remain experimental.
 
 
Deprecations:
- 
Procedure syntax deprecated
- Deprecated: 
def m() { ... }(#6325) - Use instead: 
def m(): Unit = { ... } 
 - Deprecated: 
 - 
View bounds deprecated
- Deprecated: 
A <% B(#6500) - Use instead: 
(implicit ev: A => B) 
 - Deprecated: 
 - 
Symbol literals deprecated
- Symbols themselves remain supported, only the single-quote syntax is deprecated. (#7395)
 - Library designers may wish to change their APIs to use 
Stringinstead. - Deprecated: 
'foo - Use instead: 
Symbol("foo") 
 - 
Unicode arrows deprecated
- In particular, the single arrow operators had the wrong precedence. (#7540)
 - Deprecated: 
⇒,→,← - Use instead: 
=>,->,<- 
 - 
postfixOpssyntax disabled by default- The syntax, already deprecated in 2.12, causes an error in 2.13 unless the feature is explicitly enabled. (#6831)
 - Error: 
xs size - Use instead: 
xs.size 
 
Adjustments:
- Imports, including wildcard imports, now shadow locally defined identifiers. (#6589)
 - Underscore is no longer a legal identifier unless backquoted (bug#10384)
- 
val _ =is now a pattern match (and discards the value without incurring a warning) - 
implicit val _ =is also now a pattern match (and is useless, because it no longer adds to implicit scope) 
 - 
 - Don't assume unsound type for ident/literal patterns. (#6502)
- Matches of the form 
case x@Ninvolve callingequals, so it was unsound to typexasN.type. - Consider rewriting as 
case x:N.type. 
 - Matches of the form 
 - Make extractor patterns null safe. (#6485)
- 
nullis treated as no match. 
 - 
 - Better typing for overloaded higher-order methods (#6871, #7631)
- This change was a key enabler for the new collections design.
 
 - Rework unification of 
ObjectandAnyin Java/Scala interop (#7966) - Name-based pattern matching has changed to enable immutable 
Seqmatches (#7068) - Automatic eta-expansion of zero-argument methods is no longer deprecated (#7660)
 - Improve binary stability of extension methods (#7896)
 - Macros must now have explicit return types (#6942)
 - Mixin fields with trait setters are no longer JVM final (#7028)
- In addition, 
objectfields are now static (#7270) 
 - In addition, 
 - Support 
implicitNotFoundon parameters (#6340) - Disallow repeated parameters except in method signatures (#7399)
 - Value-discard warnings can be suppressed via type ascription to 
Unit. (#7563) - 
x op ()now parses asx.op(())notx.op()(#7684) 
Compiler
- 
Deterministic, reproducible compilation
- The compiler generates identical output for identical input in more cases, for reproducible builds. (scala-dev#405)
 
 - 
Optimizer improvements
- Operations on collections and arrays are now optimized more, including improved inlining. (#7133)
 
 
And:
- Scaladoc supports setting canonical URLs (#7834)
- This helps search engines identify the most relevant/recent version of a page when several versions are available.
 
 - Compiler suggests possible corrections for unrecognized identifiers (#6711)
- Example: 
List(1).sizzle=>value sizzle is not a member of List[Int], did you mean size? 
 - Example: 
 - Added 
-Yimportsfor custom preamble imports. (#6764)- Example: 
-Yimports:x,y,zmeans x, y, and z are root imports of the form:import x._ { import y._ { import z._ { ... } } } 
 - Example: 
 - The scala-compiler JAR no longer depends on scala-xml (#6436)
 
Plus, changes to compiler options:
- Partition options by function: 
-Vfor verbose,-Wfor warnings- In general, the old flags still exist as aliases. (#7908)
 - Exceptions (breaking changes) include:
- Replaced 
-warn-optionwith-Woption. - Replaced 
-Xprint:allwith-Vprint:_ 
 - Replaced 
 - 
-Werroris now recommended over-Xfatal-warnings. 
 - Promoted 
-deprecationto-Xlint:deprecation(#7714) - Deprecated 
-Xfuture(#7328)- Instead, use e.g. 
-Xsource:2.14 
 - Instead, use e.g. 
 - Removed 
-Yno-adapted-args- The removal remains under discussion at scala/bug#11110.
 
 - Removed 
-Xmax-classfile-length- It's hard-coded to 240 now (#7497)
 
 
Scripting, environment, and integrations
- The script runner (
scala Script.scala) no longer uses thefsccompilation daemon by default. (#6747)- The daemon was not reliable and will likely be removed entirely from a future release.
 
 - JEP 293 style long command-line options are now supported (#6499)
 - The REPL has undergone an internal refactoring to enable future improvements. (#7384)
 - Ant support is no longer bundled. (#6255)
 
Compiler performance
We invested heavily in compiler speedups during the 2.13 cycle, but most of that work actually already landed in the 2.12.x series, with more to come in 2.12.9.
In addition, compiler performance in 2.13 is 5-10% better compared to 2.12, thanks mainly to the new collections. See performance graph.
Also, certain kinds of code now compile much faster because the compiler aggressively prunes polymorphic implicits during search (#6580).
Migration
Upgrading from 2.12? Enable -Xmigration while upgrading to request migration advice from the compiler.
Compatibility
Like Scala 2.12, the 2.13 series targets Java 8, minimum. Both 2.12 and 2.13 also work on later JDKs such as JDK 11; see our JDK Compatibility Guide.
Although Scala 2.11, 2.12, and 2.13 are mostly source compatible to facilitate cross-building, they are not binary compatible. This allows us to keep improving the Scala compiler and standard library.
All 2.13.x releases will be fully binary compatible with 2.13.0, in according with the policy we have followed since 2.10.
Projects built with sbt must use at least sbt 1.2.8 (or 0.13.18) to use Scala 2.13.  To move to 2.13, bump the scalaVersion setting in your existing project. 
Scala also works with Maven, Gradle, and other build tools.
Obtaining Scala
Scala releases are available through a variety of channels, including (but not limited to):
- Bump the 
scalaVersionsetting in your sbt-based project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 - Certain package managers (such as homebrew and SDKMAN) offer Scala.
 
Reporting bugs
Please file any bugs you encounter on our issue tracker. If you aren't yet sure something is a bug, ask on users.scala-lang.org.
Contributors
A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, kindly helping others on forums and at meetups, and submitting and reviewing pull requests! You are all magnificent.
Scala 2.13.0 is the result of merging over 1500 pull requests.
The pull request queue is managed by the Scala team at Lightbend: Adriaan Moors, Lukas Rytz, Jason Zaugg, Seth Tisue, Stefan Zeiger, Eugene Yokota.
Thanks to Lightbend for their continued sponsorship of the Scala core team’s efforts. Lightbend offers commercial support for Scala.
The new collections API was developed in fruitful collaboration with the Scala Center, with major contributions from the community.
This release was brought to you by 162 contributors, according to git shortlog -sn --no-merges 2.13.x ^2.12.x ^e2a211c. Thank you Julien Richard-Foy, Lukas Rytz, Jason Zaugg, A. P. Marki, Stefan Zeiger, Kenji Yoshida, Adriaan Moors, Josh Lemer, NthPortal, Miles Sabin, Diego E. Alonso-Blas, Seth Tisue, Guillaume Martres, Marcelo Cenerino, Dale Wijnand, Odd Möller, Martin Odersky, Allan Renucci, Georgi Krastev, Eugene Yokota, Harrison Houghton, Martijn Hoekstra, Viktor Klang, Aaron S. Hawley, Ólafur Páll Geirsson, Rex Kerr, hepin1989, Philippus Baalman, Matthew de Detrich, Isaac Levy, exoego, Greg Methvin, Jasper Moeys, Sébastien Doeraene, wholock, Aggelos Biboudis, yui-knk, Matthias Sperl, Xavier Fernández Salas, Ethan Pronovost, Janek Bogucki, awibisono, BuildTools, Mike Skells, Jimin Hsieh, Jonathan Frawley, Xavier GUIHOT, Chris Phelps, chanyong.moon, Cong Zhao, Enno Runne, LPTK, Pathikrit Bhowmick, Yuval Dagan, Li Haoyi, Guillaume Massé, Christopher Hunt, Kamil Kloch, Marco Zühlke, Danila Matveev, Juliusz Sompolski,杨博 (Yang Bo), Masaru Nomura, Benjamin Kurczyk, Vince, taku0, Arnout Engelen, Tim Ruhland, Nicolas Stucki, Nicolas Rinaudo, Stephen Nancekivell, ashwin, Kobenko Mikhail, Song Kun, Anthony Tjuatja, k.bigwheel, ke-to, kelebra, mcintdan, mmocentre, psilospore, roman, svatsan, texasbruce, tim-zh, valydia, veera venky,虎鸣, Adianto Wibisono, Alden Torres, Alejandro Sellero, Alessandro Buggin, Alex Glukhovtsev, Alex Levenson, Alexey-NM, Anatolii, Andrei Baidarov, Andriy Plokhotnyuk, Bakhytzhan Karabalin, Benni, Callum Turnbull, Chris Birchall, Chujie Zeng, Cody Allen, Daniel Dietrich, Daniel Moss, Daniel Slapman, David Barri, David Hoepelman, Denis Buzdalov, Denys Shabalin, Dhanesh, Dhanesh Arole, Edin Dudojević, Eugene Platonov, Faiz Halde, Gabriel Claramunt, Heikki Vesalainen, Iaroslav Zeigerman, Jack Koenig, Jean Michel Rouly, Jeff Brower, Jeff Shaw, Josh, Kazuhiro Sera, Kentaro Tokutomi, Lionel Parreaux, Magnolia.K, Martin Duhem, Michael Steindorfer, Nafer Sanabria, Narek Asadorian, Oleksii Tkachuk, Oscar Boykin, PJ Fanning, Paolo Giarrusso, Pap Lőrinc, Pavel Petlinsky, Peter Fraenkel, Philip, Piotr Kukielka, Qiang Sima, Rob Norris, Robin Stephenson, Rui Gonçalves, Ruud Welling, Ryan McDougall, ShankarShastri, Simão Martins, Sperl Matthias, Sujeet Kausallya Gholap, Uttej Guduru, Vincent de Haan, Vladimir Parfinenko, Vlastimil Dort, Yang Bo, Zizheng Tai, ccjoywang, esarbe, howtonotwin, jvican.
Conclusion
We again thank our contributors and the entire Scala community.
May you find Scala 2.13 a joy to code in!
v2.12.20: Scala 2.12.20
This release improves compatibility:
- Support JDK 23 in optimizer (via upgrade to patched ASM 9.7.0) (#10747 by @Philippus)
 - Bump scala-xml dependency to 2.3.0 (was 2.2.0) (#10782)
 
and compiler profiling:
For complete 2.12.20 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.12.20 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 8 contributors, according to git shortlog -sn --no-merges @​ ^v2.12.19. Thank you Scala Steward, Seth Tisue, Lukas Rytz, A. P. Marki, Hamza Remmal, Philippus Baalman, Stefan Zeiger, nbauma109.
Thanks to Lightbend for their continued sponsorship of the Scala 2 team’s efforts. Lightbend offers commercial support for Scala 2.
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):
- Bump the 
scalaVersionsetting in your sbt project - Bump the 
using scalasetting in your Scala CLI project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.12.19: Scala 2.12.19
This release improves compatibility:
- Support certain Java libraries compiled on JDK 21 (#10675 by @SethTisue)
 - Support JDK 22 in optimizer (by upgrading to ASM 9.6) (#10575 by @Philippus)
 - New 
-Yreleaseoption supplements-release, allows access to additional JVM packages (#10671 by @som-snytt) - Update compiler's scala-xml dependency to 2.2.0 (was 2.1.0) (#10459 by @SethTisue)
 
And it has bugfixes:
- Fix rare 
NullPointerExceptionin some tree-based collections (#10640 by @lrytz) - Improved 
InterruptedExceptionhandling forFutures (#10379 by @szeiger) 
For complete 2.12.19 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.12.19 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 9 contributors, according to git shortlog -sn --no-merges @​ ^v2.12.18 ^2.11.x. Thank you Scala Steward, Seth Tisue, A. P. Marki, Lukas Rytz, Stefan Zeiger, Dmitry Komanov, Philippus Baalman, cahilltr, dependabot.
Thanks to Lightbend for their continued sponsorship of the Scala 2 team’s efforts. Lightbend offers commercial support for Scala 2.
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):
- Bump the 
scalaVersionsetting in your sbt project - Bump the 
using scalasetting in your Scala CLI project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
v2.12.18: Scala 2.12.18
This release improves compatibility:
- Support JDK 20 and 21 with ASM 9.5 upgrade, by @Philippus (#10185, #10362)
 - Fix crash reading JDK 21 classfiles (#10397)
 
It also aids migration to Scala 2.13 and Scala 3:
- Under 
-Xsource:2.13, warn when inherited takes precedence over outer definitions (#10297, #10321) - Under 
-Xsource:2.13, flag eta-expanding methods without parameter lists (#10283) - Under 
-Xsource:2.13, don't GLB binders of type patterns, use the type directly (#10298) 
and improves linting:
- Lint for integral divisions that are widened to a float (#10313)
 
and enables improved tooling:
- Preserve tree attachment in the typer's 
Block/Applyinversion transform (#10176) 
For complete 2.12.18 change lists, see all merged MRs and all closed bugs.
Compatibility
As usual for our minor releases, Scala 2.12.18 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 6 contributors, according to git shortlog -sn --no-merges @​ ^v2.12.17 ^2.11.x. Thank you Seth Tisue, Lukas Rytz, Scala Steward, A. P. Marki, Jason Zaugg, Philippus Baalman.
Thanks to Lightbend for their continued sponsorship of the Scala 2 team’s efforts. Lightbend offers commercial support for Scala.
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):
- Bump the 
scalaVersionsetting in your sbt project - Bump the 
using scalasetting in your Scala-CLI project - Download a distribution from scala-lang.org
 - Obtain JARs via Maven Central
 
Configuration
- 
If you want to rebase/retry this MR, check this box  
This MR has been generated by Renovate Bot.