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