From 50fa0ed1e3b6562752851fb7a38ec9ebc0f0b0d6 Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Thu, 6 Nov 2025 15:24:00 +0100 Subject: [PATCH 1/2] 2.13.18 release notes draft --- 2.13.18.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 2.13.18.md diff --git a/2.13.18.md b/2.13.18.md new file mode 100644 index 0000000000..edff1e3aac --- /dev/null +++ b/2.13.18.md @@ -0,0 +1,67 @@ +# Scala 2.13.18 (DRAFT) + +The Scala team at Akka is pleased to announce Scala 2.13.18. + +This release fixes a number of regressions from 2.13.17. It is compatible with JDKs 8 to 26. + +Note: this release is signed with a different GPG key than previous releases. The new key is the same as used by Scala 3. [#11158](https://github.com/scala/scala/pull/11158) + +The following are highlights of this release: + +### Passing a `null` array to a varargs method in Scala 3 + +When passing an array as "sequence argument" to a varargs method, `method(arg: _*)`, the array is converted to a `Seq`. + +In Scala 3 (the syntax is `method(arg*)`), this conversion is done by the `ScalaRunTime.wrapXArray` methods. +These methods were simplified in 2.13.17, which changes the semantics of a `method((null: Array[T])*)` invocation. + +[#11165](https://github.com/scala/scala/pull/11165) restores the previous `null` handling semantics. + +### Fixes for false positive warnings + +* [#11162](https://github.com/scala/scala/pull/11162) reverts `-Xlint:infer-any` to the behavior of 2.13.16. + The lint was extended in 2.13.17 to warn whenever `Nothing` is inferred for a higher-kinded type parameter `T[_]`. + The new warning showed up in many projects: often as a false positive, but even the "true" positive warning was considered unhelpful / spurious in real-world use cases. +* Fix false positive unused warning for private val used in annotation [11149](https://github.com/scala/scala/pull/11149) +* Fix false positive `-Xlint:universal-methods` warning in synthetic code [#11159](https://github.com/scala/scala/pull/11159) +* Fix false positive unused local warning in macro expansion [#11170](https://github.com/scala/scala/pull/11170) + +### Other notable changes + +* On Java 25, `sbt run` now detects main methods that are non-static, non-public or without parameter list [#11137](https://github.com/scala/scala/pull/11137) +* Compiling on Java 26 is now supported [#11179](https://github.com/scala/scala/pull/11179) +* The new `@uncheckedOverride` annotation is equivalent to the `override` keyword, except that it allows to override nothing. + This is useful when cross-building: a method may override or not, depending on the version of some dependency. [#11179](https://github.com/scala/scala/pull/11179) +* Deprecate the `-Xmain-class` compiler flag [#11156](https://github.com/scala/scala/pull/11156) +* Regression fix: 2.13.17 is accidentally dropping certain annotations [#11173](https://github.com/scala/scala/pull/11173) + +### More changes + +For the complete 2.13.18 change lists, see [all merged PRs](https://github.com/scala/scala/pulls?q=is%3Amerged%20milestone%3A2.13.18) and [all closed bugs](https://github.com/scala/bug/issues?utf8=%E2%9C%93&q=is%3Aclosed+milestone%3A2.13.18). + +## Compatibility + +As usual for our minor releases, Scala 2.13.18 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 8 contributors, according to `git shortlog -sn --no-merges @ ^v2.13.17 ^2.12.x`. Thank you Lukas Rytz, A. P. Marki, Scala Steward, Seth Tisue, Evgeny Vereshchagin, Kenji Yoshida, NthPortal, Philippus Baalman. + +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.18.html) +* Obtain JARs via [Maven Central](https://search.maven.org/search?q=g:org.scala-lang%20AND%20v:2.13.18) From d6d0e1ccd595ee85b139f7efc26d5df8c8fe6d08 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 11 Nov 2025 12:30:53 -0600 Subject: [PATCH 2/2] adjustments --- 2.13.18.md | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/2.13.18.md b/2.13.18.md index edff1e3aac..0cbf308029 100644 --- a/2.13.18.md +++ b/2.13.18.md @@ -2,18 +2,16 @@ The Scala team at Akka is pleased to announce Scala 2.13.18. -This release fixes a number of regressions from 2.13.17. It is compatible with JDKs 8 to 26. - -Note: this release is signed with a different GPG key than previous releases. The new key is the same as used by Scala 3. [#11158](https://github.com/scala/scala/pull/11158) +This release fixes several regressions from 2.13.17. It is compatible with JDKs 8 to 26. The following are highlights of this release: -### Passing a `null` array to a varargs method in Scala 3 +### Restore traditional behavior when passing a `null` array to a varargs method in Scala 3 When passing an array as "sequence argument" to a varargs method, `method(arg: _*)`, the array is converted to a `Seq`. In Scala 3 (the syntax is `method(arg*)`), this conversion is done by the `ScalaRunTime.wrapXArray` methods. -These methods were simplified in 2.13.17, which changes the semantics of a `method((null: Array[T])*)` invocation. +These methods were simplified in 2.13.17, which changed the semantics of a `method((null: Array[T])*)` invocation. [#11165](https://github.com/scala/scala/pull/11165) restores the previous `null` handling semantics. @@ -26,14 +24,23 @@ These methods were simplified in 2.13.17, which changes the semantics of a `meth * Fix false positive `-Xlint:universal-methods` warning in synthetic code [#11159](https://github.com/scala/scala/pull/11159) * Fix false positive unused local warning in macro expansion [#11170](https://github.com/scala/scala/pull/11170) -### Other notable changes +### JDK 26 support -* On Java 25, `sbt run` now detects main methods that are non-static, non-public or without parameter list [#11137](https://github.com/scala/scala/pull/11137) * Compiling on Java 26 is now supported [#11179](https://github.com/scala/scala/pull/11179) -* The new `@uncheckedOverride` annotation is equivalent to the `override` keyword, except that it allows to override nothing. - This is useful when cross-building: a method may override or not, depending on the version of some dependency. [#11179](https://github.com/scala/scala/pull/11179) + +### New `@uncheckedOverride` annotation + +The new `@uncheckedOverride` annotation is equivalent to the `override` keyword, except that it allows to override nothing. This is useful when cross-building: a method may override or not, depending on the version of some dependency. [#11179](https://github.com/scala/scala/pull/11179) + +### GPG key change + +This release is signed with a different GPG key than previous Scala 2 releases. The new key is the same one used by Scala 3. [#11158](https://github.com/scala/scala/pull/11158) + +### Other notable changes + +* On Java 25+, `sbt run` now detects main methods that are non-static, non-public or without parameter list [#11137](https://github.com/scala/scala/pull/11137) +* Regression fix: 2.13.17 was accidentally dropping certain annotations [#11173](https://github.com/scala/scala/pull/11173) * Deprecate the `-Xmain-class` compiler flag [#11156](https://github.com/scala/scala/pull/11156) -* Regression fix: 2.13.17 is accidentally dropping certain annotations [#11173](https://github.com/scala/scala/pull/11173) ### More changes