we—the Akka committers—are proud to announce the FIRST RELEASE CANDIDATE for the upcoming release of Akka 2.4.2. The main change in this release is that it includes Streams & HTTP, with the akka-stream, akka-stream-testkit, akka-parsing, and akka-http-core modules no longer being marked “experimental”. In comparison to Streams & HTTP 2.0 the main changes are:
- significant performance improvement for HTTP handling, now reaching roughly 75% of Spray’s performance—this is not the end of the performance work, we have only just begun
- replacement of all uses of the Unit type (represented as BoxedUnit in Java) with the more descriptive types akka.Done (for signaling successful completion) and akka.NotUsed (for materialization results of stages that do not produce a value)
- usage of Java 8 types in the Java DSLs: java.util.Optional instead of scala.Option and java.util.concurrent.CompletionStage instead of scala.concurrent.Future
Especially the second and third point mean that porting code from Streams & HTTP 2.0 to Akka 2.4.2 will require some mechanical source code changes, please refer to the migration guide for the details. While the core team was concentration on these sweeping changes some community members; Alexander Golubev, Stefano Galarraga, Gilad Hoch and @2beaucoup to name a few, got busy contributing new functionality and improving the existing one:
- Automatic and manual reset of the BackoffSupervisor
- CircuitBreaker implemented as an Actor pattern
- Noisy logging of cluster heartbeats now silenced but available through a config setting
- A rare bug where a node joining a cluster crashed before join completed and then not being able to connect after restart was fixed
- Option to eagerly initialize persistence plugins
- Improved OSGi manifests for HTTP and streams
- New stream combinators added: batch, batchWeighted, reduce and watchTermination.
- HTTP - server side request timeouts added
- Connection pools no longer fail if they are limited to a single connection
- New directives to turn a posted form to maps and sequences
We intend to release version 2.4.2 as soon as we are confident that it is reasonably bug free and the documentation is top notch as well: we are aware that the getting started experience for Streams & HTTP is not perfect in places and there are some features that are entirely missing—stay tuned for updates and please let us know of anything you find to be suboptimal.
Akka 2.4.x is backwards binary compatible with previous 2.3.x versions (exceptions listed below). This means that the new JARs are a drop-in replacement for the old one (but not the other way around) as long as your build does not enable the inliner (Scala-only restriction). It should be noted that Scala 2.11.x is is not binary compatible with Scala 2.10.x, which means that Akka’s binary compatibility property only holds between versions that were built for a given Scala version—akka-actor_2.11-2.4.2-RC1.jar is compatible with akka-actor_2.11-2.3.14.jar but not with akka-actor_2.10-2.3.14.jar.
Binary compatibility is not maintained for the following:
- akka-testkit, akka-multi-node-testkit and akka-persistence-tck
- experimental modules:
- features, classes, methods that were deprecated in 2.3.0 or earlier and removed in 2.4.x
Thanks to the Community! For this release we had the help of 32 committers. Special thanks to Alexander Golubev for his involvement in the development of Akka Stream.
commits added removed 56 58210 51301 Konrad Malawski 29 3297 4255 Roland Kuhn 14 2239 1056 galarragas 13 1604 1477 Endre Sándor Varga 11 734 276 Johan Andrén 9 601 382 Martynas Mickevičius 9 643 202 Patrik Nordwall 8 531 362 Johannes Rudolph 6 174 232 Viktor Klang 5 1185 648 Alexander Golubev 5 985 414 Gilad Hoch 3 95 305 2beaucoup 3 567 206 Tal Pressman 3 106 8 Brian Topping 3 622 233 Mathias 3 5 6 Lukasz Kryger 2 343 104 Wojciech Jurczyk 2 5 5 Jakub Kozłowski 2 8 10 Björn Antonsson 2 31 13 Matthias Sperl 1 1893 1893 Prayag Verma 1 43 23 Tim Harper 1 67 40 Roland Ferenczy 1 12 12 Sören Brunk 1 313 1 israel 1 21 0 Balazs Kossovics 1 38 5 Eugene Dzhurinsky 1 2 0 raam 1 55 0 Kaspar Fischer 1 8 8 Brendan McAdams 1 2 2 Brian Drupieski 1 808 441 Raymond Roestenburg 1 1 1 Chris Brett
– The Akka Team