Let it crash

Aug 21

Akka 2.4.0-RC1 Released

Dear hAkkers,

we—the Akka committers—are pleased to be able to announce the availability of Akka 2.4.0-RC1 (FIRST RELEASE CANDIDATE). This is what we intend to ship as 2.4.0 final unless issues are found, so please test it thoroughly and report back. Failures are important to hear about, but praise also does not hurt :-)

Since the last milestone one week ago the main changes are:

The key features of the 2.4.0 release are:

Things that are Known Missing

The Persistence schema evolution section of the documentation has not yet been ported to Java, but the text and illustrations of the Scala version apply to both languages. We will complete this before 2.4.0 final.

We will most likely not be able to complete the Java API and the documentation for Akka Typed for 2.4.0, but the Scala API will be released in order to gather early feedback on this rather exciting new module.

We will incorporate Streams & HTTP once ready (to become an experimental module, as usual) into 2.4.x. Note that you can use Akka Streams 1.0 together with Akka 2.4.0-RC1.

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.0-RC1.jar is compatible with akka-actor_2.11-2.3.12.jar but not with akka-actor_2.10-2.3.12.jar.

Binary compatibility is not maintained for the following:

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

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.

Migration Guide

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

Old Akka Persistence plugins released for 2.3 are not compatible with the changes that were done in 2.4-M2. This is a good time for Akka Persistence plugin maintainers to migrate and release a preview for 2.4.0-RC1. Even though there are rather many API changes since 2.3 in the Persistence plugin API it should not be difficult to migrate. See the Persistence Plugin APIs section in the migration guide.

We have carefully made changes in Akka Persistence with the goal that events stored with Akka Persistence 2.3.12 should still be possible to replay with 2.4.x, i.e. no lost data. Specific journal implementations may of course violate that goal.

General Remarks

Please do what you usually do so well: try out this release candidate 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.

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.

37 issues were closed since 2.4-M3. The complete list of closed tickets can be found in the 2.4.0-RC1 github issues milestone.

Credits

commits added removed
   26    9711     418 Patrik Nordwall
    5     579     303 Konrad Malawski
    1     612     318 Ostapenko Evgeniy
    1       3       4 qian miao
    1     381      85 Jeremy.Stone

Happy hAkking!

Aug 19

IBM developerWorks blog on Akka

Dennis Sosnoski posted a very nice post explaining some of the core concepts of Akka as well as a non-trivial example on the IBM developerWorks blog, as part of the on-going article series on jvm concurrency.

Aug 17

Codecentric Blog: Introduction to Akka actors

In their latest blog series on getting started and diving into the Akka ecosystem, Heiko explains the basics of how an Actor works and how to use them properly: Codecentric Blo: Introduction to Akka Actors

Aug 14

Akka 2.4-M3 Released

we—the Akka committers—proudly present the third development milestone for Akka 2.4. Since the release of Akka 2.4-M2 (one and a half months ago) much has happened, in particular around Akka Persistence.

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

Akka 2.4 Roadmap

The aggressive plan is to release 2.4.0-RC1 by the end of next week (August 14). What remains to be done is:

We will most likely not be able to complete the Java API and the documentation for Akka Typed for 2.4.0, but the Scala API will be released in order to gather early feedback on this rather exciting new module.

We will incorporate Streams & HTTP once ready (to become an experimental module, as usual) into 2.4.x. Note that you can use Akka Streams 1.0 together with Akka 2.4-M3.

Please do what you usually do so well: try out our latest milestone 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-M3.jar is compatible with akka-actor_2.11-2.3.12.jar but not with akka-actor_2.10-2.3.12.jar.

Binary compatibility is not maintained for the following:

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

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.

Migration Guide

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

Old Akka Persistence plugins released for 2.3 are not compatible with the changes that were done in 2.4-M2. We do not plan to do more changes to the plugin API so now is a good time for Akka Persistence plugin maintainers to migrate and release a preview for 2.4-M3. Even though there are rather many API changes since 2.3 in the Persistence plugin API it should not be difficult to migrate. See the Persistence Plugin APIs section in the migration guide.

We have carefully made changes in Akka Persistence with the goal that events stored with Akka Persistence 2.3.12 should still be possible to replay with 2.4.x, i.e. no lost data. Specific journal implementations may of course violate that goal.

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.

Credits

commits added removed
   43    5555    2511 Patrik Nordwall
   29    7897    1658 Konrad Malawski
    3    1422     118 Patrik Nordwall & Konrad Malawski
    2      17       2 Endre Sándor Varga
    2      12      12 Christopher Batey
    2       7      13 Roland Kuhn
    1      20      20 Jeroen Gordijn
    1       0      19 Martynas Mickevicius
    1       6       5 Guido Medina
    1       1       1 rsujak
    1     392     386 Andrea
    1     145       7 Matthew Livesey
    1      98       6 leonidb
    1       1       2 Marek Kadek
    1       2       2 Martynas Mickevičius
    1       6      19 kukido
    1       2       2 Stephen McDonald

Happy hAkking!

Aug 10

Glassbeam: Elastically adding and removing nodes using Akka cluster

A nice post on how Akka Cluster worked well for Glassbeam for elastically scaling the cluster according to load demand: https://www.glassbeam.com/elastically-adding-removing-nodes-using-akka-cluster/

Jul 28

A Map of Akka

Heiko Seeberger goes through the various Akka modules explaining where they fit in and how they fit together. A great post to get a quick overview of what Akka is all about.

Jul 23

Use akka-stream BidiFlows with an IRC client

Christian Hoffmeister shared an excellent post about using BidiFlow (the best building block available to represent arbitrary protocols in Akka Streams) to communicate with an IRC protocol: Use akka-stream BidiFlows with an IRC client

Jul 20

Tim Harper: The Need for Acknowledgement in Streams

Tim Harper explores adding acknowledgements to operations for Akka Streams, for his RabbitMQ integration op-rabbit.

Jul 15

Akka Streams & Http 1.0 released!

Akka Streams and Http reach 1.0! 

See the announcement: https://akka.io/news/2015/07/15/akka-streams-1.0-released.html
Share the love: https://twitter.com/akkateam/status/621298547812659200

Jul 09

Akka 2.3.12 announcement

Akka 2.3.12 has been released. More details in the Akka website.