The mission of the Scala Center is to steward open-source development and education in the Scala ecosystem. The Scala Center creates high-quality free educational material, it creates open-source tools increasing the productivity of Scala developers, and it guides and supports the Scala community.
Dear community,
In this post, we would like to share what the Scala Center team has achieved in October.
Compiler
TASTy Reader
The TASTy reader allows Scala 2.13 programs to use libraries compiled with Scala 3. The release of Scala 3.1.0 introduced a new version of the TASTy format, which is not supported by Scala 2.13.6.
We have updated the implementation of the TASTy reader in the Scala 2.13 compiler to support Scala 3.1.0 (scala/scala#9791). This has been released in Scala 2.13.7.
Scala 3 Support in Scala Native
We implemented initial support for the generation of NIR files (ie, Scala Native binaries) as a Scala 3 compiler plugin, and for test frameworks (JUnit and reflective instantiation).
Energy Efficiency of Scala
This project assesses the energy efficiency of Scala programs, based on the article “Ranking programming languages by energy efficiency”.
We have collected all the benchmarks that are necessary to run the experiment, and we wrote an alternative version of each benchmark in a more Scala-idiomatic style.
Metals related improvements
- Annotations are now added to the generated semanticdb files
- Better support for annotations in completions and hovers (downstream used by Metals)
Ecosystem
Scaladex
Scaladex is an index for Scala libraries. The project suffers from usability and reliability issues.
We made the underlying infrastructure more reliable by overhauling the persistent storage system. We improved the performances (scalacenter/scaladex#729, scalacenter/scaladex#723), and the “Scaladex badge” (scalacenter/scaladex#722).
Coursier
Coursier can be used as an installer for Scala. However, it was reported by the Advisory Board that it suffers from several issues that make it unsuitable for beginners.
We fixed the support of Scala 3 artifacts resolution (coursier#2194). We implemented the support for installing an application from a zip file (coursier#2193) so that coursier can install the official sbt script and launcher. We proposed a technical solution to merge Scala 2 with Scala 3 related applications (coursier#2231).
sbt
We added support for sources in the base directory in sbt BSP implementation (coursier#6701).
Scala Debug Adapter
After the release of expression evaluation in Scala 2.12 and Scala 2.13, we fixed a number of bugs in the debug adapter itself and its integration with Bloop and Metals. Also we added support for Java 17 (scalacenter/scala-debug-adapter#115).
Metals
We rewrote the sbt-metals plugin so that it fully relies on the official SemanticdbPlugin from sbt (scalameta/metals#3200).
New Metals releases https://scalameta.org/metals/blog/2021/10/26/tungsten and https://scalameta.org/metals/blog/2021/11/03/tungsten which bring in:
- Expression evaluation for Scala 2
- Type on selection
- Text search in dependencies
- New Scala 3.1.0 and 2.13.7 support
- Source file analyzer
- Numerous Scala 3 improvements
Bloop
Two new releases https://github.com/scalacenter/bloop/releases/tag/v1.4.10 and https://github.com/scalacenter/bloop/releases/tag/v1.4.11 :
- Improvements for Maven support
- Fix for Scala 2.13.7
- Console completions fix
- Gradle support improvements
- Generate semanticdb for Java files as an option
Education
Scala Documentation Website
We identified several areas of improvement in the Scala documentation website, which we summarized here.
We unified the two “Getting Started” pages for Scala 2 and Scala 3 into a single page that supports both versions of Scala (scala/docs.scala-lang#2197). We added a search bar on every page (scala/docs.scala-lang#2201). We clarified the structure of the navigation menus (scala/docs.scala-lang#2206).
MOOCs
We added new lessons to clarify the syntax of literal functions, and to introduce exceptions, in Effective Programming in Scala. We also polished the feedback returned by the automated graders to make it more helpful and actionable.
Scala at Universities
As part of our education mission, we want to promote the usage of Scala as a vehicle to teach programming and software engineering. We are currently running a study to identify the factors that lead professors to use Scala.
We interviewed 8 university professors. We will publish a summary of our main findings next month.
External Communication
Scala Italy
Scala Italy happened online on the 23th of October.
We gave a talk demonstrating how to write a full-stack application in Scala 3.
Scalabase
Scalabase is a conference for developers in the early stages of their Scala journey. It happened online on the 28th of October.
We run an “install party” to assist new users in installing the required tools to program in Scala, and then we run a workshop guiding the attendees in the implementation of a Snake Game. You can find the material here.
ScalaCon
ScalaCon is a series of virtual conferences designed to bring the Scala community closer together.
We have prepared several talks that we will give during the conference: “Boost your productivity with Scala tooling!”, and “Metals—Your IDE for Scala 3”.
Let’s Talk About Scala 3 Video Series
Series of short videos about Scala 3, covering a variety of themes like how to get started, how to take advantage of the new language features, or how to migrate from Scala 2.
We wrote the script of a new video about Program Entry Points in Scala 3.
We presented the LinkedIn strategy to the Scala Center team and enrolled four people to be part of the editorial tech team. We agreed on a posting schedule and decided on the content for Q4 2021 with the editorial tech team.