Skip to content

Commit

Permalink
feat: upgrade scala native to latest and enable multithreading
Browse files Browse the repository at this point in the history
  • Loading branch information
asr2003 authored Aug 30, 2024
1 parent 3d535f1 commit ae5ebb5
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 7 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ jobs:
jvm: ${{ matrix.java }}
- name: Cache scala dependencies
uses: coursier/cache-action@v6
- name: Install libuv
- name: Install Bohem GC
if: matrix.platform == 'Native'
run: sudo apt-get update && sudo apt-get install -y libuv1-dev
run: sudo apt-get update && sudo apt-get install -y libgc-dev
- name: Run tests
run: sbt ++${{ matrix.scala }}! test${{ matrix.platform }}

Expand Down
11 changes: 10 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import sbtcrossproject.CrossPlugin.autoImport._
import BuildHelper.{ crossProjectSettings, _ }
import BuildHelper.*
import org.scalajs.sbtplugin.ScalaJSPlugin.autoImport._

Global / onChangedBuildSource := ReloadOnSourceChanges
Expand Down Expand Up @@ -113,6 +113,7 @@ lazy val tests = crossProject(JSPlatform, JVMPlatform, NativePlatform)
.settings(crossProjectSettings)
.settings(buildInfoSettings("zio.schema"))
.settings(testDeps)
.nativeSettings(nativeSettings)

lazy val testsJS = tests.js
.settings(scalaJSUseMainModuleInitializer := true)
Expand All @@ -126,6 +127,7 @@ lazy val zioSchemaMacros = crossProject(JSPlatform, JVMPlatform, NativePlatform)
.settings(buildInfoSettings("zio.schema"))
.settings(macroDefinitionSettings)
.nativeSettings(Test / fork := false)
.nativeSettings(nativeSettings)
.nativeSettings(
libraryDependencies ++= Seq(
"io.github.cquiroz" %%% "scala-java-time" % scalaJavaTimeVersion
Expand Down Expand Up @@ -156,6 +158,7 @@ lazy val zioSchema = crossProject(JSPlatform, JVMPlatform, NativePlatform)
)
)
.nativeSettings(Test / fork := false)
.nativeSettings(nativeSettings)
.nativeSettings(
libraryDependencies ++= Seq(
"io.github.cquiroz" %%% "scala-java-time" % scalaJavaTimeVersion
Expand Down Expand Up @@ -211,6 +214,7 @@ lazy val zioSchemaDerivation = crossProject(JSPlatform, JVMPlatform, NativePlatf
}
)
.nativeSettings(Test / fork := false)
.nativeSettings(nativeSettings)
.nativeSettings(
libraryDependencies ++= Seq(
"io.github.cquiroz" %%% "scala-java-time" % scalaJavaTimeVersion
Expand Down Expand Up @@ -240,6 +244,7 @@ lazy val zioSchemaJson = crossProject(JSPlatform, JVMPlatform, NativePlatform)
)
)
.nativeSettings(Test / fork := false)
.nativeSettings(nativeSettings)
.nativeSettings(
libraryDependencies ++= Seq(
"io.github.cquiroz" %%% "scala-java-time" % scalaJavaTimeVersion
Expand Down Expand Up @@ -267,6 +272,7 @@ lazy val zioSchemaProtobuf = crossProject(JSPlatform, JVMPlatform, NativePlatfor
.settings(crossProjectSettings)
.settings(buildInfoSettings("zio.schema.protobuf"))
.nativeSettings(Test / fork := false)
.nativeSettings(nativeSettings)
.nativeSettings(
libraryDependencies ++= Seq(
"io.github.cquiroz" %%% "scala-java-time" % scalaJavaTimeVersion
Expand Down Expand Up @@ -358,6 +364,7 @@ lazy val zioSchemaOptics = crossProject(JSPlatform, JVMPlatform, NativePlatform)
)
)
.nativeSettings(Test / fork := false)
.nativeSettings(nativeSettings)
.nativeSettings(
libraryDependencies ++= Seq(
"io.github.cquiroz" %%% "scala-java-time" % scalaJavaTimeVersion
Expand Down Expand Up @@ -388,6 +395,7 @@ lazy val zioSchemaExamples = crossProject(JSPlatform, JVMPlatform, NativePlatfor
scalacOptions -= "-Xfatal-warnings"
)
.nativeSettings(Test / fork := false)
.nativeSettings(nativeSettings)
.nativeSettings(
libraryDependencies ++= Seq(
"io.github.cquiroz" %%% "scala-java-time" % scalaJavaTimeVersion
Expand All @@ -412,6 +420,7 @@ lazy val zioSchemaZioTest = crossProject(JSPlatform, JVMPlatform, NativePlatform
.settings(stdSettings("zio-schema-zio-test"))
.settings(crossProjectSettings)
.settings(buildInfoSettings("zio.schema.test"))
.nativeSettings(nativeSettings)
.settings(
libraryDependencies ++= Seq(
"dev.zio" %%% "zio-test" % zioVersion
Expand Down
17 changes: 14 additions & 3 deletions project/BuildHelper.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import BuildInfoKeys.*
import scalafix.sbt.ScalafixPlugin.autoImport.*
import scalanativecrossproject.NativePlatform

import scala.scalanative.sbtplugin.ScalaNativePlugin.autoImport.nativeConfig
import scala.scalanative.build.{ GC, Mode }
import scala.scalanative.sbtplugin.ScalaNativePlugin.autoImport.*

object BuildHelper {

Expand All @@ -27,7 +28,7 @@ object BuildHelper {
val Scala213: String = versions("2.13")
val Scala3: String = versions("3.3")

val zioVersion = "2.1.7"
val zioVersion = "2.1.9"
val zioJsonVersion = "0.7.2"
val zioPreludeVersion = "1.0.0-RC28"
val zioOpticsVersion = "0.2.2"
Expand Down Expand Up @@ -187,8 +188,18 @@ object BuildHelper {
"test",
baseDirectory.value
)
}
)

def nativeSettings = Seq(
nativeConfig ~= { cfg =>
val os = System.getProperty("os.name").toLowerCase
// For some unknown reason, we can't run the test suites in debug mode on MacOS
if (os.contains("mac")) cfg.withMode(Mode.releaseFast)
else cfg.withGC(GC.boehm) // See https://github.com/scala-native/scala-native/issues/4032
},
nativeConfig ~= { _.withMultithreading(false) }
scalacOptions += "-P:scalanative:genStaticForwardersForNonTopLevelObjects",
Test / fork := crossProjectPlatform.value == JVMPlatform // set fork to `true` on JVM to improve log readability, JS and Native need `false`
)

def buildInfoSettings(packageName: String) = Seq(
Expand Down
2 changes: 1 addition & 1 deletion project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2")
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0")
addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.12")
addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.3.2")
addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.5.3")
addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.5.5")
addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.6")
addSbtPlugin("dev.zio" % "zio-sbt-website" % "0.4.0-alpha.22")

Expand Down

0 comments on commit ae5ebb5

Please sign in to comment.