Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Scala 2.13.17

Latest

Choose a tag to compare

@lrytz lrytz released this 30 Sep 09:49
· 81 commits to 2.13.x since this release
v2.13.17
05169c7

The Scala team at Akka is pleased to announce Scala 2.13.17.

This release is compatible with the new JDK 25 LTS.

See below for known issues / regressions in this release.

The following are highlights of this release:

Compatibility

  • JDK 25 support in optimizer (#11046)
  • Support Scala 3.7 in the TASTy reader (#11100)
  • When parsing Java sources, skip JDK 21+’s JEP 445 compact compilation units (#11066)

Breaking changes

  • Mix in the productPrefix hash statically in case class hashCode (#11023)
    • The synthetic hashCode method of a case class no longer calls productPrefix. This changes the hash code of case classes that override productPrefix.
  • Improve scala.util.Using suppression order (NonFatal suppresses ControlThrowable) (#11000 by @NthPortal)
    • When multiple exceptions are thrown, a predefined order determines which exception is rethrown and which is attached as "suppressed"
    • Users of scala-collection-compat can upgrade to 2.14.0 to get the same behavior change
    • If you use Using in a project that crossbuilds to Scala 3, you may wish to wait for a Scala 3 release that includes the 2.13.17 standard library, or use a dependency override to force the upgrade in your build

Features and notable changes

  • Fix AnnotationInfo when using named/default arguments, support custom annotation subclasses (#10976)
    • Users can now define, for example, class nodep extends annotation.nowarn("cat=deprecation") and use @nodep to silence deprecations
  • Show nowarn/-Wconf filters for a warning with @nowarn("verbose") (#10985)
  • Use toVector for XML literal sequences (#11065)

Scala 3 compatibility and migration

  • Allow using -Xsource-features without -Xsource:3 (#11123)
  • Lint inferred structural types (#10942)
    • In case this warning is undesired, it can be disabled using -Xlint:_,-infer-structural
  • Port summonIgnoring from 3.7 as c.inferImplicitValueIgnoring (#11068 by @MateuszKubuszok)

Notable bug fixes

  • Allow optimizer use within Bazel (don't attempt inlining methods without instructions) (#11016)
  • Reduce memory footprint of evaluated elements in LazyList (#10937)
  • Deregister stale callbacks in Future.firstCompletedOf (prevents memory leaks) (#10927)
  • Require -Xsource-features:eta-expand-always for eta-expansion without an expected type (#10907 by @som-snytt)

More changes

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

Known issues / regressions

False positive lint warning: a type was inferred to be kind-polymorphic

  • A new warning was added to the existing -Xlint:infer-any flag (which is also enabled with plain -Xlint)
  • The implementation issues false positive warnings
  • To revert back to the behavior of Scala 2.13.16, add -Wconf:cat=lint-infer-any&msg=kind-polymorphic:s
  • See scala/scala#13128 for details

Scaladoc @define no longer works if the doc comment is on an object

-Wunused:privates now warns about unused private final val declarations. When such a val is only referenced as argument to a Java annotation, it is incorrectly reported as unused

  • See scala/bug#13130 for details
  • Workaround: add @nowarn("cat=unused-privates") to the val declaration

Semantic change when passing a null sequence parameter in Scala 3, i.e., foo((null: Array[T])*). Within def foo(xs: T*), the value xs is no longer null.

  • Merely updating scala-library on the classpath to 2.13.17 can change the runtime behavior of previously compiled code
  • See #11165 for details

Compatibility

As usual for our minor releases, Scala 2.13.17 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 @ ^v2.13.16 ^2.12.x. Thank you A. P. Marki, Lukas Rytz, Seth Tisue, Alec Theriault, Jason Zaugg, Sébastien Doeraene, Scala Steward, Bernhard, Tomasz Godzik, Vasil Vasilev, Arthur Soulié, Emil Ejbyfeldt, Hamza Remmal, Jiri Vanek, Kenji Yoshida, Lorenzo Gabriele, Marissa, Mateusz Kubuszok, Matthew Lutze, Philippus Baalman, Stefan Zeiger, philwalk, 虎鸣.

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 scala setting in your Scala-CLI project
  • Bump the scalaVersion setting in your sbt or Mill project
  • Download a distribution from scala-lang.org
  • Obtain JARs via Maven Central