Community build progress report (August 2019)

#1

Here’s what’s happened with the Scala community build in the last 6 months or so.

(For older news, see https://www.scala-lang.org/2019/01/18/community-build.html. If you’re not sure what the community build even is, see https://www.scala-lang.org/2018/01/16/community-build-growth.html.)

I’ve recently closed out a round of work on the community build, with a focus on JDK 11+ and on being ready for these upcoming releases: sbt 1.3 (now at RC3), Scala 2.12.9 (now imminent), Scala 2.13.1 (expected to follow a few weeks afterwards).

Number of green projects in the various versions of the build are currently as follows:

  • 2.11.x: 180 (JDK 8), 167 (JDK 11)
  • 2.12.x: 196 (JDK 8), 179 (JDK 11), 175 (JDK 12)
  • 2.13.x: 146 (JDK 8), 131 (JDK 11), 125 (JDK 12)

new projects: added finagle, claimant, mockito, prog-scala-examples, expression-evaluator, quicklens, kits, scala-pet-store

We aren’t adding many new projects anymore, as the build is now big enough, overall, to accomplish its main goal, that is, to guard against regressions in the Scala compiler and standard library. Nonetheless, more additions are welcome, especially if we expect they will improve coverage in specific areas.

Scala 2.13: As more and more of the Scala ecosystem supports 2.13, the 2.13 community build has grown as well. It’s now up to 146 green projects, which is about 3/4 of the 2.12 build.

JDK 11 and 12: one of the focuses of the 2.12.9 release is support for JDK 11, 12, and 13. We already had JDK 11 builds on 2.12.x and 2.13.x, but they were smaller and less actively maintained than the JDK 8 versions. We recently added JDK 12 builds on both 2.12.x and 2.13.x and we’ve stepped up maintenance. On JDK 11 and 12, about 75% of the builds are now green.

sbt 1.3: As each sbt 1.3 release candidate is released, Eugene Yokota and I have been upgrading the community build to use on as many repos as we can. This has already uncovered some sbt regressions that will be addressed for 1.3 final.

Scala 2.11: We have revived the Scala 2.11 community build, which had become moribund. For a long time, it was much smaller than the 2.12 build (for historical reasons), and it ran only on JDK 6 and 8. In the reboot, we dropped JDK 6, added JDK 11, discarded the old projects list, and backported the 2.12 projects list and config instead. The reboot runs at https://scala-ci.typesafe.com/view/scala-2.11.x/job/scala-2.11.x-integrate-community-build/ and includes 90% of the 2.12 build. The main goal of this effort is to shake out any compatibility issues on JDK 11.

What’s next?

  • We plan to add Jenkins jobs to run the build on JDK 13 and on Graal.
  • We may need a strategy for supporting more build tools. Currently the community build is sbt-only. Recently some included projects have switched to Mill. For now, we were able to keep the projects in by forking them and adding minimal sbt builds. That’s fine for now, but more change may lie ahead.
  • It’s time to start thinking more about Scala 3. I’m looking forward to discussing plans for this with the Dotty team and engineers from the Scala Center.
7 Likes
#2

Maybe a shared community build between Scala 2.14 and Scala 3?

#3

Just wanted to take the time to express my thanks for this extraordinary work.

To have cross check and regression test across 4 Language versions, and up to 5 different Runtime targets is a massive undertaking, and an example to the wider JVM community.

Particularly since i mostly rely on Scala 2.11 still due to Spark, it’s really encouraging to see that even though the Language is relentlessly moving forward, it still takes care of supporting versions that are now 5 years old.

Fantastic work !

1 Like