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

Incorporate Scala 3.3.1 binary bridge to scripted #1353

Merged
merged 2 commits into from
Apr 22, 2024
Merged
Show file tree
Hide file tree
Changes from all 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
35 changes: 34 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,23 @@ lazy val zinc = (projectMatrix in (zincRootPath / "zinc"))
BuildInfoKey.map(compilerBridge213 / scalaVersion)("scalaVersion213" -> _._2),
BuildInfoKey.map(compilerBridge213 / scalaInstance)("scalaJars213" -> _._2.allJars.toList),
BuildInfoKey.map(compilerBridge213 / Compile / classDirectory)("classDirectory213" -> _._2),
BuildInfoKey.map(compilerBridgeScala213Bin / scalaVersion)("scalaVersion213Bin" -> _._2),
BuildInfoKey.map(compilerBridgeScala213Bin / scalaInstance)(
"scalaJars213Bin" -> _._2.allJars.toList
),
BuildInfoKey.map(compilerBridgeScala213Bin / Compile / externalDependencyClasspath)(
"compilerBridge213Bin" -> _._2.toList.head.data
),
BuildInfoKey.map(compilerBridgeScala3Bin / scalaVersion)("scalaVersion3Bin" -> _._2),
BuildInfoKey.map(compilerBridgeScala3Bin / scalaInstance)(
"scalaJars3Bin" -> _._2.allJars.toList
),
BuildInfoKey.map(compilerBridgeScala3Bin / Compile / externalDependencyClasspath)(
"compilerBridge3Bin" -> _._2.toList.head.data
),
BuildInfoKey.map(compilerInterface.jvm(false) / Compile / packageBin)(
"compilerInterface" -> _._2
),
),
Test / classLoaderLayeringStrategy := ClassLoaderLayeringStrategy.Flat,
// so we have full access to com.sun.tools.javac on JDK 17
Expand Down Expand Up @@ -516,12 +533,28 @@ lazy val compilerBridge = (projectMatrix in internalPath / "compiler-bridge")
}.toList),
)
.defaultAxes(VirtualAxis.jvm)
.jvmPlatform(scalaVersions = allScalaVersions)
.jvmPlatform(scalaVersions = compilerBridgeVersions)

lazy val compilerBridge210 = compilerBridge.jvm(scala210)
lazy val compilerBridge211 = compilerBridge.jvm(scala211)
lazy val compilerBridge212 = compilerBridge.jvm(scala212)
lazy val compilerBridge213 = compilerBridge.jvm(scala213)
lazy val compilerBridgeScala213Bin = (project in internalPath / "compilerBridgeScala213Bin")
.settings(
name := "compilerBridgeScala213Bin",
publish / skip := true,
autoScalaLibrary := false,
scalaVersion := scala213,
libraryDependencies += scala2BinaryBridge,
)
lazy val compilerBridgeScala3Bin = (project in internalPath / "compilerBridgeScala3Bin")
.settings(
name := "compilerBridgeScala3Bin",
publish / skip := true,
autoScalaLibrary := false,
scalaVersion := scala3ForBridge,
libraryDependencies += scala3BinaryBridge,
)

/**
* Tests for the compiler bridge.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -311,10 +311,10 @@ final class AnalyzingCompiler(

// see https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html
private def loadService[A](cls: Class[A], loader: ClassLoader): Option[A] = {
import scala.collection.JavaConverters._
val sl = ServiceLoader.load(cls, loader)
val it = sl.iterator
if (it.hasNext) Some(it.next)
else None
val list = sl.iterator.asScala.toList
list.lastOption
}

private def bridgeInstance(bridgeClassName: String, loader: ClassLoader): (AnyRef, Class[?]) = {
Expand Down Expand Up @@ -351,20 +351,20 @@ final class AnalyzingCompiler(
scalaLoader: ClassLoader,
log: Logger
): ClassLoader = {
val interfaceJar = provider.fetchCompiledBridge(scalaInstance, log)
def createInterfaceLoader =
val compilerBridgeJar = provider.fetchCompiledBridge(scalaInstance, log)
def createCompilerBridgeLoader =
new URLClassLoader(
Array(interfaceJar.toURI.toURL),
Array(compilerBridgeJar.toURI.toURL),
createDualLoader(scalaLoader, getClass.getClassLoader)
)

classLoaderCache match {
case Some(cache) =>
cache.cachedCustomClassloader(
interfaceJar :: scalaJars,
() => createInterfaceLoader
compilerBridgeJar :: scalaJars,
() => createCompilerBridgeLoader
)
case None => createInterfaceLoader
case None => createCompilerBridgeLoader
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ class IncHandler(directory: Path, cacheDir: Path, scriptedLog: ManagedLogger, co
val build = initBuild
build.projects.foreach { p =>
val in: Path = p.in.getOrElse(directory / p.name)
val version = p.scalaVersion.getOrElse(scala.util.Properties.versionNumberString)
val version = switchScalaVersion(p.scalaVersion)
val deps = p.dependsOn.toVector.flatten
val project = ProjectStructure(
p.name,
Expand Down
6 changes: 5 additions & 1 deletion project/Dependencies.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ object Dependencies {
val scala211 = "2.11.12"
val scala212 = "2.12.19"
val scala213 = "2.13.13"
val scala3ForBridge = "3.3.1"
val scala213ForBridge = "2.13.13"
val defaultScalaVersion = scala212
val allScalaVersions = Seq(defaultScalaVersion, scala210, scala211, scala213)
val compilerBridgeVersions = Seq(scala212, scala210, scala211, scala213)
val scala212_213 = Seq(defaultScalaVersion, scala213)

private val ioVersion = nightlyVersion.getOrElse("1.9.9")
Expand Down Expand Up @@ -83,6 +85,8 @@ object Dependencies {
"com.eed3si9n" %% "sjson-new-scalajson" % contrabandSjsonNewVersion.value
}
val zeroAllocationHashing = "net.openhft" % "zero-allocation-hashing" % "0.16"
val scala2BinaryBridge = "org.scala-lang" % "scala2-sbt-bridge" % scala213ForBridge
val scala3BinaryBridge = "org.scala-lang" % "scala3-sbt-bridge" % scala3ForBridge

def addTestDependencies(p: Project): Project =
p.settings(
Expand Down
4 changes: 2 additions & 2 deletions zinc/src/sbt-test/macros/macro-arg-dep-nested/build.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"dependsOn": [
"macro-provider"
],
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "macro-provider",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"dependsOn": [
"macro-provider"
],
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "macro-provider",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
}
]
}
4 changes: 2 additions & 2 deletions zinc/src/sbt-test/macros/macro-arg-dep/build.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"dependsOn": [
"macro-provider"
],
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "macro-provider",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
}
]
}
6 changes: 3 additions & 3 deletions zinc/src/sbt-test/macros/macro-type-change-2/build.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
"macros",
"A"
],
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "macros",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "A",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
}
]
}
6 changes: 3 additions & 3 deletions zinc/src/sbt-test/macros/macro-type-change-3/build.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
"macros",
"A"
],
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "macros",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "A",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
}
]
}
6 changes: 3 additions & 3 deletions zinc/src/sbt-test/macros/macro-type-change-4/build.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
"macros",
"A"
],
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "macros",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "A",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
}
]
}
4 changes: 2 additions & 2 deletions zinc/src/sbt-test/macros/macro-type-change/build.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"dependsOn": [
"macros"
],
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "macros",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
}
]
}
4 changes: 2 additions & 2 deletions zinc/src/sbt-test/macros/macro-use/build.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"projects": [
{ "name": "lib", "scalaVersion": "2.13.13" },
{ "name": "app", "scalaVersion": "2.13.13", "dependsOn": [ "lib" ] }
{ "name": "lib", "scalaVersion": "2.13.x" },
{ "name": "app", "scalaVersion": "2.13.x", "dependsOn": [ "lib" ] }
]
}
4 changes: 2 additions & 2 deletions zinc/src/sbt-test/macros/macro/build.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"dependsOn": [
"macro-provider"
],
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "macro-provider",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"dependsOn": [
"dep"
],
"scalaVersion": "2.13.13"
"scalaVersion": "3.x"
},
{
"name": "dep",
"scalaVersion": "2.13.13"
"scalaVersion": "3.x"
}
]
}
11 changes: 11 additions & 0 deletions zinc/src/sbt-test/pipelining/subproject-pipelining-3/pending
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# done this way because last modified times often have ~1s resolution
> use/compile
$ sleep 1000

# This tests no-op compilation of dep
$ copy-file changes/B2.scala use/B.scala
> use/compile
$ sleep 1000

$ copy-file changes/Break.scala dep/A.scala
-> use/compile
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"dependsOn": [
"dep"
],
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "dep",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"dependsOn": [
"dep"
],
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "dep",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"dependsOn": [
"dep"
],
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
},
{
"name": "dep",
"scalaVersion": "2.13.13"
"scalaVersion": "2.13.x"
}
]
}
15 changes: 15 additions & 0 deletions zinc/src/sbt-test/pipelining/subproject-pipelining/build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"projects": [
{
"name": "use",
"dependsOn": [
"dep"
],
"scalaVersion": "2.13.x"
},
{
"name": "dep",
"scalaVersion": "2.13.x"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package example

object B {
val y = A.x
val z = 1
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package example

object Break
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package example

object A {
val x = 3
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pipelining = true
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package example

object B {
val y = A.x
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pipelining = true
12 changes: 12 additions & 0 deletions zinc/src/sbt-test/source-dependencies/binary-3/build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"projects": [
{
"name": "use",
"scalaVersion": "3.x"
},
{
"name": "dep",
"scalaVersion": "3.x"
}
]
}
Loading