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.
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
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://oss.sonatype.org/content/repositories/releases/ 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.
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