Scala Center monthly update - April 2021

Dear Contributors, Dear Community,
In this post, we would like to share our April monthly report and tell you what the Scala Center team (and the community) was recently working on.

Google Summer of Code

We received a total of 10 proposals from candidate students. All the proposals were reviewed and discussed with mentors, who also chose the projects that they will mentor. We declared to Google the minimum and a maximum number of slots that we would like to receive. We are not allowed to publicly disclose information about our decisions concerning students at this stage.

Let’s talk about Scala 3

We worked with Meriam and Anatolii to produce two videos. The content for both was reviewed and two recording sessions completed. All the material except Anatolii’s slides has been sent to 47 Degrees for editing. Eric Loots produced more videos for the series in coordination with us and 47 Degrees.

Migration documentation

The time invested in learning the macro and reflection API paid off, and we were able to make some progress on the migration of the scio project by finding a solution to the most critical blocker.
The design was discussed and extended, and a PR was opened to the main repository for discussion. The macro guide is being enriched with useful patterns and to create a draft of the reflection API guide.


  • New Metals release v0.10.2 with support for Scala 3.0.0-RC3 and numerous fixes

Scala 3 Compiler

Exhaustivity check improvements:

  • Support TypeTest[S,T] #12059
  • Make exhaustivity check faster #12271

Compiler benchmarks maintenance:

  • Make it easier to add benchmark tests #12251
  • Migration to the new benchmark machine

Initialization checker

  • Implement initialization checker for global objects #12122
  • Support early promotion of objects in initialization checker #11533

Other bug fixes

  • Fix non-determinism related to concurrency in compiler #11960
  • Fixed bug related to overloading, untupling and eta-expansion #12171
  • Set up infrastructure for testing scalac/scala script on Windows #11957

Scala 3 Migration Guide

  • Reorganized the migration guide to give it its final shape
  • Moving the migration guide to (see #1991)
  • Video recorded: Migrating from Scala 2 to Scala 3

Scala 3 Migrate Plugin


  • Overall maintenance: upgrade the Closure Compiler, Scala versions, and JUnit
  • Reimplement java.util.regex.* APIs to have the same semantics as on the JVM

Scala Native

  • Fixed Immix and None GCs implementations to work on Windows #2264
  • Added support for compiling Scala Native on Windows #2281
  • Based on link-time conditions reimplemented a large part of the existing Java standard library using Windows low-level API alongside existing POSIX-based implementation.


  • First step to be able to run Scalafix on Scala 3 #1373


  • Scalafmt release 3.0.0-RC1 and 3.0.0-RC2 with support for Scala 3 and new rewrite rules to help migration


  • Scalameta releases with fixes for parsing Scala 3 code based on issues reported from testing release candidate versions of Scalafmt


  • Updated the sbt version that Scastie uses both for its build and to build snippets to 1.5.0 after some issues were raised in the gitter channel about sbt-dotty.


  • We have polished and merged a few pull requests before the release of the version 1.0.0 of sbt-version-policy.


  • Fixed Scala 3 binary versioning


  • The infrastructure for reporting grading results to students was tweaked and improved.
  • All Scala 3 courses were upgraded to Scala 3.0.0-RC3 and sbt 1.5.0 was adopted.
  • All the handouts and graders for the Scala 2 legacy courses (each course will have a Scala 2 and a Scala 3 version) were uploaded.

Functional Programming in Scala

  • Reviewed videos to identify required syntax change updates

Effective Programming in Scala

  • We have added the last quizzes to the course, and we have prepared everything to launch the course as soon as Scala 3.0.0 is published.

Scala Specialization

  • We have been preparing everything to have both the Scala 2 version, and the Scala 3 version of the Scala specialization online as soon as possible after Scala 3.0.0 is published.

TASTy Manipulation Library

  • Extended the unpickler to read more trees
  • Created a set of code snippets with various language constructs, guiding further development of the unpickler

TASTy Reader For Scala 2

  • Ongoing progress in supporting Scala 3.0.0-RC2, which has brought changes to erasure of intersection types and arrays.