Expert talks delivered virtually on Nov 10 Register Here
From the creators of Akka, get technology enhancements, monitoring, and expert support with Akka Platform from Lightbend. Learn More

News & Articles

Full archive

June 26

2015

Akka 2.4-M2 Released!

Dear hAkkers,

we—the Akka committers—proudly present the second development milestone for Akka 2.4. Since the release of Akka 2.4-M1 (one month ago) much has happened, in particular around Akka Persistence and Akka Cluster tools.

Besides a plethora of small improvements the main changes relative to 2.4-M1 are:

  • incorporate Patrik’s akka-data-replication under the new module name akka-distributed-data-experimental (see akka-data-replication migration guide), the Distributed Data module is useful for sharing eventually consistent data (CRDTs) between nodes in an Akka Cluster
  • improved support for Akka Persistence event migrations by Serializer with String Manifest and Event Adapters
  • make Akka Persistence failure handling more robust and support rejections of events
  • Persistent FSM, thanks to an awesome contribution from leonidb
  • various improvements in Akka Persistence aiming to finalize its APIs, refer to the migration guide or closed persistence tickets for details
  • use custom failure detection in Cluster Client to avoid quarantining in case of transient network failures
  • support graceful shutdown in Cluster Sharding
  • various API and configuration improvements of Cluster Sharding, Cluster Singleton, Distributed PubSub and Cluster Client

Akka 2.4 Roadmap

What remains to be done before we can release 2.4.0-RC1 is to

  • complete the Java API and the documentation for Akka Typed
  • finalize Akka Persistence on the Write Side (i.e. PersistentActor will be non-experimental; the work on the Read Side will be deferred until Akka 2.5)
  • incorporate Streams & HTTP once ready (to become an experimental module, as usual)

We will perform this work within the next weeks, releasing further milestones when appropriate. Please do what you usually do so well: try out our latest and report back when things break, not work as advertised, feel strange, or even when you are happy :-) Especially concerning binary compatibility we will need help from the community (you!) since we cannot run all possible programs ourselves; we base our BC efforts on the MiMa plugin but that is no perfect guarantee that everything will work out of the box.

Binary Compatibility

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-M1.jar is compatible with akka-actor_2.11-2.3.11.jar but not with akka-actor_2.10-2.3.11.jar.

Binary compatibility is not maintained for the following:

  • akka-testkit and akka-multi-node-testkit
  • experimental modules, such as akka-persistence and akka-contrib
  • features, classes, methods that were deprecated in 2.3.x and removed in 2.4.x

The dependency to Netty has been updated from version 3.8.0.Final to 3.10.3.Final. The changes in those versions might not be fully binary compatible, but we believe that it will not be a problem in practice. No changes were needed to the Akka source code for this update. Users of libraries that depend on 3.8.0.Final that break with 3.10.3.Final should be able to manually downgrade the dependency to 3.8.0.Final and Akka will still work with that version.

The dependency to Typesafe Config has been updated from 1.2.1 to 1.3.0 which should be binary compatible for the vast majority users, except for obscure edge cases as its changelog points out. This change was made in order in order to use new JDK8 specific features in the library as well as to align Akka with Play which is now also depending on 1.3.0.

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

Additional Release Details

The artifacts comprising this release have been published to https://repo1.maven.org/maven2/ and also to Maven Central. In addition, we adopted the sbt standard of encoding the Scala binary version in the artifact name, i.e. the core actor package’s artifactId is “akka-actor_2.11” or “akka-actor_2.12.0-M1”, respectively.

The complete list of closed tickets can be found in the 2.4-M2 github issues milestone.

Credits

commits added removed
   41   47287    4213 Patrik Nordwall
   13    2970     538 Konrad Malawski
    5     145      87 Roland Kuhn
    2    2109      50 Christopher Hunt
    2    3605      26 leonidb
    2      99      98 Andrey Myatlyuk
    1       1       1 Jean-Jay Vester
    1       1       2 Heiko Seeberger
    1       1       1 Enno Runne
    1       2       2 Lev T11v
    1      64      64 kukido
    1     263     247 Martynas Mickevičius
    1       2       2 Robert Ladstätter
    1       5       1 James Carman
    1       1       1 Stephen Nancekivell
    1      10       0 Nilanjan Raychaudhuri

Happy hAkking!