Dotty & Scala: Status report

Dmitry Petrashko


About me:

  • https://github.com/darkdimius/
  • doing PhD at EPFL
  • previously worked on ScalaBlitz (up to 24x faster collections)
  • since March 2014 building on Dotty under supervision of Martin.
  • since March 2015 working on Dotty Linker and supervising students working on Dotty.

Dotty contributor stats:

git ls-tree -r -z --name-only HEAD -- | egrep -z -Z -E '\.(scala)$'\
| xargs -0 -n1 git blame --line-porcelain | grep "^author "| sort | uniq -c | sort -nr
authorcommitsadditionsdeletionsblame lines
Martin Odersky2,280
146,133
85,391
66,698
Dmitry Petrashko628
158,249
50,201
83,713
Samuel Gruetter19
62,324
12,510
36,615
Ondrej Lhotak29
2,009
340
1,874
Guillaume Martres77
2,197
1,190
1,171
Vera Salvisberg17
1,109
364
819
Jason Zaugg16
213
149
153
Alexander Myltsev5
275
65
144
Vlad Ureche13
255
77
51

Past of Scala

How old are those languages?

  • Java: 1990;
  • Python: 1991;
  • Ruby: 1995;
  • Pizza: 2001;
  • Lisp: 1958;
  • Scheme: 1975;
  • Haskell: 1990;
  • Scala: 2004;

History of Scala

Funnel, Pizza
Generic Java
Scala 1.0, Scala 2.0-2.7, Scala 2.8

Scala Today

I can honestly say if someone had shown me the Programming Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy.

James Strachan (Creator of Groovy language)

Red Monk language rankings

StackOverflow survey: salaries

StackOverflow survey: enjoyment

Scalac today

Stability, stability and more stability.
Long lifetime of releases.

Future of Scala.

DOT today

  • Developed by Amin, Grutter, Stucki, Rompf and Odersky
  • A minimal, core calculus for scala.
  • Proven sound.
  • Has structural subtyping but can encode Nominal subtyping.
  • Long term foundation for Dotty.

Dotty today

  • a third compiler for Scala language.
  • simpler design, more fundamental approach.
  • more predictable behavior and easier to evolve.
  • foundation for future Scala.

Dotty ecosystem:

  • Libraries: Modularization
  • TASTY: Solving binary compatibility.
  • Link time optimization: -lto
  • Meta: basis for tooling and metaprograming
  • Backends: JVM, JS.
  • Simpler collections?

Unrelated picture. Please ignore

Dotty status:

Who's behind all this?

EPFL: LAMP

Research.
Projects: Miniboxing, macros, pickling, Dotty.

EPFL: LARA

Automated Reasoning and Analysis.
Validation and gerenation of Scala code.
Projects: Leon.

Typesafe Lightbend

Founded in 2011.
Projects: Akka. Play. Slick. Sbt.
Enterprise + stability

Typelevel

Founded in 2014.
Projects: Shapeless. Cats. Spire.
Different vision of what Scala should be.

Scala Center

Founded in 2016
Foundation for building community.
Teaching Scala on Coursera.

Our awesome community

Contributors are welcome!

  • Std Lib
  • Compiler
  • Tooling: Sbt, REPL, IDEs
  • New libraries

Thank you.

See my other talks.

Q&A