Skip to content

Commit f3b94a7

Browse files
committed
add "Nightly Versions of Scala" to Overviews page
I'm suggesting adding this to https://docs.scala-lang.org/overviews/index.html -- at least I can't think of a better location the text is based on https://stackoverflow.com/questions/40622878/how-do-i-use-a-nightly-build-of-scala which I drafted some years ago and have been updating ever since. I should have turned it into official doc a long time ago.
1 parent e3078bb commit f3b94a7

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed

_data/overviews.yml

+3
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,9 @@
161161
description: "A diverse and comprehensive set of libraries is important to any productive software ecosystem. While it is easy to develop and distribute Scala libraries, good library authorship goes beyond just writing code and publishing it. In this guide, we cover the important topic of Binary Compatibility."
162162
icon: puzzle-piece
163163
url: "core/binary-compatibility-for-library-authors.html"
164+
- title: Nightly Versions of Scala
165+
description: "We regularly publish 'nightlies' of both Scala 2 and 3 so that users can preview and test the contents of upcoming releases. Here's how to find and use these versions."
166+
url: "core/nightly-builds.html"
164167

165168
- category: "Tools"
166169
description: "Reference material on core Scala tools like the Scala REPL and Scaladoc generation."

_overviews/core/nightly-builds.md

+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
---
2+
layout: singlepage-overview
3+
title: Nightly Versions of Scala
4+
permalink: /overviews/core/:title.html
5+
---
6+
7+
We regularly publish nightly builds of both Scala 2 and 3 so that users can preview and test the contents of upcoming releases.
8+
9+
We informally call them "nightly" builds, but technically it's a misnomer. A so-called “nightly” is built for every merged PR.
10+
11+
Here's how to find and use these versions.
12+
13+
## Scala 3
14+
15+
Scala 3 nightly builds 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.
16+
17+
One quick way to get that version number is to visit https://dotty.epfl.ch and look in the upper left corner.
18+
19+
Another way is to scrape Maven Central, as shown in this script: https://raw.githubusercontent.com/VirtusLab/community-build3/master/scripts/lastVersionNightly.sc
20+
21+
A third way is to use [scala-cli](https://scala-cli.virtuslab.org), as follows.
22+
23+
### scala-cli
24+
25+
You can run nightlies with commands such as:
26+
27+
scala-cli -S 3.nightly
28+
scala-cli -S 3.3.nightly
29+
30+
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:
31+
32+
//> using scala 3.nightly
33+
34+
See this [scala-cli doc page](https://scala-cli.virtuslab.org/docs/commands/compile#scala-nightlies) for details.
35+
36+
## Scala 2.13 or 2.12
37+
38+
Scala 3 nightly builds are published to a special resolver. You'll need to add that resolver to your build configuration in order to use these versions.
39+
40+
### quick version (sbt)
41+
42+
Global / resolvers += "scala-integration" at
43+
"https://scala-ci.typesafe.com/artifactory/scala-integration/"
44+
scalaVersion := "2.13.15-bin-abcd123"
45+
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
47+
48+
for `abcd123`, manually substitute the first 7 characters of the SHA of the latest green build [on the 2.13.x or 2.12.x branch on Travis-CI](https://app.travis-ci.com/github/scala/scala/branches).
49+
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.
51+
52+
### quick version (scala-cli)
53+
54+
You can run nightlies with:
55+
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
59+
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:
61+
62+
//> using scala 2.nightly
63+
64+
### Longer explanation
65+
66+
We no longer publish `-SNAPSHOT` versions of Scala 2.
67+
68+
But the team does publish nightly builds, 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.)
69+
70+
To tell sbt to use one of these nightlies, you need to do three things.
71+
72+
First, add the resolver where the nightlies are kept:
73+
74+
Global / resolvers += "scala-integration" at
75+
"https://scala-ci.typesafe.com/artifactory/scala-integration/"
76+
77+
Second, specify the Scala version:
78+
79+
scalaVersion := "2.13.1-bin-abcd123"
80+
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 build was published. Look at 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.
82+
83+
As soon as 2.13.1 is released, the version number in the nightly will bump to 2.13.2, and so on.
84+
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).
86+
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?)

0 commit comments

Comments
 (0)