sbt 1.7.0-M2

Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.7.0-M2. This is the seventh feature release of sbt 1.x, a binary compatible release focusing on new features. sbt 1.x is released under Semantic Versioning, and the plugins are expected to work throughout the 1.x series. Please try it out, and report any issues you might come across.

How to upgrade

The sbt version used for your build is upgraded by putting the following in project/build.properties:

sbt.version=1.7.0-M2

This mechanism allows that sbt 1.7.0-M1 is used only for the builds that you want.

Scala 3 forward compatibility support

sbt 1.7.0 implements support for Scala 3.1.2’s improved forward compatibility feature.

ThisBuild / scalaVersion       := "3.1.2"
ThisBuild / scalaOutputVersion := "3.0.2"

This sets the -scala-output-version compiler option to 3.0, which lets us generate TASTy files and bytecode compatible with older Scala 3.x versions, while using newer Scala 3.x compiler at runtime. In addition, runtime Scala version and POM entries are also downgraded to 3.0.2.

The sbt support for this was contributed by Michał Pałka at VirtusLab as #6814.

Scala 3 compiler error improvements

In zinc#1082, Toshiyuki Takahashi contributed a fix to ignore Problem#rendered passed from the compiler when sbt uses position mapper to transform the position. This is aimed at fixing the error reporting for Play on Scala 3.

In #6874, Chris Kipp extended xsbti.Problem to track richer information available in Scala 3. This is aimed at enhancing the compilation errors reported to BSP client such as Metals.

BSP updates

Other updates