Announcing Dotty 0.19.0-RC1

Hello! We are happy to announce the next, 19th, release of Dotty. This release brings more polishings of the syntax as well as the migration to 2.13.1 standard library. You can learn more from the blog article: http://dotty.epfl.ch/blog/2019/09/23/19th-dotty-milestone-release.html

Notable Changes

Syntax

  • Make indentation significant in old-style control syntax #7235
  • Don’t require colon after class or object signatures #7185
  • Replace the[…] by summon[…] #7205
  • Allow given bindings in patterns #7194
  • Replace delegate match with summonFrom. #7201
  • Switch to ? for wildcard types #7144
  • Require (…) around parameters of a lambda #7156
  • Drop old syntax styles for givens #7245

Macros

  • Upgrade to scala-library 2.13.1 #7263
  • Detect macro dependencies within the current run #7192
  • Add dotty-staging.g8 in the staging documentation #7165
  • Intrinsify scala.compiletime.testing.typeChecks #7129

Contributors

Thank you to all the contributors who made this release possible :tada:

According to git shortlog -sn --no-merges 0.18.1-RC1..0.19.0-RC1 these are:

    87  Martin Odersky
    50  Nicolas Stucki
    42  Guillaume R
    33  Nikita Eshkeev
    20  Guillaume Martres
     9  Liu Fengyun
     8  Anatolii
     5  Robert Stoll
     3  Miles Sabin
     1  Sam Desborough
     1  Anatolii Kmetiuk
     1  Jon Pretty
     1  Oron Port
     1  Aggelos Biboudis

Reporting Bugs

If you encounter a bug, please open an issue! :pray:

5 Likes

I would question whether summon is really a good wording for implicitly. Sure, the was DSL’ish, and the new form is certainly an improvement. Still it has the connotation of magic, which I’m not sure resonates well with the “mathy” given. Thinking of the dualism implicit / implicitly, perhaps given / give is a good pair? But I see there are cases when you pass on an implicit that would then read foo(given give[Context]) which looks awkward.

Some ideas: explicit, witness, view, show, prove/proven, present, evince, locate, identify, provided, known

summon[Codec[Option[Int]]].write(Some(33)

witness[Codec[Option[Int]]].write(Some(33)

present[Codec[Option[Int]]].write(Some(33)

evince[Codec[Option[Int]]].write(Some(33)

provided[Codec[Option[Int]]].write(Some(33)

summon is certainly the most commonly used word for getting an implicit in verbal communication, in my experience. So, personally I’m glad that it’s “canonicalized” now

After Ohio State (the US university) lost its bid to trademark “the”, I thought the door was open for “the”, especially on Scala t-shirts and other active wear. That would’ve been so cool, and is a huge missed opportunity on the merchandising end.

Also, the meme would have been what you put between the brackets, the[...].

I guess, “Better the DSL you know than the DSL you don’t.”

That could also be a t-shirt.

Thanks again to Dr Odersky for showing those youthful people how it’s done. Is there no contest for who tops the shortlog list? I mean as a sporting proposition.

Other t-shirt possibles:

Stucki n Geneva
I’m so Pretty

I’ve wondered why is it “smarter” and not “smartre” like “theatre”?

I’ll leave that to the philosophers and t-shirt designers.

That one was by far theatest.

Still possible to meme summon, particularly if the error messages improve:

package gotham

object BatSignal {
    def shine = summon[Batman]
}
error: ambiguous implicit values:
 both value clarkKent of type Superman
 and value johnHenry of type Superman
 and value eradicator of type Superman
 and value connorKent of type Superman
 and value hankHenshaw of type Superman
 match expected type Superman
       def saveMetropolis = summon[Superman]