Skip to content

Commit 8003014

Browse files
Update the nightlies doc (#3213)
* Update the nightlies doc to mention repo.scala-lang.org * Update _overviews/core/nightlies.md Co-authored-by: Hamza Remmal <hamza@remmal.net> --------- Co-authored-by: Hamza Remmal <hamza@remmal.net>
1 parent 95cdef8 commit 8003014

File tree

1 file changed

+54
-45
lines changed

1 file changed

+54
-45
lines changed

_overviews/core/nightlies.md

Lines changed: 54 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -8,80 +8,89 @@ We regularly publish nightly versions of both Scala 3 and 2 so that users can pr
88

99
Here's how to find and use these versions.
1010

11-
## Scala 3
11+
## General information on nightlies
1212

13-
Scala 3 nightly versions are published to Maven Central. If you know the full version number of the nightly you want to use, you can use it just like any other Scala 3 version.
13+
### Scala 3
1414

15-
One quick way to get that version number is to visit [https://dotty.epfl.ch](https://dotty.epfl.ch) and look in the upper left corner.
15+
Scala 3 nightly versions are published to [https://repo.scala-lang.org](https://repo.scala-lang.org). Historically, they used to be published to Maven Central. Old nightly versions of Scala 3 (all the way until `3.8.0-RC1-bin-20250822-658c8bd-NIGHTLY` in August 2025) are still available there, as well as via [https://repo.scala-lang.org](https://repo.scala-lang.org).
1616

17-
Another way is to scrape Maven Central, as shown in this script: [https://raw.githubusercontent.com/VirtusLab/community-build3/master/scripts/lastVersionNightly.sc](https://raw.githubusercontent.com/VirtusLab/community-build3/master/scripts/lastVersionNightly.sc)
17+
If you know the full version number of the nightly you want to use, you can use it just like any other Scala 3 version.
1818

19-
A third way is to use [scala-cli](https://scala-cli.virtuslab.org), as follows. (Since Scala 3.5.0, the `scala` command runs `scala-cli`.)
19+
There are a number of ways to get that version number, as listed below.
2020

21-
### scala-cli
21+
### Scala 2
2222

23-
You can run nightlies with commands such as:
24-
25-
scala-cli -S 3.nightly
26-
scala-cli -S 3.3.nightly
27-
28-
The default command is `repl`, but all the other scala-cli subcommands such as `compile` and `run` work, too. It also works with `//>` directives in your script itself, for example:
23+
We informally refer to Scala 2 “nightly” versions, but technically it's a misnomer. A so-called “nightly” is built for every merged PR in the Scala 2 repo.
2924

30-
//> using scala 3.nightly
31-
32-
See this [scala-cli doc page](https://scala-cli.virtuslab.org/docs/commands/compile#scala-nightlies) for details.
25+
Similarly to Scala 3 nightlies, they are available at [https://repo.scala-lang.org](https://repo.scala-lang.org).
3326

34-
## Scala 2.13 or 2.12
27+
## How to use nightly versions
3528

36-
We informally refer to Scala 2 “nightly” versions, but technically it's a misnomer. A so-called “nightly” is built for every merged PR.
29+
### Scala CLI
3730

38-
Scala 2 nightly versions are published to a special resolver. Unless you are using scala-cli, you'll need to add that resolver to your build configuration in order to use these versions.
31+
Scala CLI is the official runner of the language and has nightlies available without any extra configuration. From Scala 3.5.0 and on it's available under the `scala` command in Scala 3 installations. It can also be installed separately as `scala-cli`.
3932

40-
### quick version (sbt)
33+
Note: The nightly repository is supported since Scala CLI v1.9.0 onwards (or `scala` installed with Scala 3.7.3 or newer).
4134

42-
Global / resolvers += "scala-integration" at
43-
"https://scala-ci.typesafe.com/artifactory/scala-integration/"
44-
scalaVersion := "2.13.15-bin-abcd123"
35+
You can run nightlies with commands such as:
4536

46-
For a 2.12 nightly, substitute e.g. `2.12.20` for `2.13.15`; in either case, it's the version number of the _next_ release on that branch.
37+
scala -e 'println("Hello") -S 3.nightly
38+
scala -e 'println("Hello") -S 3.3.nightly
39+
scala -e 'println("Hello") -S 2.13.nightly
40+
scala -e 'println("Hello") -S 2.nightly # same as 2.13.nightly
41+
scala -e 'println("Hello") -S 2.12.nightly
4742

48-
For `abcd123`, substitute the first 7 characters of the SHA of the latest commit to the [2.13.x branch](https://github.com/scala/scala/commits/2.13.x) or [2.12.x branch](https://github.com/scala/scala/commits/2.12.x) that has a green checkmark. (Clicking the checkmark will show a CI job name with the whole version in its name.)
43+
The default command is `repl` (unless sources are passed, in which case it switches to `run`), but all the other scala-cli subcommands such as `compile` and `run` work, too. It also works with `//> using` directives in your script itself, for example:
4944

50-
A quick way to find out the full version number of a current nightly is to use [scala-cli](https://scala-cli.virtuslab.org), as follows.
45+
//> using scala 3.nightly
46+
//> using scala 3.3.nightly
47+
//> using scala 2.nightly
48+
//> using scala 2.13.nightly
49+
//> using scala 2.12.nightly
5150

52-
### quick version (scala-cli)
51+
See this [scala-cli doc page](https://scala-cli.virtuslab.org/docs/commands/compile#scala-nightlies) for details.
5352

54-
You can run nightlies with:
53+
### Get it from the nightly website
5554

56-
scala-cli -S 2.13.nightly
57-
scala-cli -S 2.nightly # same as 2.13.nightly
58-
scala-cli -S 2.12.nightly
55+
A quick way to get that version number is to visit [https://nightly.scala-lang.org](https://nightly.scala-lang.org) and look in the upper left corner.
5956

60-
The default command is `repl`, but all the other scala-cli subcommands such as `compile` and `run` work, too. It also works with `//>` directives in your script itself, for example:
57+
### Check the repository, directly
6158

62-
//> using scala 2.nightly
59+
Another way is to scrape the repository, as shown in this script: [https://raw.githubusercontent.com/VirtusLab/community-build3/master/scripts/lastVersionNightly.sc](https://raw.githubusercontent.com/VirtusLab/community-build3/master/scripts/lastVersionNightly.sc)
6360

64-
### Longer explanation
61+
### SBT
6562

66-
We no longer publish `-SNAPSHOT` versions of Scala 2.
63+
To use recent nightlies with SBT, adding the appropriate resolver to the build configuration is necessary.
6764

68-
But the team does publish nightly versions, each with its own fixed version number. The version number of a nightly looks like e.g. `2.13.1-bin-abcd123`. (`-bin-` signals binary compatibility to sbt; all 2.13.x releases since 2.13.0 are binary compatible with each other.)
65+
ThisBuild / scalaVersion := "3.8.0-RC1-bin-20250916-eb1bb73-NIGHTLY"
66+
ThisBuild / resolvers += Resolver.scalaNightlyRepository
67+
lazy val root = (project in file("."))
68+
.settings(name := "sbt-with-scala-nightlies")
6969

70-
To tell sbt to use one of these nightlies, you need to do three things.
70+
Also note that SBT 1.11.5 or newer is necessary.
7171

72-
First, add the resolver where the nightlies are kept:
72+
### Mill
7373

74-
Global / resolvers += "scala-integration" at
75-
"https://scala-ci.typesafe.com/artifactory/scala-integration/"
74+
To use recent nightlies with Mill, a custom resolver for the initial bootstrap of the build is needed.
75+
Here's an example `build.mill` file:
7676

77-
Second, specify the Scala version:
77+
package build
78+
import mill.*
79+
import mill.api.*
80+
import scalalib.*
7881

79-
scalaVersion := "2.13.1-bin-abcd123"
82+
def scalaNightlyRepo = "https://repo.scala-lang.org/artifactory/maven-nightlies"
8083

81-
But that isn't a real version number. Manually substitute a version number containing the 7-character SHA of the last commit in the [scala/scala repository](https://github.com/scala/scala) for which a nightly version was published. Look at [https://travis-ci.org/scala/scala/branches](https://travis-ci.org/scala/scala/branches) and you'll see the SHA in the upper right corner of the 2.13.x (or 2.12.x) section.
84+
object project extends ScalaModule {
85+
def jvmWorker = ModuleRef(CustomJvmWorkerModule)
86+
override def scalaVersion = "3.8.0-RC1-bin-20250916-eb1bb73-NIGHTLY"
87+
override def repositories = Task { super.repositories() ++ Seq(scalaNightlyRepo)}
88+
}
8289

83-
As soon as 2.13.1 is released, the version number in the nightly will bump to 2.13.2, and so on.
90+
object CustomJvmWorkerModule extends JvmWorkerModule, CoursierModule {
91+
override def repositories = Task { super.repositories() ++ Seq(scalaNightlyRepo)}
92+
}
8493

85-
If you have a multiproject build, be sure you set these settings across all projects when you modify your build definition. Or, you may set them temporarily in the sbt shell with `++2.13.1-bin-abcd123` (sbt 0.13.x) or `++2.13.1-bin-abcd123!` (sbt 1.x; the added exclamation point is necessary to force a version not included in `crossScalaVersions` to be used).
94+
Note how the custom `JvmWorkerModule` is necessary with the added repository. It is not enough to just define it as a repository for the module dependencies.
8695

87-
Ideally, we would suggest an automated way to ask Travis-CI for the right SHA. This is presumably possible via Travis-CI's API, but as far as we know, nobody has looked into it yet. (Is there a volunteer?)
96+
Also note that Mill 1.0.5 or newer is necessary for this.

0 commit comments

Comments
 (0)