To take full advantage of Java 8’s support for lambdas and interfaces with concrete methods, a lot is changing behind the scenes of the Scala 2.12 compiler!
At the language level, Scala has always had first-class support for lambdas, of course, and with Java 8’s invokedynamic machinery we can now compile them to more compact and efficient bytecode. We also interoperate fully with Java’s modeling of functions as Single Abstract Method types (aka functional interfaces). The other advantage of compiling to Java 8 bytecode is a more direct encoding of traits. The invokedynamic instruction plays an interesting role here as well, surprisingly!
While we were revamping the back-end, we’ve also replaced the old optimizer with a much more robust and powerful one, based on Miguel Garcia’s earlier work. Finally, I’ll talk about the crucial ingredients of my kind of functional programming language (beyond nice syntax for functions). Thrilling slide titles will include: “val is your friend”, “everything is an expression”, “patterns for destruction”, “how I stopped worrying about variance”.
Adriaan has been hacking the Scala compiler since 2007 (type constructor polymorphism, dependent method types and implicits, 2.10’s rewritten pattern matcher). In 2012 he joined Typesafe to lead the Scala team, with a mission to make Scala easier to use as well as to contribute to. He’s currently working on encoding traits as interfaces with default methods for the 2.12 release. In 140 chars or less: Belgian, espresso snob, writer of own bio in the third person.