Countdown to Scala 3 – Dotty confirmed for Scala 3.0
Scala 2.13 may be a few months away, but the future is looking bright for 2.14 and beyond. We check in to see the state of Scala and where this popular JVM language is heading. It’s still not set in stone, but keep early 2020 free for Scala 3!
Scala may be one of our most popular JVM languages and we’re excited to see what’s in store for this concise, general-purpose programming language. According to a recent roadmap, the next update for Scala is 2.13, a library release. That means the language itself won’t see much change. However, the big goal in this release is to make the compiler faster. The Scala team is going to manage this by investing heavily in the implementation, including benchmarking infrastructure.
This chase for speed also includes improvements for many lower-level performance issues, including CPU caches, memory access patterns, and JIT profiles. Help is wanted, so if you feel like pitching a few ideas to make the compiler performance even better, then head on over to the new compiler-benchmark repo or the GitHub discussion page to make your opinions head.
This is due at the end of Q1 2018, which means it should drop any day now!
Of course, we also have to look off into the future to see what the long-term details are going to be like for Scala. Recently, Martin Odersky confirmed that after the past five years of work, Dotty will become Scala 3.0. Don’t hold your breath just yet – Scala 3.0 is behind 2.14, giving it a release date in early 2020 according to the current schedule.
Scala 2.14 will be all about smoothing the migration path to Scala 3. This release will do so by defining migration tools, shim libraries, and targeted depreciations.
However, the big news is definitely all about Scala 3. Here’s what Martin Odersky had to say about it when we talked to him a while back:
Scala has been quite stable over the last five years. We hope that by the time Scala 3.0 comes out we will have the necessary technologies in place to make some bigger changes without too much disruption. For one, we are working on sophisticated rewrite tools that allow code to evolve to new standards. We are also planning to use TASTY, a platform independent interchange format, to avoid binary compatibility problems through automatic code adaption to specific platforms and versions.
Scala 3 is intended to be a big step forward in fusing object-oriented and functional programming in a typed setting. Here are some of the big ideas in Scala 3:
- become more opinionated by promoting programming idioms found to work well
- simplify where possible
- eliminate inconsistencies and surprising behavior
- build on strong foundations to ensure the design hangs well together
- consolidate language constructs to improve the language’s consistency, safety, ergonomics, and performance
For the past five years, Dotty has been the research platform for new language concepts and compiler technologies for Scala. Now, it is set to become Scala 3. All of the main language changes – implemented, theoretical, or otherwise – can be found on the Dotty GitHub page.
Before anyone gets too worked up about it, this is going to be a fairly painless shift. Scala 2 and Scala 3 are fundamentally the same language. Sure, the compiler is new, but everything else is Scala 2 code with some fancy upgrades. Most ordinary Scala 2 code should also work on Scala 3, with only minor changes.
Try Dotty out now
Scala 3 may be a few years away, but as we all know, Dotty is Scala 3. And Dotty is available to work with right now. See the getting started guide for tips. And as always, as an open-source language, Scala is made with help from developers like you. Get involved by fixing and opening issues, making pull requests, and participating in discussions about the future of Scala.