Akka 2.6.0 Released

Dear hakkers,

Today we are proud to announce the availability of the Akka 2.6.0 final.

Highlights of Akka 2.6.0 are new APIs with type-safety for Akka Actors, better stability for Akka Cluster with Artery, and improved serialization.

Akka 2.5.0 was released two and a half years ago, and since then we have published 26 patch releases. It’s time for an Akka 2.6.0 release!

The 2.6.0 final binaries are the same as 2.6.0-RC2. We have only updated documentation and added a missing dependency.

Highlights of Akka 2.6

The key features of the 2.6.0 release are:

A total of 489 issues were closed since 2.6 development started in April, 2019 (~v2.5.22). The complete list can be found on the milestones on github: 2.6.0-M1, 2.6.0-M2, 2.6.0-M3, 2.6.0-M4, 2.6.0-M5, 2.6.0-M6, 2.6.0-M7, 2.6.0-M8, 2.6.0-RC1, 2.6.0-RC2 and 2.6.0

Stable APIs of Akka Typed

In Akka 2.6, we have finally marked the new typed Actor API (“Akka Typed”) as stable. The typed API is now officially the main API for Akka. In the typed API, each actor needs to declare which message type it is able to handle and the type system enforces that only messages of this type can be sent to the actor. We want to say special thanks to Dr. Roland Kuhn for the early prototypes of Akka Typed several years ago and for providing valuable input along the way.

Akka Typed was declared ready to be used in production a while ago in Akka 2.5.22. Since then we have polished the APIs further and improved the documentation. With Akka 2.6.0 the APIs are fully stable, with the same binary compatibility guarantees as with other parts of Akka.

Alongside the classic Actor API, Akka now provides new APIs for all the main modules, such as Persistence, Cluster Sharding and Distributed Data. While introducing these new APIs we took the opportunity to rework these APIs and have improved the usability experience of all these modules. The goal was to make them more guided for the most common usage without limiting the flexibility to go beyond that.

It’s important to note that the classic APIs are still fully supported and existing applications can continue to use the classic APIs. It is currently not planned to deprecate or remove the classic API. For new projects we recommend using the new Actor API. It is possible to use the new Actor APIs together with classic actors in the same ActorSystem. An existing application doesn’t have to change, but if you like it’s possible to introduce Akka Typed for new functionality or migrate at your own pace.

Artery

Artery TCP is the new default transport for actor messaging. It is built on top of Streams TCP and has support for TLS. Alternatively, Aeron can be used as an underlying transport.

Artery improves stability for systems using Akka Cluster and also has much better performance.

One thing to be aware of is that rolling update from classic remoting to Artery is not supported since the protocol is completely different. It will require a full cluster shutdown and new startup. Classic remoting is deprecated but can still be used in 2.6.x, for example to support rolling updates until a full shutdown can be performed. See migration guide for more information.

Serialization with Jackson

A new serializer that is using Jackson is included in Akka. It supports both JSON and binary CBOR formats.

We have recommended against using Java serialization and now it has been disabled by default. Jackson is a good choice in many cases, and our recommendation if you don’t have other preferences or constraints.

Compatibility

Akka 2.6 is binary backwards compatible with 2.5 with the ordinary exceptions listed in the documentation. What we can do in minor releases compared to patch releases is changing defaults in the configuration and removing deprecated features. Some configuration changes may be needed when updating, please read the migration guide as a first step.

Libraries built for Akka 2.5.x can also be used with Akka 2.6.x. For example Akka HTTP 10.1.10 and Akka Management 1.0.4 can be used with Akka 2.6.0 dependencies. You may have to add explicit dependencies to the new Akka version in your build.

When using Akka extensions, in for example Akka HTTP or Akka Management, together with an Akka Typed ActorSystem it is expected to use the Typed to Classic adapters.

Akka Enhancements 1.1.12 has been released to support Akka 2.6.0.

Lightbend Telemetry 2.12.1 has been updated for Akka 2.6.0, including new instrumentation for Akka Typed.

Play and Lagom for Akka 2.6.0 will follow shortly.

Credits

For this release, since April 2019 ( f9c3c36 ), we had the help of 76 committers – thank you all very much!

commits added removed 222 44188 24033 Patrik Nordwall 94 66338 46304 Christopher Batey 82 13021 14226 Johan Andrén 75 3416 14204 Arnout Engelen 64 7726 4306 Helena Edelson 20 890 7474 Johannes Rudolph 11 2054 137 Enno 8 118 96 Dale Wijnand 6 1137 246 Nicolas Vollmar 6 46 42 Ignasi Marimon-Clos 5 500 470 Renato Cavalcanti 5 254 17 James Roper 5 71 19 kerr 3 1181 1651 franciscolopezsancho 3 593 831 Martynas Mickevičius 3 138 149 Shutao Tang 3 9 17 Charies Gavin 2 496 68 Marcos Pereira 2 9 32 Tim Moore 2 37 2 Kun Song 2 10 11 Philippus Baalman 2 10 10 Taeguk Kwon 2 2 2 yiksanchan 1 439 73 Matthew Smedberg 1 355 5 eyalfa 1 0 351 tison 1 205 95 Stefano Bonetti 1 261 14 Vasilis Nicolaou 1 110 9 Yoshitaka Fujii 1 112 1 Tanju Erinmez 1 84 15 虎鸣 1 76 0 Arnaud Burlet 1 37 38 tanaka takaya 1 72 2 Raymond Roestenburg 1 59 6 Jakub Kahovec 1 58 1 tayvs 1 56 0 Lim Chee Hau 1 25 25 Paul Dale 1 47 2 REASY 1 42 6 filipMatusak 1 42 1 Xin Yin 1 26 5 Pritam Kadam 1 27 4 Roman Filonenko 1 26 4 Thomas Braam 1 20 2 Felix Satyaputra 1 11 11 heraklos 1 17 1 Eric Cartner 1 8 8 Matt Kohl 1 4 8 Yury Gribkov 1 7 4 sebarys 1 6 5 Kirill Plyashkevich 1 5 5 Jakob Merljak 1 10 0 eugene yokota 1 5 5 skvithalani 1 3 6 Matthias Kurz 1 4 4 kenji yoshida 1 3 3 Mahmut Bulut 1 4 2 Stefan Ganzer 1 2 2 SageM 1 2 2 dsebban 1 1 2 Mohamed Ali Bannour 1 1 1 CloudCalvin 1 1 1 Erwin 1 1 1 Ethan Atkins 1 1 1 jeremie-seguin 1 1 1 Robert Stoll 1 1 1 Johan Östling 1 1 1 Thuillier Benjamin 1 1 1 Alex Afanasev 1 1 1 Barnabás Oláh 1 1 1 rohitkumbhar 1 1 1 Bartosz Firyn 1 1 1 Eric Loots 1 1 1 Justin Pihony 1 1 1 Corey Auger 1 1 0 Simon

Thanks to Lightbend for their continued sponsorship of the Akka core team’s efforts. Lightbend offers commercial support for Akka.

Happy hakking!

– The Akka Team