Scala 3.1.0 and 3.1.1-RC1 released!

Scala 3.1.0

Scala 3.1.0-RC3 was recently promoted to the stable release as Scala 3.1.0. You can read more in the announcement blogpost. I want to reiterate here the compatibility notice:

Scala 3 follows major.minor.patch versioning scheme (unlike Scala 2, which uses epoch.major.minor). This means that this is the first minor release after Scala 3.0.0. This has the following consequences:

  • Scala 3.1 is backward binary compatible: you can use dependencies compiled with Scala 3.0 in 3.1 projects.
  • Scala 3.1 is not forward binary compatible: you cannot use dependencies compiled with Scala 3.1 in Scala 3.0 projects.

Although we cannot guarantee full source compatibility between minor versions, we have put a lot of effort into assuring that all code that was working in 3.0.2, except in some rare cases, will also work in 3.1.0. This means that if you are an application developer, you can confidently update the compiler version to take advantage of the newest improvements. You will still be able to use dependencies compiled with Scala 3.0.

If you are a library maintainer, updating to 3.1.0 will force all of your users to update to 3.1.0 as well. We understand that the current state of binary compatibility may be unsatisfactory. We are actively working on technical solutions to support forward-compatibility in 3.2.0. In the meantime, we recommend testing your library with Scala 3.1.0 and 3.0.2, but publishing it with 3.0.2. This will allow downstream users to use your library even if they can’t update to Scala 3.1.0. You can find an example of build that follows this recommendation here.

Scala 3.1.1-RC1

We have also published the first release candidate for scala 3.1.1. You can check out the impressive changelog of this bugfixing-focused version on GitHub.