From b522ab774568eca6ea629cc90b2ff06901c352d4 Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Mon, 22 Sep 2025 17:08:45 +0200 Subject: [PATCH 1/4] initial version --- 2.13.17.md | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 2.13.17.md diff --git a/2.13.17.md b/2.13.17.md new file mode 100644 index 0000000000..f89aee31b0 --- /dev/null +++ b/2.13.17.md @@ -0,0 +1,70 @@ +# Scala 2.13.17 (DRAFT) + +The Scala team at Akka (formerly Lightbend) is pleased to announce Scala 2.13.17. + +This release is compatible with the new JDK 25 LTS. Besides this, the highlights are: + +### Breaking changes + +* Mix in the `productPrefix` hash statically in case class `hashCode` ([#11023](https://github.com/scala/scala/pull/11023) by [@lrytz](https://github.com/lrytz)) + * 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](https://github.com/scala/scala/pull/11000) by [@NthPortal](https://github.com/NthPortal)) + * When multiple exceptions are thrown, a predefined order determines which exception is rethrown and which is attached as "suppressed" + +### Features and notable changes + +* Fix AnnotationInfo when using named/default arguments, support custom annotation subclasses ([#10976](https://github.com/scala/scala/pull/10976) by [@lrytz](https://github.com/lrytz)) + * 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](https://github.com/scala/scala/pull/10985) by [@lrytz](https://github.com/lrytz)) +* Use `toVector` for XML literal sequences ([#11065](https://github.com/scala/scala/pull/11065) by [@lrytz](https://github.com/lrytz)) + +### Scala 3 compatibility and migration + +* Allow using `-Xsource-features` without `-Xsource:3` ([#11123](https://github.com/scala/scala/pull/11123) by [@lrytz](https://github.com/lrytz)) +* Lint inferred structural types ([#10942](https://github.com/scala/scala/pull/10942) by [@lrytz](https://github.com/lrytz)) +* Port `summonIgnoring` from 3.7 as `c.inferImplicitValueIgnoring` ([#11068](https://github.com/scala/scala/pull/11068) by [@MateuszKubuszok](https://github.com/MateuszKubuszok)) + +### Version and platform updates + +* When parsing Java sources, skip JDK 21+’s JEP 445 compact compilation units ([#11066](https://github.com/scala/scala/pull/11066) by [@lrytz](https://github.com/lrytz)) +* JDK 25 support in optimizer (new reference compiler includes ASM upgrade) ([#11046](https://github.com/scala/scala/pull/11046) by [@SethTisue](https://github.com/SethTisue)) +* Support Scala 3.7 in the tasty reader, update the tests to use 3.7.3 ([#11100](https://github.com/scala/scala/pull/11100) by [@scala-steward](https://github.com/scala-steward)) +* REPL: JLine 3.30.6 (was 3.29.0) ([#11125](https://github.com/scala/scala/pull/11125) by [@SethTisue](https://github.com/SethTisue)) + +### Notable bug fixes + +* Allow optimizer use within Bazel (don't attempt inlining methods without instructions) ([#11016](https://github.com/scala/scala/pull/11016) by [@lrytz](https://github.com/lrytz)) +* Reduce memory footprint of evaluated elements in LazyList ([#10937](https://github.com/scala/scala/pull/10937) by [@lrytz](https://github.com/lrytz)) +* Deregister stale callbacks in `Future.firstCompletedOf` (prevents memory leaks) ([#10927](https://github.com/scala/scala/pull/10927) by [@lrytz](https://github.com/lrytz)) +* Require `-Xsource-features:eta-expand-always` for eta-expansion without an expected type ([#10907](https://github.com/scala/scala/pull/10907) by [@som-snytt](https://github.com/som-snytt)) + +### More changes + +For the complete 2.13.17 change lists, see [all merged PRs](https://github.com/scala/scala/pulls?q=is%3Amerged%20milestone%3A2.13.17) and [all closed bugs](https://github.com/scala/bug/issues?utf8=%E2%9C%93&q=is%3Aclosed+milestone%3A2.13.17). + +## Compatibility + +As usual for our minor releases, Scala 2.13.17 is [binary-compatible](https://docs.scala-lang.org/overviews/core/binary-compatibility-of-scala-releases.html) 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](https://akka.io) 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](https://github.com/scala/scala/releases/v2.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](https://scala-lang.org/download/2.13.16.html) +* Obtain JARs via [Maven Central](https://search.maven.org/search?q=g:org.scala-lang%20AND%20v:2.13.16) From 08b15ce82fb398023276101c3a9a6a6780a81dd3 Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Mon, 22 Sep 2025 17:11:29 +0200 Subject: [PATCH 2/4] 16-17 --- 2.13.17.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/2.13.17.md b/2.13.17.md index f89aee31b0..e06a00fe71 100644 --- a/2.13.17.md +++ b/2.13.17.md @@ -66,5 +66,5 @@ Scala releases are available through a variety of channels, including (but not l * 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](https://scala-lang.org/download/2.13.16.html) -* Obtain JARs via [Maven Central](https://search.maven.org/search?q=g:org.scala-lang%20AND%20v:2.13.16) +* Download a distribution from [scala-lang.org](https://scala-lang.org/download/2.13.17.html) +* Obtain JARs via [Maven Central](https://search.maven.org/search?q=g:org.scala-lang%20AND%20v:2.13.17) From e479b135b957854fd7b1e46fd7deb0fbb22a7551 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 23 Sep 2025 10:16:37 -0700 Subject: [PATCH 3/4] round of tweaks --- 2.13.17.md | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/2.13.17.md b/2.13.17.md index e06a00fe71..eff618248b 100644 --- a/2.13.17.md +++ b/2.13.17.md @@ -1,41 +1,42 @@ # Scala 2.13.17 (DRAFT) -The Scala team at Akka (formerly Lightbend) is pleased to announce Scala 2.13.17. +The Scala team at Akka is pleased to announce Scala 2.13.17. -This release is compatible with the new JDK 25 LTS. Besides this, the highlights are: +This release is compatible with the new JDK 25 LTS. + +The following are highlights of this release: + +### Compatibility + +* JDK 25 support in optimizer ([#11046](https://github.com/scala/scala/pull/11046)) +* Support Scala 3.7 in the TASTy reader ([#11100](https://github.com/scala/scala/pull/11100)) +* When parsing Java sources, skip JDK 21+’s JEP 445 compact compilation units ([#11066](https://github.com/scala/scala/pull/11066)) ### Breaking changes -* Mix in the `productPrefix` hash statically in case class `hashCode` ([#11023](https://github.com/scala/scala/pull/11023) by [@lrytz](https://github.com/lrytz)) - * 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](https://github.com/scala/scala/pull/11000) by [@NthPortal](https://github.com/NthPortal)) - * When multiple exceptions are thrown, a predefined order determines which exception is rethrown and which is attached as "suppressed" +* Mix in the `productPrefix` hash statically in case class `hashCode` ([#11023](https://github.com/scala/scala/pull/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](https://github.com/scala/scala/pull/11000) by [@NthPortal](https://github.com/NthPortal)) + * When multiple exceptions are thrown, a predefined order determines which exception is rethrown and which is attached as "suppressed" ### Features and notable changes -* Fix AnnotationInfo when using named/default arguments, support custom annotation subclasses ([#10976](https://github.com/scala/scala/pull/10976) by [@lrytz](https://github.com/lrytz)) - * 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](https://github.com/scala/scala/pull/10985) by [@lrytz](https://github.com/lrytz)) -* Use `toVector` for XML literal sequences ([#11065](https://github.com/scala/scala/pull/11065) by [@lrytz](https://github.com/lrytz)) +* Fix `AnnotationInfo` when using named/default arguments, support custom annotation subclasses ([#10976](https://github.com/scala/scala/pull/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](https://github.com/scala/scala/pull/10985)) +* Use `toVector` for XML literal sequences ([#11065](https://github.com/scala/scala/pull/11065)) ### Scala 3 compatibility and migration -* Allow using `-Xsource-features` without `-Xsource:3` ([#11123](https://github.com/scala/scala/pull/11123) by [@lrytz](https://github.com/lrytz)) -* Lint inferred structural types ([#10942](https://github.com/scala/scala/pull/10942) by [@lrytz](https://github.com/lrytz)) +* Allow using `-Xsource-features` without `-Xsource:3` ([#11123](https://github.com/scala/scala/pull/11123)) +* Lint inferred structural types ([#10942](https://github.com/scala/scala/pull/10942)) * Port `summonIgnoring` from 3.7 as `c.inferImplicitValueIgnoring` ([#11068](https://github.com/scala/scala/pull/11068) by [@MateuszKubuszok](https://github.com/MateuszKubuszok)) -### Version and platform updates - -* When parsing Java sources, skip JDK 21+’s JEP 445 compact compilation units ([#11066](https://github.com/scala/scala/pull/11066) by [@lrytz](https://github.com/lrytz)) -* JDK 25 support in optimizer (new reference compiler includes ASM upgrade) ([#11046](https://github.com/scala/scala/pull/11046) by [@SethTisue](https://github.com/SethTisue)) -* Support Scala 3.7 in the tasty reader, update the tests to use 3.7.3 ([#11100](https://github.com/scala/scala/pull/11100) by [@scala-steward](https://github.com/scala-steward)) -* REPL: JLine 3.30.6 (was 3.29.0) ([#11125](https://github.com/scala/scala/pull/11125) by [@SethTisue](https://github.com/SethTisue)) - ### Notable bug fixes -* Allow optimizer use within Bazel (don't attempt inlining methods without instructions) ([#11016](https://github.com/scala/scala/pull/11016) by [@lrytz](https://github.com/lrytz)) -* Reduce memory footprint of evaluated elements in LazyList ([#10937](https://github.com/scala/scala/pull/10937) by [@lrytz](https://github.com/lrytz)) -* Deregister stale callbacks in `Future.firstCompletedOf` (prevents memory leaks) ([#10927](https://github.com/scala/scala/pull/10927) by [@lrytz](https://github.com/lrytz)) +* Allow optimizer use within Bazel (don't attempt inlining methods without instructions) ([#11016](https://github.com/scala/scala/pull/11016)) +* Reduce memory footprint of evaluated elements in LazyList ([#10937](https://github.com/scala/scala/pull/10937)) +* Deregister stale callbacks in `Future.firstCompletedOf` (prevents memory leaks) ([#10927](https://github.com/scala/scala/pull/10927)) * Require `-Xsource-features:eta-expand-always` for eta-expansion without an expected type ([#10907](https://github.com/scala/scala/pull/10907) by [@som-snytt](https://github.com/som-snytt)) ### More changes From 7e81ded1238b8afeedd760f89d00eb7796c4e97d Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Mon, 6 Oct 2025 18:57:02 -0700 Subject: [PATCH 4/4] add some more wording about Using --- 2.13.17.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/2.13.17.md b/2.13.17.md index eff618248b..1d794856bc 100644 --- a/2.13.17.md +++ b/2.13.17.md @@ -18,6 +18,8 @@ The following are highlights of this release: * 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](https://github.com/scala/scala/pull/11000) by [@NthPortal](https://github.com/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](https://github.com/scala/scala-collection-compat/releases/tag/v2.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