Skip to content

Instantly share code, notes, and snippets.

@gzm0
Created December 17, 2022 10:32
Show Gist options
  • Save gzm0/d6ec17f8a8fe0d8e4989b1aa75818bd4 to your computer and use it in GitHub Desktop.
Save gzm0/d6ec17f8a8fe0d8e4989b1aa75818bd4 to your computer and use it in GitHub Desktop.

Definitions

Artifacts

Name Description
lib_c scala-library on the compilation classpath
lib_r scala-library on the runtime classpath
c scala compiler
js_c Scala.js compiler
js_ld Scala.js linker
js_jslib_c Scala.js library on the compilation classpath
js_jslib_ld Scala.js library on the linking classpath
js_lib_c Scala.js scalalib on the compilation classpath
js_lib_ld Scala.js scalalib on the linking classpath

Inputs

Name Description
scalaV build tool Scala version setting
scalaJSV build tool Scala.js version setting
scalaDepV newest Scala version from dependencies

Current Situation

Scala project

Artifact Nominal Scala Code
lib_c scalaV scalaV
lib_r scalaV scalaV
c scalaV scalaV

Notes: No js_* artifacts.

Scala.js project

Artifact Nominal Scala Code Scala Dep Scala.js Code Scala.js IR
lib_c scalaV scalaV
c scalaV scalaV
js_c (scalaV, scalaJSV) scalaV scalaJSV
js_ld scalaJSV scalaJSV
js_jslib_* scalaJSV f(scalaJSV) scalaJSV scalaJSV
js_lib_ld scalaJSV f(scalaJSV) scalaJSV scalaJSV

Notes:

  • lib_r is not present (no JVM runtime)
  • js_lib_c is not present (build tools force lib_c at compilation time).
  • js_jslib_*, js_lib_ld are a single JAR.

This Proposal

Scala project

Artifact Nominal Scala Code
lib_c scalaDepV scalaDepV
lib_r scalaDepV scalaDepV
c scalaV scalaV

Scala.js project (Option 1)

Artifact Nominal Scala Code Scala Dep Scala.js Code Scala.js IR
lib_c scalaDepV scalaDepV
c scalaV scalaV
js_c (scalaV, scalaJSV) scalaV scalaJSV
js_ld scalaJSV scalaJSV
js_jslib_* scalaDepV scalaDepV f(scalaDepV) f(scalaDepV)
js_lib_ld scalaDepV scalaDepV f(scalaDepV) f(scalaDepV)

Scala.js project (Option 1a)

Artifact Nominal Scala Code Scala Dep Scala.js Code Scala.js IR
lib_c scalaDepV scalaDepV
c scalaV scalaV
js_c (scalaV, scalaJSV) scalaV scalaJSV
js_ld scalaJSV scalaJSV
js_jslib_* scalaJSV f(scalaJSV) scalaJSV scalaJSV
js_lib_ld scalaDepV scalaDepV f(scalaDepV) f(scalaDepV)

Scala.js project (Option 2)

Artifact Nominal Scala Code Scala Dep Scala.js Code Scala.js IR
lib_c scalaDepV scalaDepV
c scalaV scalaV
js_c (scalaV, scalaJSV) scalaV scalaJSV
js_ld scalaJSV scalaJSV
js_jslib_* (scalaV, scalaJSV) scalaV scalaJSV scalaJSV
js_lib_ld (scalaV, scalaJSV) scalaJSV scalaJSV scalaJSV

Scala.js project (Option 3)

Artifact Nominal Scala Code Scala Dep Scala.js Code Scala.js IR
lib_c scalaDepV scalaDepV
c scalaV scalaV
js_c (scalaV, scalaJSV) scalaV scalaJSV
js_ld scalaJSV scalaJSV
js_jslib_* scalaJSV f(scalaJSV) scalaJSV scalaJSV
js_lib_ld scalaJSV f(scalaJSV) scalaJSV scalaJSV

Scala.js project (Option 3, with hypothetical build tool adjustment)

Artifact Nominal Scala Code Scala Dep Scala.js Code Scala.js IR
c scalaV scalaV
js_c (scalaV, scalaJSV) scalaV scalaJSV
js_ld scalaJSV scalaJSV
js_jslib_* scalaJSV f(scalaJSV) scalaJSV scalaJSV
js_lib_* scalaJSV f(scalaJSV) scalaJSV scalaJSV
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment