What’s in Scala 2.12

In a roadmap published in Scala’s website last June 30, 2014, stated their plan for the new Scala version – Scala 2.12.

While Scala 2.10 and Scala 2.11 use previous versions of Java, the distribution for Scala 2.12 will be entirely built and will require Java 8. Therefore, in preparation for the Scala 2.12, the next releases of Scala 2.11.x, “Java 8-style closure compilation: Miguel’s new back-end & optimizer” will be introduced as experimental features. The Scala team is also planning to have an easy cross-building between 2.11 and 2.12 using full backward source compatibility. Version 2.11 and 2.12 compiler and standard library code bases will be aligned closely to achieve a smooth transition to Java 8.

The roadmap also listed the following shared features of Scala 2.11 (under a flag) and 2.12:

  • Java 8 interop (bidirectional)
  • Miguel’s new back-end & optimizer
  • Style checker
  • Collections enhancement
  • Improvement on documentation
  • Continuous improvements on infrastructure such as sbt build, pull request validation & release automation, bug tracker cleanup and automation.

On the fourth quarter of 2014, infrastructure development for 2.12 will start and the development for transition will be on 2015. Below is the schedule which they follow:

2.10.0             |             04/01/2013             |             First 2.10.x release

2.11.0             |             16/04/2014             |             First 2.11.x release

2.11.1             |             19/05/2014

2.11.2             |             21/07/2014

2.11.3             |              29/09/2014

2.10.5              |          Q4 2014                   |             Last 2.10.x release

2.12.0-M1        |           24/11/2014

2.11.4             |           Dec 2014

2.12.0-M{2,3,4} |           Q{1,2,3} 2015          |              quarterly 2.12.0-Mx releases

2.12.0-M5        |             Oct 2015

2.12.0-RC1        |          Nov 2015                |                (1 year after M1)

2.12.0                |            Jan 2016

The new features exclusive for Scala 2.12 that will be developed on 2015 are as follows:

  • FunctionN will be turned into Functional Interfaces wherein higher-order methods in Scala can be called without a wrapper using Java 8 code
  • Support for @interface traits
  • Possibility of integrating Streams into Scala collections
  • JDK’s forkjoin library will be used instead of embedding your own
  • Enhanced lazy val initialization – SIP-20

These features are binary incompatible thus cannot be backported to 2.11.

Posted in Technology.

Leave a Reply

Your email address will not be published. Required fields are marked *