Dotty 0.13.0-RC1
Today’s news is the latest Dotty release candidate. Broadly speaking, the -RC1 releases are the interesting state transitions, since they are when the public documentation gets updated in big ways.
A few highlights worth looking at:
- A lot of the syntax is continuing to evolve, in a fairly determined attempt to move away from the catch-all word “implicit”. You’ll notice in the public docs that there is now a big section titled “Contextual Abstractions” (no, I can’t link to it, one of several major bugs in the Dotty Docs), most of which is stuff relating to “implicits”. If you haven’t been following this, it’s worth reading into, because it is changing a lot from Scala 2; I’ll likely talk more about this in future articles. This page discusses how the new terminology relates to Scala 2.
- A particular new concept is
import implied
, to import implied instances. This is important because ordinary imports do not import those implieds any more. (The point, I gather, is to reduce the common surprise of code mysteriously ceasing to work because you added an import, that pulled in an implicit.) Documentation can be found here. - Multiversal equality — the new, better version of equality that will be available in Dotty — is now typeclass-based and derived. This is settling down to a good balance: equality is becoming less magical and more controllable, but still pretty concise in most cases.
- And a few things I’ve mentioned before, notably top-level definitions and typeclass derivation, are now in the Dotty release.
As always, keep in mind that, just because it’s in Dotty master doesn’t mean that it’s going to remain unchanged, or that it will make it into Scala 3 — there is a lot more process to go through. (And that I am just a fly on the wall, not part of the Dotty team, so nothing I say should be considered authoritative.) I recommend the current Dotty Docs for those who are interested in the current state of play…