Coming soon: Scala 2.12.11, Scala 2.13.2

The PR queue and bug list for Scala 2.12.11 are down to zero, which means that the current build, 2.12.11-bin-f139b61 (update: 2.12.11-bin-cd8410d), is our release candidate.

To test the candidate in your project, add a resolver for scala-integration and update the scala version, in sbt:

resolvers += "scala-integration" at "https://scala-ci.typesafe.com/artifactory/scala-integration/"
scalaVersion := "2.12.11-bin-cd8410d"

2.12.11 will ship with improvements to -Yrepl-class-based, a flag that changes the encoding in the REPL, and -Yrepl-use-magic-imports, a lightweight encoding for import priorities. Bot of these flags will be enabled by default in the upcoming 2.13.2 release, therefore testing the REPL is especially appreciated.

An easy way to run the REPL is by using courser:

$> java -cp $(cs fetch -p -r https://scala-ci.typesafe.com/artifactory/scala-integration org.scala-lang:scala-compiler:2.12.11-bin-cd8410d) scala.tools.nsc.MainGenericRunner -usejavacp -Yrepl-class-based -Yrepl-use-magic-imports
Welcome to Scala 2.12.11-bin-cd8410d (Java HotSpot(TM) 64-Bit GraalVM EE 19.2.1, Java 1.8.0_231).
Type in expressions for evaluation. Or try :help.

scala> for (i <- (1 to 10).par) yield i // no deadlock, https://github.com/scala/bug/issues/9076
res0: scala.collection.parallel.immutable.ParSeq[Int] = ParVector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

scala> class Meter(val x: Int) extends AnyVal { override def toString = s"${x}m" }
defined class Meter

scala> new Meter(42)
res1: Meter = 42m

Other than the REPL changes, 2.12.11 ships bug fixes and performance improvements in the compiler and the collections library.

1 Like

(Added some improvements to my scala-runners wrappers so now you can run that with just

scala --scala-version 2.12.11-bin-cd8410d -Yrepl-class-based -Yrepl-use-magic-imports

brew install --HEAD dwijnand/formulas/scala-runners! :smile:)

2 Likes

Could you please update https://raw.githubusercontent.com/scala/community-builds/2.12.x/nightly.properties so that it points to that release candidate, then?

This will allow https://github.com/scala-js/scala-js-test-scala-nightly to automatically test Scala.js, as well as derivatives of that script (e.g., Shapeless uses that too: https://github.com/milessabin/shapeless-test-scala-nightly).

I didn’t realize other projects are using this reference :slight_smile:

It’s lagging because the community build for f139b61 is shaking out a few more issues

So there will be another “RC”, hopefully soon.

The two collections regressions (https://github.com/scala/scala-dev/issues/672, https://github.com/scala/scala-dev/issues/673) are now fixed.

The community build is again green, so https://raw.githubusercontent.com/scala/community-builds/2.12.x/nightly.properties now points to the new “RC”, which is 2.12.11-bin-d1e9ac0.

2 Likes

Scala.js is green: https://travis-ci.org/scala-js/scala-js-test-scala-nightly/builds/657071108

3 Likes

Latest 2.12.11 milestone is 2.12.11-bin-e1e2bfe. It includes one more collection fix (quite minor, only affecting serialization compatibility).

At present the only open 2.12.11 ticket is https://github.com/scala/scala-dev/issues/675 , but it looks like we’ll just close that one and release-note it.

3 Likes

some 2.13.2 updates:

3 Likes

No further 2.12.11 problems have turned up, but we’re waiting a bit longer while some users test it for possible performance regressions. Rough first-draft release notes: https://gist.github.com/SethTisue/5754a63fa0e3561349367ba6f0224f40

2 Likes

In the end, no performance problems turned up.

We merged one final PR with a tiny, safe change that avoids some annoying warnings in the REPL.

https://raw.githubusercontent.com/scala/community-builds/2.12.x/nightly.properties now points to 2.12.11-bin-cd8410d .

We’ll go ahead and re-release that version as 2.12.11 soon — we’re a bit busy with the SIP retreat in Lausanne, so maybe this week, maybe first thing next week.

2 Likes

Scala 2.12.11 is now on maven central. The official announcement will follow soon, but the release notes are already on https://github.com/scala/scala/releases/tag/v2.12.11 (feedback welcome).

5 Likes

Support for 2.12.11 for Scala.js 0.6.32, 1.0.0 and 1.0.1 is on its way to Maven Central.

2 Likes

Macro Paradise 2.1.1 is also available, I hope I did everything right when publishing that release.

https://repo1.maven.org/maven2/org/scalamacros/paradise_2.12.11/

2 Likes

2.12.11: The official announcement went out. No reports of regressions have come in.

2.13.2:

The new-Vector PR (https://github.com/scala/scala/pull/8534) and the configurable-warnings PR (https://github.com/scala/scala/pull/8373) have both landed. As of a few moments ago, https://raw.githubusercontent.com/scala/community-builds/2.13.x/nightly.properties points to 2.13.2-bin-b4428c8.

The replacement of Vector is a big change, so that’s one that we hope the community will give some additional testing (of both correctness and performance) before release.

5 Likes

The new Vector did not manage to break Scala.js :grin:

6 Likes

9 posts were split to a new topic: new-Vector performance on Scala.js

I’ve moved the detailed discussion about the performance of the new Vector on Scala.js to a separate topic, here: new-Vector performance on Scala.js

We have now merged the JLine 3 upgrade for the REPL. That was the last big PR for 2.13.2. (A few smaller ones remain.)

Kudos to @som-snytt for doing the initial work on this; a bunch of other folks were helpful in getting it across the finish line.

We invite the community to test the new REPL. See the PR description on https://github.com/scala/scala/pull/8036 for info on what has changed.

We would especially like to know about any regressions on Windows, since most of the development work was done on Linux or MacOS, and since JLine/terminal stuff is especially finicky on Windows.

Note that there are known regressions in tab completion that we hope to address before final release. See https://github.com/scala/scala-dev/issues?q=is%3Aissue+is%3Aopen+label%3At%3Ajline3 for known issues. (Some are marked “blocker”, others aren’t.)

The JLine upgrade isn’t the only REPL change that has landed recently: -Yrepl-class-based and -Yrepl-use-magic-imports are now enabled by default, that’s https://github.com/scala/scala/pull/8748 . Among other things, this fixes the notorious issue where the REPL was prone to deadlocks (with e.g. parallel collections, but not only).

How to test:

The version to test is 2.13.2-bin-bc1cad4.

using sbt

resolvers += "scala-integration" at
  "https://scala-ci.typesafe.com/artifactory/scala-integration/"
scalaVersion := "2.13.2-bin-bc1cad4"

using scala-runners

scala-runners is a new coursier-based Scala launcher:

scala --scala-version 2.13.2-bin-bc1cad4

using coursier

cs launch scala:2.13.2-bin-bc1cad4 \
  -r https://scala-ci.typesafe.com/artifactory/scala-integration
3 Likes

Tested the new REPL a bit on my mac an a Windows VM (in bare cmd, PowerShell and ConEmu cmd), and JLine loaded and worked well (modulo the known issues that Seth mentioned).

One new issue I found is that running console a second time within an sbt session breaks (https://github.com/scala/scala-dev/issues/702).

2.13.2 update:

Things are progressing and we are converging on a release. (Perhaps by the end of the week?) No major work remains, but some miscellaneous issues and PRs are still in flight.

2.13.2-bin-018d78b includes a number of REPL fixes (related to the move to JLine 3), some of which were merged just today. There is just one remaining known blocker at https://github.com/scala/scala-dev/labels/t%3Ajline3

8 Likes