Scala Center November activity

Dear Contributors, Dear Community,

I am glad to share that during this very tough year, the Scala Center has been very busy getting many projects on the road. Our team is also coordinating the Scala 3 release with our incredible community, academy, and industry partners.

We want to thank you for your patience, understanding, and awesome support.

In this post we would like to share our November monthly report to celebrate all the hard work the team (and community) were actually working on throughout this year.

Comes January, we will re-establish the actual rhythm of monthly reports. Enjoy reading and discovering:

Monthly report - November 2020

Scala 3 Migration Guide

  • Added tutorial about porting an sbt project to Scala 3.

  • Updated the Scala versions to 3.0.0-M1 and 2.13.4.

Scala-migrat3

  • Implemented a Scalafix rule that infers the implicit conversions.

  • Implemented a Scalafix rule that infers the implicit parameters.

  • Developing the sbt plugin that help the migration of a Scala 2.13 sbt project to Scala 3.0.

Scalafix

  • Fixed a thread leak in Scalafix.

  • Released Scalafix 0.9.24.

Scalameta

  • Added support for parsing match types, given imports, inline if and infix keyword.

  • Fixed numerous bugs when parsing Scala 3.

  • Released Scalameta 4.4.0 (release notes)

Metals

  • Implemented the show implicit conversions and classes feature.

  • Added suport for Scala 3.0.0-M1, 3.0.0-M2 and 2.13.4.

  • Released Metals 0.9.5, 0.9.6 and 0.9.7

sbt

  • Publsihed a scala-lang blog post about BSP Support in sbt 1.4

  • Fixed BSP connection issue.

  • Reworking the Scala Instance class loader for better support wiht Scala 3.

  • Implementing the new Zinc interface in the Scala 3 compiler bridge.

  • Preparing the merging of sbt-dotty in sbt (sbt/sbt#6080).

Scaladex

  • Added Version Matrix button in project pages.

  • Implemented client-side filtering in the version matrix.

  • Implemented support for Scala 3.0.0-x artifacts.

Scala 3 Compiler

  • Implemented function specialization in Scala 3 (lampepfl/dotty#10452).

  • Fixed all the issues related to the encoding of traits, to be shipped in 3.0.0-M3.

  • Performed a comprehensive review of the Scala 3 additions to the standard library (in collaboration with LAMP).

  • Implemented the final changes to Scala 3 structural types, requested by the SIP committee.

  • Removed the deprecated scala.Enum type alias.

  • Implemented recursive deconstrucion of enums with inline match (lampepfl/dotty#10390)

  • Opened PR to preserve export clauses in TASTy, used to capture wildcard export dependencies on classes, restricting wildcard export from packages (lampepfl/dotty#10182).

  • Fixed a bug in classfile parser which crashes the compiler under Java 14 (lampepfl/dotty#10135).

  • Prototyped a tool for checking object initialization in Scala 3.

  • Maintaining the Benchmarks and Windows CI.

Ammonite

  • Started to work on decoupling the Scala version used by Ammonite from the one exposed to user, in order to facilitate adding Scala 3 support later on (lihaoyi/Ammonite#1135)

Scala 3 Documentation Website

The documentation currently consists of multiple websites. To present a unified documentation,

we collect all relevant documentation on https://docs.scala.lang.org.

agreed upon and implemented (not released, yet).

Progress visible in this Pull request.

Scala.js

  • Finished the support of Scala.js in Scala 3. Full support is shipped in 3.0.0-M2.

  • Updated sbt-scalajs to include better out-of-the-box support for Scala 3.

  • Fixed a long-standing performance issue of Scala.js applications in Firefox.

  • Released Scala.js 1.3.1 with the above changes.

  • Published scala-lang blog post: Implementing Scala.js support for Scala 3

Scala Native

November was a very fruitful month for Scala Native development. Beside introducing support for 2.13, multiple issues have been fixed and the build has been optimized in terms of memory usage.

  • Added support for Scala 2.13, followed by fix enabling support in 2.13.4

  • Lowered memory usage when generating LLVM and intermediate code.

  • Fixed crashing build when release-full mode and linking multiple executables in parallel.

  • Fixed not generated Monitor operations when method has synchronized flag.

  • Fixed handling of erased value classes when generating lambdas. Information about boxing class is now correcly preserved.

  • Fixed not reachable definitions of defaults method. It unblocked implementing Java default methods in Scala 2.11.

  • Implemented static resolution of constructors, instead of being treated as virtual methods.

  • Fixed extending a class containing a main method. It now correctly adds it into the scope.

  • Implemented array operations throwing JVM-compliant ArrayOutOfIndexException for array operations.

  • Implemented Array[Unit] as instance of Array[AnyRef].

  • Prepared blog post about Scala Native.

TASTy Reader for Scala 2

Scala 2.13.4 was released on November 19th, bringing TASTy Reader into a public release for the first time.

TASTy Manipulation Library

We are working on a TASTy library that is independent from the TASTy reader and the Scala 3 compiler.

  • Extracted a lean hierarchy of trees and terms which are to be populated by the reader.

  • Created a hierarchy of names.

  • Read the name table, using the new names.

Effective Programming in Scala (MOOC)

The goal of this course is to turn programmers new to Scala into Scala programmers, ready to join a Scala project. The duration of the course is 7 weeks.

  • Submitted last assignment for review.

  • Running a private beta testing session.

  • Planning to record the lectures in December and January and to publish it online when Scala 3.0.0 is released.

Other MOOCs

  • Ported project to latest sbt version.

  • Ported all Dotty MOOCs to Scala 3.0.0-M2.

  • Migrating all MOOCs to the new Coursera SDK (will be mandatory in mid-January).

  • Published Reactive Programming course to Coursera.

Video Production

  • Preparing videos about Scala 3 with the support of 47 Degrees.
14 Likes