What’s next for Scala? Exploring what 2016 holds with Martin Odersky
He stressed that although developments were few and far between in 2015, Scala will be moving full-speed ahead with a variety of advancements this year.
Three of the major developments are the release of Scala 2.12, the launch of the Scala Center, and the upcoming experimental platform, dotty, which will allow for prototyping the designs for the next generation of the language.
Here are some of the highlights from his keynote:
Scala 2.12 is optimized for Java 8 and uses Java 8’s lambdas and default methods. It also allows for shorter code and faster execution speed. Odersky projects the release will occur sometime in the middle of this year.
There are 33 features in this release, 336 closed PRs with an additional 40 left, and 65 committers on the project.
Following the release of 2.12, 2.13 will have a direct focus on libraries, revamping collections to make them easier to use and increased compatibility with Spark. The goal is to create better modularization with a possible split under discussion from the Scala stdlib to Scala core and Scala platform.
There’s been a lot of talk about Scala.js 0.6.9 whose release occurred on April 30th. While the latest version primarily focuses on support of Scala 2.12.0-M4 and M5, it also contained a few enhancements and fixes such as “native” anonymous classes, js.TupleN, JUnit support, and faster code generation.
DOT is the result of 8 years of work and serves as a proven foundation for Scala. According to Odersky, the DOT calculus talks about a minimal language subset, chosen so that we can make and prove formal statements about it, and encode a significant portion of the language.
The highly-anticipated launch of Dotty, a dot-compiler, won’t be happening in the immediate future, but a first developer preview is right around the corner. The new compiler supports the evolution of the Scala programming language, builds on DOT in its internal data structures, and expresses generics as type members.
A handful of dropped features were announced for dotty including macros, procedure syntax, DelayedInit, general type projection, early initializers, and existential types.
The following new features will be implemented:
- Union types
- Intersection types
- Function arity adaptation
- Named type parameters
- Trait parameters
- Multiversal equality
- non- blocking lazy vals
- @static methods and fields
He also mentioned that classes and traits essentially have the same capabilities with the rule being, when it’s fully defined make it a
class, when it’s abstract, make it a
Odersky went one step further detailing where he envisions Scala to be in five years time. His primary goal is to make Scala the “best” programming language that he possibly can.
- Deepen the synthesis of functional programming and modular programming.
- Improve the connection of Scala with its theoretical foundations.
- Improve the guarantees of type system.
- But stay simple and approachable.
Plans for the future include scala.meta, implicit function types, effect system, null safety, better records, and generic programming.
You can check out the full slidedeck here:
Follow @47deg for more updates from Scala Days NYC.