
Scala 3, the planned next version of the object-oriented, functional language with JVM and JavaScript runtimes, has moved to a release candidate stage, with type parameter enhancements and syntax improvements.
The Scala 3 RC, introduced February 17, brings last-minute polishing and cleanups. The user experience was improved and the meta-programming framework enhanced. Scala has both JVM and JavaScript runtimes and is positioned for use in building high-performance systems with access to ecosystems of libraries.
Improvements in Scala 3 RC 1 include type parameters on extensions can be combined with type parameters on the methods themselves. In addition, changes to the import
syntax have been made, whereby the wildcard import _
is replaced by *
and the renaming operator =>
is replaced by as
.
The syntax of vararg splces has also been changed in patterns and function arguments. The new syntax uses a postfix *
instead of : _*
, analogous to how a vararg parameter is declared. Beginning with RC 1, Scala no longer generates a function parent for companions of case classes.
Prior to the release candidate, improvements featured in Scala 3 have included compiler optimisations and support for the Scala.js JavaScript implementation of Scala, including support for non-native JS types and better support for JS interoperability.
For pattern bindings, as
is allowed in place of @
. As of Scala 3.1, the @ syntax will be deprecated. In a syntactic change intended to simplify code, instead of developers using import
p.{given _}
, they will use import p.given
. Furthermore, the metaprogramming API has been made more uniform.