Dear Contributors, Dear Community,
In this post, we would like to share our May monthly report and tell you what the Scala Center team (and the community) was recently working on.
Scala Native
- Added support for Windows / MSVC complaint code generation (2281)
- Added minimal needed implementation for running JUnit tests on Windows (2287 )
- Fixed Commix GC going into infinite loop on Windows (2294)
- Fixed Out-Of-Memory errors in GCs when not using maximal heap size limit on Windows (2293)
- Added support for Scala 2.13.6
- Started to work on multi-threading support and re-implementing java.util.concurrentAPI
Scala.js
- Various bug fixes
- Polish the reimplementation of java.util.regex.*
- Proper implementation of java.lang.ref.WeakReference and ReferenceQueue, as a separate library
- Added restriction in Scala 3 compiler that export clauses may not appear in JS native types and JS non-native traits.
- Removal of js.native and js.annotation.* annotations from exported definitions
Scala 3 migration guide
- Moved to docs.scala-lang.org
- Upgraded to Scala 3.0.0 and 2.13.6
Scaladex
- Added indexing of libraries compiled with Scala 3 final versions
- Removed indexing of libraries compiled wiht Scala 3 milestone versions
Scala3-migrate
- Added support to migrate Test and custom configurations for projects
- Added support for the final release of Scala 3
Scalafix
- Released 0.9.28 version with an initial support for Scala 3. release notes: Release v0.9.28 · scalacenter/scalafix · GitHub, https://github.com/scalacenter/sbt-scalafix/releases/tag/v0.9.28))
- Allow authors rule to write Scala 3 rules
- Basic support for build-in rules in Scala 3
Metals
- released v0.10.3 with support for Scala 3.0.0
- multiple fixes to Scala 3 support
Scalameta
- Fixed multiple issues with parser for Scala 3 - latest release is v4.4.20
- Added support for -Xsource:3 in semanticdb plugin
- Encode end marker positions for Scala 3 symbols in semanticDB
Scalafmt
- Fixes for formatting Scala 3 code
- Working on RC releases to gather feedback - latest release is v3.0.0-RC1
MOOCS
We have updated most of our online course to Scala 3:
- Functional Programming Principles in Scala
- Functional Program Design
- Parallel Programming (assignments only)
- Programming Reactive Systems (assignments only)
The Scala 2 version of the courses can still be found at the following URLs:
-
New tools setup guide and cheatsheet.
-
Port Capstone project and Big data courses to Scala 3 using Apache Spark 3.2-SNAPSHOT and new encoders library. We plan to upgrade the remaining courses of the Scala Specialization to Scala 3 as soon as there is a stable version of Spark that works well with Scala 3.
Effective Programming in Scala
- We have released our new course, Effective Programming in Scala. This course teaches Scala to non-Scala programmers, it is hands-on, and covers the essentials to be ready to work in Scala. It is also a way to learn Scala 3 for Scala 2 programmers.
- Published promotional video on Youtube
Google Summer of Code
- Allocated the 4 slots that Google provide us with to 4 proposals
- Onboarding students
Scala Documentation
We have created, reviewed, or merged several pull requests improving the website https://docs.scala-lang.org:
- #12083 #2012 Documentation of scaladoc for Scala 3
- #2047 Errors in documentation of Quotes
- #2005 Reflection API user guide
- #2013, #2009 #1971 #1932 Various improvements
sbt-version-policy
The plugin sbt-version-policy has reached a stable state, the latest release supports Scala 2 and Scala 3.
Scala 3 Compiler & Library
- Implement a new initialization checker
- Exhaustivity improvements
- Fix #12358: Avoid spurious unions in simplification by liufengyun · Pull Request #12367 · lampepfl/dotty · GitHub
- Fix #12408: Parameterized classes should be applied for prefix inference by liufengyun · Pull Request #12424 · lampepfl/dotty · GitHub
- Fix #12530: Wildcard of value types don't cover null by liufengyun · Pull Request #12533 · lampepfl/dotty · GitHub
- Better support type-heavy pattern matches by liufengyun · Pull Request #12549 · lampepfl/dotty · GitHub
- Missing unreachable match warning with only two cases · Issue #12559 · lampepfl/dotty · GitHub
- Metaprogramming
- summonInline https://github.com/lampepfl/dotty/pull/12398/files
- Reading comments in reflect https://github.com/lampepfl/dotty/pull/12372
- Others
- Bash bug https://github.com/lampepfl/dotty/pull/12370
- Pickling bug https://github.com/lampepfl/dotty/pull/12592
- Investigate root cause of performance regression in compiling stdlib
- Performance issues with match type reduction · Issue #12267 · lampepfl/dotty · GitHub
TASTy Reader For Scala 2
- Merged support for reading dependencies compiled by Scala 3.0.0 final - this included changes to the erasure of intersection types, arrays, and supporting invisible definitions.
Tasty manipulation library
- Extended the unpickler to support reading all term trees
Communication
Blog posts
ScalaCon
- Presented “Hands-on full-stack Scala 3 application”
- Presented “Fixing the 3 hardest library bugs of Scala.js”
- Presented “Taste the difference with Scala 3: Migrating the ecosystem and more”
Scala 3 Release Party
VirtusLab and Scala Center coordinated the “Scala 3 Release Party” in April, check out the followup and videos here.
Let’s talk about Scala 3
- Published video “Follow the recommended versioning scheme” with Julien Richard-Foy
- Published video “The road to Scala 3 using scala3-migrate” with Meriam Lachkar