This week sees the release of version 2.10 of the Scala programming language. Key new elements and improvements in this iteration include a mature programming model for async as well as reduction of boilerplate work through macros and dynamic types.
Scala finds itself at the intersection of "once-again-trendy" functional programming and proven object-oriented programming. It is also part of the increasingly popular movement to languages other than Java on the JVM.
Its developers now "anticipate and expect" Scala to make some serious inroads into the enterprise space as well as give Groovy/Grails a run for their money.
This release tackles "developer challenges" ranging from the syntactic nicety of String Interpolation, to expressing massive asynchronous computations in sequential code style.
The Play Framework harnesses Scala 2.10's new asynchronous programming model to compose services. The development team reports that library developers are using Scala 2.10's experimental Macros and Reflection features to further reduce complexity in applications. Even String Interpolation is now extensible by library developers in Scala 2.10.
According to the Scala program team, "Often times a developer needs to compose strings of text by substituting values for place holders. Scala 2.10 adds a new String Interpolation library that works with the power of compile-time type checking in Scala."
The Scala team at EPFL and the Akka team collaborated on a new API, which standardizes the API for asynchronous programming using the Future and Promise paradigms. With input from many developers building massively asynchronous systems, the result is said to be a very convenient API for expressing powerful asynchronous computations.
According to Adriaan Moors (Scala tech lead at Typesafe), "Developers who are building complex integration apps with Play and Akka are raving about the new Scala 2.10 Future API because it allows them to fire off hundreds of HTTP calls, then compose the results and render a web page. Composing numerous asynchronous calls in Scala 2.10 using a for-comprehension provides a concise programming model that feels natural but also manages resources efficiently and deals with errors gracefully."