From 94caf120ac0911c5e98419f0722ce7dd137f4aae Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Fri, 14 Nov 2025 14:35:40 +0100 Subject: [PATCH 1/6] Disable generation of API docs in scala-library-bootstrapped - it's still going to be generated when building using `scaladoc/generateStableDocumentation` --- project/Build.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index 059ce2cf001d..2fc7dc0c1985 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -457,7 +457,7 @@ object Build { import java.text._ val dateFormat = new SimpleDateFormat("yyyyMMdd-HHmmss") dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")) - + val fileName = "compiler.properties" val contents = Def.setting { s"""version.number=${version.value} @@ -1994,6 +1994,7 @@ object Build { lazy val `scala-library-bootstrapped` = project.in(file("library")) .enablePlugins(ScalaLibraryPlugin) .settings(publishSettings) + .settings(disableDocSetting) // TODO now produces empty JAR to satisfy Sonatype, see https://github.com/scala/scala3/issues/24434 .settings( name := "scala-library-bootstrapped", moduleName := "scala-library", From bf6ca9e25b1a05642325fdc55484967036df88a4 Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Tue, 28 Oct 2025 16:32:18 +0100 Subject: [PATCH 2/6] Set developedVersion to 3.8.1 --- project/Build.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index 2fc7dc0c1985..74e207df82fd 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -70,7 +70,7 @@ object Build { * * Warning: Change of this variable might require updating `expectedTastyVersion` */ - val developedVersion = "3.8.0" + val developedVersion = "3.8.1" /** The version of the compiler including the RC prefix. * Defined as common base before calculating environment specific suffixes in `dottyVersion` From 6e91aa5434706b99776d8c673e14a7a22fb69f0d Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Tue, 28 Oct 2025 16:50:03 +0100 Subject: [PATCH 3/6] Adjust MiMa filters for tasty-core --- project/MiMaFilters.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/project/MiMaFilters.scala b/project/MiMaFilters.scala index 42ba23cac480..b90ef27c425d 100644 --- a/project/MiMaFilters.scala +++ b/project/MiMaFilters.scala @@ -596,6 +596,8 @@ object MiMaFilters { Build.mimaPreviousDottyVersion -> Seq( ProblemFilters.exclude[DirectMissingMethodProblem]("dotty.tools.tasty.TastyFormat.FLEXIBLEtype"), ProblemFilters.exclude[DirectMissingMethodProblem]("dotty.tools.tasty.TastyFormat.TRACKED"), + ProblemFilters.exclude[DirectMissingMethodProblem]("dotty.tools.tasty.TastyFormat.INTO"), + ProblemFilters.exclude[DirectMissingMethodProblem]("dotty.tools.tasty.TastyFormat.SUBMATCH"), ), // Additions since last LTS From 4aa75741276c3aff5f1b8c1ea6fce48f12d12438 Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Fri, 14 Nov 2025 20:45:22 +0100 Subject: [PATCH 4/6] Set reference version to 3.8.0-RC1 --- project/Build.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index 74e207df82fd..9201ae0f3077 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -59,7 +59,7 @@ object Build { * * Warning: Change of this variable needs to be consulted with `expectedTastyVersion` */ - val referenceVersion = "3.7.4" + val referenceVersion = "3.8.0-RC1" /** Version of the Scala compiler targeted in the current release cycle * Contains a version without RC/SNAPSHOT/NIGHTLY specific suffixes From 9d4dc19e25c0be892530f039125d9beb64fe61f0 Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Fri, 14 Nov 2025 22:19:05 +0100 Subject: [PATCH 5/6] Use Scala 3.8.0-RC1 for MiMa checks --- project/Build.scala | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/project/Build.scala b/project/Build.scala index 9201ae0f3077..a77c0c8dd632 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -138,7 +138,7 @@ object Build { * - `3.M.0` if `P > 0` * - `3.(M-1).0` if `P = 0` */ - val mimaPreviousDottyVersion = "3.7.3" // for 3.8.0, we compare against 3.7.3 + val mimaPreviousDottyVersion = "3.8.0-RC1" // temporary until 3.8.0 is released /** LTS version against which we check binary compatibility. * @@ -309,7 +309,6 @@ object Build { Test / develocityBuildCacheClient := None, extraDevelocityCacheInputFiles := Seq.empty, extraDevelocityCacheInputFiles / outputFileStamper := FileStamper.Hash, - resolvers += ("Artifactory" at "https://repo.scala-lang.org/artifactory/fat-jar/"), ) // Settings shared globally (scoped in Global). Used in build.sbt @@ -1936,12 +1935,7 @@ object Build { // Project specific target folder. sbt doesn't like having two projects using the same target folder target := target.value / "scala-library-nonbootstrapped", // Add configuration for MiMa - mimaCheckDirection := (compatMode match { - case CompatMode.BinaryCompatible => "backward" - case CompatMode.SourceAndBinaryCompatible => "both" - }), - mimaExcludeAnnotations += "scala.annotation.experimental", - mimaPreviousArtifacts += ("org.scala-lang" % "fat-stdlib" % "3.7.3"), + commonMiMaSettings, mimaForwardIssueFilters := MiMaFilters.Scala3Library.ForwardsBreakingChanges, mimaBackwardIssueFilters := MiMaFilters.Scala3Library.BackwardsBreakingChanges, customMimaReportBinaryIssues("MiMaFilters.Scala3Library"), @@ -2063,12 +2057,7 @@ object Build { Some((`scala3-sbt-bridge-nonbootstrapped` / Compile / packageBin).value) }, // Add configuration for MiMa - mimaCheckDirection := (compatMode match { - case CompatMode.BinaryCompatible => "backward" - case CompatMode.SourceAndBinaryCompatible => "both" - }), - mimaExcludeAnnotations += "scala.annotation.experimental", - mimaPreviousArtifacts += ("org.scala-lang" % "fat-stdlib" % "3.7.3"), + commonMiMaSettings, mimaForwardIssueFilters := MiMaFilters.Scala3Library.ForwardsBreakingChanges, mimaBackwardIssueFilters := MiMaFilters.Scala3Library.BackwardsBreakingChanges, customMimaReportBinaryIssues("MiMaFilters.Scala3Library"), @@ -2233,12 +2222,7 @@ object Build { }).transform(node).head }, // Add configuration for MiMa - mimaCheckDirection := (compatMode match { - case CompatMode.BinaryCompatible => "backward" - case CompatMode.SourceAndBinaryCompatible => "both" - }), - mimaExcludeAnnotations += "scala.annotation.experimental", - mimaPreviousArtifacts += ("org.scala-js" % "fat-stdlib_sjs1" % "3.7.3"), + commonMiMaSettings, mimaForwardIssueFilters := MiMaFilters.Scala3Library.ForwardsBreakingChanges, mimaBackwardIssueFilters := MiMaFilters.Scala3Library.BackwardsBreakingChanges, customMimaReportBinaryIssues("MiMaFilters.Scala3Library"), From 6a051d4b77c7a65b00d68e3ae9089a2d0912a6e6 Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Fri, 14 Nov 2025 22:49:51 +0100 Subject: [PATCH 6/6] Adjust MiMa filters for scala-library-sjs - there is no bytecode emitted for most of definitions, only some `scala.scalajs.*` classes are defined --- project/Build.scala | 6 +++--- project/MiMaFilters.scala | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/project/Build.scala b/project/Build.scala index a77c0c8dd632..7f3cd32350cb 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -2223,9 +2223,9 @@ object Build { }, // Add configuration for MiMa commonMiMaSettings, - mimaForwardIssueFilters := MiMaFilters.Scala3Library.ForwardsBreakingChanges, - mimaBackwardIssueFilters := MiMaFilters.Scala3Library.BackwardsBreakingChanges, - customMimaReportBinaryIssues("MiMaFilters.Scala3Library"), + mimaForwardIssueFilters := MiMaFilters.ScalaLibrarySJS.ForwardsBreakingChanges, + mimaBackwardIssueFilters := MiMaFilters.ScalaLibrarySJS.BackwardsBreakingChanges, + customMimaReportBinaryIssues("MiMaFilters.ScalaLibrarySJS"), // Should we also patch .sjsir files keepSJSIR := true, ) diff --git a/project/MiMaFilters.scala b/project/MiMaFilters.scala index b90ef27c425d..2e6eda89bedc 100644 --- a/project/MiMaFilters.scala +++ b/project/MiMaFilters.scala @@ -590,6 +590,26 @@ object MiMaFilters { ) } + object ScalaLibrarySJS { + val ForwardsBreakingChanges: Map[String, Seq[ProblemFilter]] = Map( + // Additions that require a new minor version of the library + Build.mimaPreviousDottyVersion -> Seq( + // No .class files generated in the artifacts, only `scala.scalajs.*` files might be present + ProblemFilters.exclude[MissingClassProblem]("scala.*"), + ), + Build.mimaPreviousLTSDottyVersion -> Seq( + // No .class files generated in the artifacts, only `scala.scalajs.*` files might be present + ProblemFilters.exclude[MissingClassProblem]("scala.*"), + ), + ) + + val BackwardsBreakingChanges: Map[String, Seq[ProblemFilter]] = Map( + // We should never break backwards compatibility + Build.mimaPreviousDottyVersion -> Seq.empty, + Build.mimaPreviousLTSDottyVersion -> Seq.empty, + ) + } + object TastyCore { val ForwardsBreakingChanges: Map[String, Seq[ProblemFilter]] = Map( // Additions that require a new minor version of tasty core