Scala 3 Dependencies ↩
This document presents changes in library dependencies for the Scala 3 software distributions. |
The Scala 3 and Scala 2 software distributions differ in several ways regarding their dependencies on external libraries. We enumerate here the main differences :
- Scala 3 depends on many more external libraries, introduced mainly with the new development of
scaladoc
. - Scala 3 depends on
compiler-interface
, the Scala incremental compiler library (Zinc
), originally part ofsbt
. - Scala 3 depends on
scala-library
, the Scala 2.13 standard library (mainly for compatibility with the Scala 2 collection framework). - Dependencies common to both software distributions include
jline
(Scala REPL) andscala-asm
(JVM backend).
🔎 We observe a jump in the increases in size of the software distributions :
Scala 3 Release date Zip archive Installation 3.4.2 May 2024 37.3 MB 29.4 MB 3.4.1 Mar 2024 36.6 MB 3.4.0 Feb 2024 36.5 MB 3.3.3 Feb 2024 35.5 MB 37.5 MB 3.3.1 Sep 2023 36.6 MB 38.7 MB 3.3.0 May 2023 36.0 MB 38.1 MB 3.2.2 Jan 2023 35.5 MB 37.6 MB 3.2.1 Sep 2022 35.5 MB 37.6 MB 3.2.0 Sep 2022 34.2 MB 36.1 MB 3.1.3 Jun 2022 33.8 MB 35.7 MB 3.1.2 Apr 2022 33.4 MB 35.3 MB 3.1.1 Jan 2022 33.3 MB 35.2 MB 3.1.0 Oct 2021 33.1 MB 35.0 MB 3.0.2 Sep 2021 31.2 MB 33.0 MB 3.0.1 Jul 2021 29.8 MB 33.0 MB
Scala 2.13 Release date Zip archive Installation 2.13.15 Sep 2024 23.3 MB 24.8 MB 2.13.14 May 2024 23.3 MB 24.8 MB 2.13.13 23.0 MB 2.13.12 Sep 2023 22.9 MB 24.4 MB 2.13.11 Jun 2023 22.9 MB 24.4 MB 2.13.10 Oct 2022 22.6 MB 24.0 MB 2.13.9 Sep 2022 22.5 MB 24.0 MB 2.13.8 Jan 2022 22.6 MB 24.1 MB 2.13.7 Nov 2021 22.6 MB 24.1 MB 2.13.6 May 2021 22.3 MB 23.8 MB
Scala 2.12 Release date Zip archive Installation 2.12.19 Feb 2024 20.1 MB 21.4 MB 2.12.18 Jun 2023 20.0 MB 21.4 MB 2.12.17 Sep 2022 20.0 MB 21.4 MB 2.12.16 Jun 2022 20.1 MB 2.12.15 Sep 2021 20.1 MB 21.5 MB
In the next sections we give more details on those dependencies for the different Scala distributions currently available, namely 3.3, 3.2, 3.1, 3.0, 2.13 and 2.12.
Dependencies in Scala 3.3 Releases ▴
As mentioned in the introduction the Scala 3.3 distributions depend on many external libraries.
Java Archive | Current Version |
3.3.0 final |
3.3.1 final |
3.3.2 final |
3.3.3 final |
---|---|---|---|---|---|
antlr4-* (relnotes) |
4.13.1 (Sep 2023) |
4.7.2 | 4.7.2 | 4.7.2 | 4.7.2 |
autolink-* (relnotes) |
0.11.0 (Feb 2023) |
0.6.0 | 0.6.0 | 0.6.0 | 0.6.0 |
compiler-interface (relnotes) |
1.10.0 (May 2024) |
1.3.5 | 1.3.5 | 1.9.3 | |
flexmark-* (relnotes) |
0.64.8 (May 2023) |
0.42.12 | 0.62.2 | 0.62.2 | 0.62.2 |
... | |||||
util-interface |
1.10.0 (May 2024) |
1.3.0 | 1.3.0 | 1.9.2 |
Dependencies in Scala 3.2 Releases ▴
As mentioned in the introduction the Scala 3.2 distributions depend on many external libraries.
Java Archive | Current Version |
3.2.0 |
3.2.1 |
3.2.2 |
---|---|---|---|---|
antlr4-* (relnotes) |
4.13.1 (Sep 2023) |
4.7.2 | 4.7.2 | 4.7.2 |
autolink-* (relnotes) |
0.11.0 (Feb 2023) |
0.6.0 | 0.6.0 | 0.6.0 |
compiler-interface (relnotes) |
1.9.3 (Jul 2022) |
1.3.5 | 1.3.5 | 1.3.5 |
flexmark-* (relnotes) |
0.64.8 (May 2023) |
0.42.12 | 0.42.12 | 0.42.12 |
jackson-annotations |
2.15.2 (May 2023) |
2.12.1 | 2.13.3 | 2.13.3 |
jackson-core (relnotes) |
2.15.2 (May 2023) |
2.12.1 | 2.13.3 | 2.13.3 |
jackson-databind |
2.15.2 (May 2023) |
2.12.1 | 2.12.3 | 2.12.3 |
jackson-dataformat-yaml |
2.15.2 (May 2023) |
2.12.1 | 2.13.3 | 2.13.3 |
jline-reader (changelog) |
3.23.0 (Mar 2023) |
3.19.0 | 3.19.0 | 3.19.0 |
jna (changelog) |
5.13.0 (Jan 2023) |
5.3.1 | 5.3.1 | 5.3.1 |
jsoup (relnotes) |
1.16.1 (Apr 2023) |
1.14.3 | 1.14.3 | 1.14.3 |
liqp (relnotes) |
0.8.5.3 (May 2023) |
0.8.2 | 0.8.2 | 0.8.2 |
protobuf-java (relnotes) |
3.23.3 (Jun 2023) |
3.7.0 | 3.7.0 | 3.7.0 |
scala-asm 2 |
9.5.0 (Apr 2023) |
9.3.0 | 9.3.0 | 9.3.0 |
scala-library |
2.13.11 (Jun 2023) |
2.13.8 | 2.13.8 | 2.13.8 |
snakeyaml (changelog) |
2.0 (Feb 2023) |
1.27 | 1.30 | 1.30 |
util-interface |
1.9.3 (Jul 2023) |
1.3.0 | 1.3.0 | 1.3.0 |
Dependencies in Scala 3.1 Releases ▴
As mentioned in the introduction the Scala 3.1 distributions depend on many external libraries.
Dependencies in Scala 3.0 Releases ▴
As mentioned in the introduction the Scala 3.0 distributions depend on many external libraries.
The following table presents the library dependencies of the Scala 2.13 distributions.
Java Archive | Current Version |
2.13.3 final |
2.13.4 final |
2.13.5 final |
2.13.6 final |
2.13.7 final |
2.13.8 final |
2.13.9 final |
2.13.10 final |
2.13.11 final |
2.13.12 final |
---|---|---|---|---|---|---|---|---|---|---|---|
jline |
3.23.0 (Mar 2023) |
3.15.0 | 3.16.0 | 3.19.0 | 3.19.0 | 3.20.0 | 3.21.0 1 | 3.21.0 | 3.21.0 | 3.22.0 | 3.22.0 |
jna |
5.13.0 (Jan 2023) |
5.3.1 (Apr 2019) |
5.3.1 | 5.3.1 | 5.3.1 | 5.8.0 | 5.9.0 1 | 5.9.0 | 5.9.0 | 5.13.0 | 5.13.0 |
scala-asm 2 |
9.5.0 (Apr 2023) |
7.3.1 | 7.3.1 | 9.1.0 | 9.1.0 | 9.2.0 3 | 9.2.0 | 9.3.0 | 9.3.0 | 9.5.0 | 9.5.0 |
🔎 Versions of the above Java archives are defined in property file
versions.properties
.
The following table presents the library dependencies of the Scala 2.12 distributions.
Java Archive | Current Version |
2.12.12 final |
2.12.13 final |
2.12.14 final |
2.12.15 final |
2.12.16 final |
2.12.17 final |
2.12.18 final |
2.12.19 DEV |
---|---|---|---|---|---|---|---|---|---|
jline (version 2) |
2.14.6 (Nov 2007) |
2.14.6 | 2.14.6 | 2.14.6 | 2.14.6 | 2.14.6 | 2.14.6 | 2.14.6 | - |
scala-asm 2 |
9.5.0 (Apr 2023) |
7.3.1 | 7.3.1 | 9.1.0 | 9.2.0 | 9.2.0 | 9.3.0 | 9.5.0 | - |
Footnotes ▴
[1] jline 3.21.0
and JNA 5.9.0
Library Updates ↩
-
Update 3.21.0 of the
JLine
library and update 5.9.0 of theJNA
library make REPL work again on Mac M1 (see pull 9807).
[2] scala-asm
Library ↩
- Scala 3 and Scala 2 software distributions are packaged differently regarding their dependency on the ASM library (actually a fork of it):
-
- In Scala 2
scala-asm
is hidden intoscala-compiler.jar
- In Scala 3
scala-asm
is a separate archive file.
- In Scala 2
-
We wrote the batch file
getasm.bat
(~200 lines) to extract the ASM version from the Scala 2 and Scala 3 distributions (using filescala-asm.properties
). Here is a sample output : -
> getasm run Found ASM version "7.0.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.12.10" Found ASM version "7.3.1-scala-1" in Scala 2 installation is "C:\opt\scala-2.12.11" Found ASM version "9.1.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.12.14" Found ASM version "9.2.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.12.15" Found ASM version "9.2.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.12.16" Found ASM version "9.3.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.12.17" Found ASM version "9.5.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.12.18" Found ASM version "7.3.1-scala-1" in Scala 2 installation is "C:\opt\scala-2.13.4" Found ASM version "9.1.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.13.5" Found ASM version "9.1.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.13.6" Found ASM version "9.2.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.13.7" Found ASM version "9.2.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.13.8" Found ASM version "9.3.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.13.9" Found ASM version "9.3.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.13.10" Found ASM version "9.5.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.13.11" Found ASM version "9.5.0-scala-1" in Scala 2 installation is "C:\opt\scala-2.13.12" Found ASM version "9.1.0-scala-1" in Scala 3 installation is "C:\opt\scala3-3.0.0" Found ASM version "9.1.0-scala-1" in Scala 3 installation is "C:\opt\scala3-3.0.2" Found ASM version "9.1.0-scala-1" in Scala 3 installation is "C:\opt\scala3-3.1.0" Found ASM version "9.1.0-scala-1" in Scala 3 installation is "C:\opt\scala3-3.1.1" Found ASM version "9.1.0-scala-1" in Scala 3 installation is "C:\opt\scala3-3.1.2" Found ASM version "9.2.0-scala-1" in Scala 3 installation is "C:\opt\scala3-3.1.3" Found ASM version "9.3.0-scala-1" in Scala 3 installation is "C:\opt\scala3-3.2.0" Found ASM version "9.3.0-scala-1" in Scala 3 installation is "C:\opt\scala3-3.2.2" Found ASM version "9.4.0-scala-1" in Scala 3 installation is "C:\opt\scala3-3.3.0" Found ASM version "9.5.0-scala-1" in Scala 3 installation is "C:\opt\scala3-3.3.1"
[3] scala-asm
Library Updates ↩
-
Besides improvements and fixes
scala-asm
library updates also add support for the latest Java version:scala-asm
updateJava version Class file version 9.7.1 24 68 9.7.0 23 67 9.6.0 22 66 9.5.0 21 65 9.4.0 20 64 9.3.0 19 63 9.2.0 18 62 9.1.0 17 61 7.3.1 15 59 7.0.0 11 55