Dotty is the project name for technologies that are considered for inclusion in Scala 3. Scala has pioneered the fusion of object-oriented and functional programming in a typed setting. Scala 3 will be a big step towards realizing the full potential of these ideas.
Its main objectives are to:
Dotty implements many language changes compared to Scala 2. These changes are currently discussed for inclusion in Scala 3, the new Scala language standard which will be based on the Dotty codebase.
The language redesign was guided by three main goals:
New constructs directly model core features of DOT, higher-kinded types, and the SI calculus for implicit resolution.
Another set of new constructs replace existing constructs with the aim of making the language safer and simpler to use, and to promote uniformity in code style. With the exception of early initializers and old-style vararg patterns, all superseded constructs continue to be available in Scala 3.0. The plan is to deprecate and phase them out later.
Several constructs are restricted to make the language safer. Unrestricted implicit conversions continue to be available in Scala 3.0, but will be deprecated and removed later. Unrestricted versions of the other constructs in the list above are available only under -source 3.0-migration.
Many constructs are proposed to be dropped without a new construct replacing them. The motivation for dropping these constructs is to simplify the language and its implementation.
Some other constructs have undergone changes to make them more regular and useful. There are also additions to the language that make it more powerful or pleasant to use.
For more details, visit https://dotty.epfl.ch/