Dmitry Petrashko
Today, we are excited to release Dotty version 0.1.2-RC1. This release serves as a technology preview that demonstrates new language features and the compiler supporting them.
Why is this important?
Dotty is the project name for a language and compiler that is slated to become Scala 3.0. This is an ongoing development, transparently developed as open source software. The Dotty project started more than 4 years ago. It reached a major milestone in 2015 by achieving bootstrap, that is, showing that the new compiler could compile itself. Today we have reached another milestone with this first release of the codebase. Developments will not stop here, but they will in the future all be part of regular time-based releases.
How can you try it out?
You have several alternatives: use the sbt-dotty
plugin, get a standalone
installation, or try it online on Scastie.
sbt
Using sbt 0.13.13 or newer, do:
sbt new lampepfl/dotty.g8
This will setup a new sbt project with Dotty as compiler. For more details on using Dotty with sbt, see the example project.
Standalone installation
Releases are available for download on the Releases section of the Dotty repository: https://github.com/scala/scala3/releases.
We also provide a homebrew package that can be installed by running
brew install lampepfl/brew/dotty
Scastie
Scastie, the online Scala playground, supports Dotty. You can try it out there without installing anything.
What’s in the 0.1.2-RC1 technology preview?
This technology preview demonstrates new language features planned for Scala 3:
We also ship with tools that help you try out the Dotty platform:
- IDE features for Visual Studio Code
- sbt support, including retro-compatibility with Scala 2
See here for the full release notes.
Release schedule
Starting from this release, we are adopting a time-based release schedule:
- Nightly builds will be published, for those wanting to be at the forefront of development.
- Every 6 weeks, a release candidate will be cut based on the latest nightly build.
- Every 6 weeks, the latest release candidate becomes a release.
At the end of 6 weeks, the milestone will be promoted to a stable release.
What are the next steps?
Over the coming weeks and months, we plan to work on the following topics:
- Integrate Local optimizations developed in Dotty linker;
- Add Language-level support for HMaps and HLists;
- Port global optimizations from Dotty linker.
If you want to get your hands dirty with any of this, now is a good moment to get involved! Join the team of contributors, including Martin Odersky (@odersky) Dmitry Petrashko (@DarkDimius), Guillaume Martres (@smarter), Felix Mulder (@felixmulder), Nicolas Stucki (@nicolasstucki), Liu Fengyun (@liufengyun), Olivier Blanvillain (@OlivierBlanvillain), and others!
Library authors: Join our community build
Dotty now has a set of libraries that are built against every nightly snapshot. Currently this includes scalatest, squants and algebra. Join our community build to make sure that our regression suite includes your library.
To get started, see https://github.com/scala/scala3.