image

Dotty

A next generation compiler for Scala

expand_more

Try Dotty

Try it in your browser with Scastie.

Create a Dotty Project

The fastest way to create a new project in Dotty is using sbt (0.13.15+).

Create a Dotty project:

sbt new lampepfl/dotty.g8

Or a Dotty project that cross compiles with Scala 2:

sbt new lampepfl/dotty-cross.g8

For documentation see the Dotty Example Project.

So, features?

Union, intersection and literal singleton types Implemented
Fast compilation (phase fusion) Implemented
Trait parameters Implemented
@@static methods and fields Implemented
Improved REPL with colors Implemented
Sbt incremental build Implemented
Non-blocking lazy vals Implemented
Option-less pattern matching (based on name-based patmat) Implemented
Function arity adaptation Implemented
Multiversal equality Implemented
Exhaustivity checks in pattern matching Implemented
Non-boxed arrays of value classes In progress
Working contravariant implicits In progress
Auto-Specialization In progress
Whole program optimizer In progress
HList & HMaps/Record types In progress
Phantom types In progress
Implicit functions Considered
Effects Considered
Auto-completion in repl Considered
Spec Option-less pattern matching Considered

Talks on Dotty?

I have more questions!

That’s great! We have more details on the docs and please join our Gitter channel!

Why Dotty?

Dotty is a platform to try out new language concepts and compiler technologies for Scala. The focus is mainly on simplification. We remove extraneous syntax (e.g. no XML literals), and try to boil down Scala’s types into a smaller set of more fundamental constructors. The theory behind these constructors is researched in DOT, a calculus for dependent object types.

Is it the future Scala?

Yes, it will be - eventually.

Can I use it?

You can! But it currently comes with no guarantees of stability.

Is there Scala 2 interop?

Dotty currently interops with libraries compiled with Scala 2.11 - but not 2.12

How do I migrate my code to Dotty?

An automated rewriting tool is planned for Dotty, more on this to come. Scala 2 sources can be compiled to some degree by issuing:

./bin/dotc -language:Scala2 file.scala

when compiling your program.

Who’s working on it?

Martin Odersky
Dmitry Petrashko
Guillaume Martres
Liu Fengyun
Felix Mulder
Nicolas Stucki
Olivier Blanvillain
Aggelos Biboudis

And a long line of contributors!