Introducing Akka Cloud to Edge Continuum. Build once for the Cloud. Seamlessly deploy to the Edge. Learn More
 

News & Articles

Full archive

January 26

2017

Akka 2.5-M1 Released!

Dear hakkers,

we—the Akka committers—proudly present the first development milestone for Akka 2.5. Since the release of Akka 2.4.0 (already 16 months ago) we have incrementally added many new features to the 2.4.x release series, including Akka Streams and HTTP. That has worked well and we think you appreciate the API stability of all those patch versions. However, there are some changes we cannot do in patch versions and therefore it is time for Akka 2.5. Especially we want to promote some experimental modules to fully stable modules and incorporate some API improvements before declaring them stable.

Akka 2.5 is binary backwards compatible with 2.4 with the ordinary exceptions listed in a separate section below. This milestone is rather close to the final result. There are a few more things to finish up before the first release candidate (ETA in about a month).

Now is an excellent time for you to try the milestone out and give us feedback before the final release. Read the migration guide as the first step.

The key features of the 2.5-M1 release are:

  • The Java API for AbstractActor was promoted to fully stable API. While doing this we did some small, but important, improvements to the API that will require some mechanical changes of your source code.
  • Distributed Data was promoted to a fully stable module. Several improvements were also included, such as:
    • Support for delta-CRDTs in Distributed Data to reduce the amount of data that is replicated.
    • Generic type for the key in Distributed Data ORMap, thanks to jgordijn
  • Coordinated shutdown to facilitate ordered stopping of actors and services and perform registered tasks during the shutdown process. This greatly simplifies tasks involved in graceful leaving of Akka Cluster.
  • Support remembering entities in Cluster Sharding with the ddata mode. Distributed Data is now also the default mode for Cluster Sharding.
  • We added @ApiMayChange and other annotations which can be used to mark experimental API inside stable modules, mostly for use in Akka HTTP.

Binary Compatibility

Akka 2.5.x is backwards binary compatible with previous 2.4.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.12.x is is not binary compatible with Scala 2.11.x, which means that Akka’s binary compatibility property only holds between versions that were built for a given Scala version — akka-actor_2.12-2.5-M1.jar is compatible with akka-actor_2.12-2.4.16.jar but not with akka-actor_2.11-2.4.16.jar.

Binary compatibility is not maintained for the following:

  • akka-testkit and akka-multi-node-testkit
  • experimental modules, such as akka-typed and akka-contrib
  • features, classes, methods that were deprecated in 2.4.0 or earlier and removed in 2.5.x

Being binary compatible means that applications and libraries built on top of Akka 2.4.x continue to work with Akka 2.5.x without recompilation (subject to the conditions below), which implies that Akka HTTP as well as Play Framework 2.5 can be combined with Akka 2.5.

Migration Guide

When migrating a code base to Akka 2.5 please refer to the migration guide in order to profit from some of the improvements.

AbstractActor has been promoted from its experimental state and while doing this we did some small, but important, improvements to the API that will require some mechanical changes of your source code. See the Actor (Java) section in the migration guide.

It is possible to do a rolling update from Akka 2.4.16 to 2.5-M1 but some configuration changes might be needed first. See the Rolling Update section in the migration guide.

Akka Persistence plugins released for 2.4 might not be compatible with the changes that were done in the API for Persistence Query in 2.5. We kindly ask the Akka Persistence plugin maintainers to migrate and release for 2.5. See the Persistence Query section in the migration guide.

Credits

The complete list of closed tickets can be found on the 2.5-M1 milestones on github.

For this release we had the help of 26 committers – thank you all very much!

Credits:
commits  added  removed
   66   12378   20673 Patrik Nordwall
   30    2399    3980 Konrad Malawski
   13    1004     658 Johan Andrén
    8     299     144 Johannes Rudolph
    7     155      56 ortigali
    3      10      10 Devis Lucato
    3    2275     577 Jeroen Gordijn
    3     180     216 gosubpl
    2      18      16 Richard Imaoka
    2     151      48 inakov
    2    1615    1619 Philippus Baalman
    2      36      36 VEINHORN
    2     781     678 Björn Antonsson
    1       1       1 Alex Bezhan
    1      35      31 Ben Fonarov
    1       5       1 Adam Voss
    1     165      21 monkey-mas
    1       1       1 Josep Prat
    1      37       2 Andrew Rapp
    1      51      15 Christian Schmitt
    1      23       4 drewhk
    1      59      14 Alexander Golubev
    1       2       1 Robert Varga
    1     217       0 Oleg Poleshuk
    1       2       1 Dominik Pawlak
    1     177      77 Martynas Mickevičius

Happy hakking!

– The Akka Team