|
| 1 | +--- |
| 2 | +layout: blog-page |
| 3 | +title: From Dotty to Scala 3 |
| 4 | +author: Martin Odersky |
| 5 | +authorImg: /images/martin.jpg |
| 6 | +date: 2018-04-11 |
| 7 | +--- |
| 8 | + |
| 9 | +Now that Scala 2.13 is around the corner, it's time to consider the |
| 10 | +roadmap beyond it. It's been no secret that the work on Dotty that my |
| 11 | +group at EPFL over the last 5 1/2 years was intended to explore what a |
| 12 | +new Scala could look like. We are thankful for the help we got doing this |
| 13 | +from Lightbend, Scala Center, and outside contributors. We are now at |
| 14 | +a stage where we can commit: Dotty will become Scala 3.0. Here are |
| 15 | +some answers to further questions you might have: |
| 16 | + |
| 17 | +_When will it come out?_ |
| 18 | + |
| 19 | + Probably shortly after Scala 2.14. At the current release schedule, that means towards the end of 2019, or possibly early 2020. |
| 20 | + |
| 21 | +_What is Scala 2.14 for?_ |
| 22 | + |
| 23 | + Scala 2.14's main focus will be on smoothing the migration to Scala 3. It will do this by defining migration tools, shim libraries, and targeted deprecations, among others. |
| 24 | + |
| 25 | +_What's new in Scala 3?_ |
| 26 | + |
| 27 | + The currently implemented language changes are listed in the [Reference section on the Dotty website](http://dotty.epfl.ch/docs/). |
| 28 | + |
| 29 | +_What further changes are expected?_ |
| 30 | + |
| 31 | + You can follow the current status on the issue tracker and pull requests of the [dotty](https://github.com/lampepfl/dotty) project on GitHub. Around the corner are opaque types ([SIP 35](https://docs.scala-lang.org/sips/opaque-types.html)), which are ready to be [merged](https://github.com/lampepfl/dotty/pull/4028). We are working on replacing implicit classes with a more natural and intuitive [extension mechanism](https://github.com/lampepfl/dotty/pull/4114). We also expect some important additions in the areas of meta programming, generic programming, and, possibly, effect typing. |
| 32 | + |
| 33 | +_What's the next big step_? |
| 34 | + |
| 35 | + For the moment, we are still held back by the requirement to cross-compile. To build the `dotc` compiler, we first run it through `scalac` and then let it compile itself. Hence, we cannot use yet any Scala 3 constructs in the `dotc` codebase itself. This situation will change once we bootstrap from a stable Dotty version. Besides letting us "eat our own dog food" this will also make it easier to merge some additions such as support for generic tuples ("HLists"). |
| 36 | + |
| 37 | +_When can I try it out_? |
| 38 | + |
| 39 | + You can start working with Dotty now. See the [getting started guide](http://dotty.epfl.ch/#getting-started). Dotty releases are published every 6 weeks. We expect to have developer previews for Scala 3.0 in the first half of 2019. |
| 40 | + |
| 41 | +_What about macros_? |
| 42 | + |
| 43 | + Stay tuned! We are about to release another blog post specifically about that issue. |
| 44 | + |
| 45 | +_How can I help_? |
| 46 | + |
| 47 | + Scala 3 is developed completely in the open at [https://github.com/lampepfl/dotty]. Get involved there by fixing and opening issues, making pull requests, and participating in the discussions. |
| 48 | + |
0 commit comments