Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scala 2.13.16 release notes (DRAFT) #892

Draft
wants to merge 7 commits into
base: scala-dev
Choose a base branch
from
Draft
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions 2.13.16.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Scala 2.13.16 (DRAFT)

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, `.tail` and `.init` now throw (instead of returning the empty string) ([#10851](https://github.com/scala/scala/pull/10851) by [@sh0hei](https://github.com/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](https://github.com/scala/scala/pull/10893))
* Support JDK 24 in optimizer (via ASM upgrade) ([#10888](https://github.com/scala/scala/pull/10888) by [@Philippus](https://github.com/Philippus))

### REPL

* REPL: JLine 3.27.1 (was 3.26.3) and on Windows use JNA not JNI ([#10899](https://github.com/scala/scala/pull/10899), [#10898](https://github.com/scala/scala/pull/10898), [#10882](https://github.com/scala/scala/pull/10882))
* These upgrades hopefully won't be noticed, but, REPL users on Windows take note

### Align with Scala 3

* Under `-Xsource:3`, deprecate infix named args ([#10857](https://github.com/scala/scala/pull/10857) by [@som-snytt](https://github.com/som-snytt))

### Errors and warnings

* Fix 2.13.15-only false positives with `-Wunused:patvars` ([#10870](https://github.com/scala/scala/pull/10870) by [@som-snytt](https://github.com/som-snytt))

### Collections

* Do not use `rangeHash` when `rangeDiff` is 0 ([#10912](https://github.com/scala/scala/pull/10912) by [@Friendseeker](https://github.com/Friendseeker))
* This may affect fragile code relying on ordering of hash-based collections
* Deprecate `collection.mutable.AnyRefMap` ([#10862](https://github.com/scala/scala/pull/10862) by [@wangyum](https://github.com/wangyum))
* It no longer has any performance advantage over `collection.mutable.HashMap`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"no longer" ... since when?

What is the recommendation for cross-compiling code, where Scala 2.12 performance still matters? (in my case, a lot, since it's linker code loaded through an sbt plugin)

Should we move to HashMap anyway, or should we ignore the deprecation with a compiler flag instead?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since 2.13.0, as per https://github.com/scala/scala/releases/tag/v2.13.0 — I've pushed an edit to say so

for cross-compiling, I would suggest suppressing the deprecation warning, yes. (I mean if you really wanted you could use version-specific sources...)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For those interested, here is the config we used to ignore those in bulk:

scalacOptions ++=
  if (scalaVersion.value.startsWith("2.12.")) Nil
  else Seq("-Wconf:cat=deprecation&origin=scala\\.collection\\.mutable\\.AnyRefMap.*:s")


### More changes

For the complete 2.13.16 change lists, see [all merged PRs](https://github.com/scala/scala/pulls?q=is%3Amerged%20milestone%3A2.13.16) and [all closed bugs](https://github.com/scala/bug/issues?utf8=%E2%9C%93&q=is%3Aclosed+milestone%3A2.13.16).

## Compatibility

As usual for our minor releases, Scala 2.13.16 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.

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 18 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, Eric Seidel2, Hamza Remmal, Jamie Thompson, João Costa, Kenji Yoshida, Mathias Kools, Rikito Taniguchi, Yuming Wang, rochala, sh0hei.

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)