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
and2.13.4
.
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.
-
New Scala 3 Book: First content draft complete 90%
-
Website (https://docs.scala-lang.org) change to incorporate Scala 3 documentation
agreed upon and implemented (not released, yet).
- Macro tutorial content migrated to https://docs.scala-lang.org.
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 hassynchronized
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 ofArray[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.
-
Published scala-lang blog post explaining the benefits of the TASTY Reader: Forward Compatibility for the Scala 3 Transition
-
PR opened to add support for Scala
3.0.0-M2
(scala/scala#9357).
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.