Akka HTTP 10.2.0-RC2 released!

Dear hakkers,

We are happy to announce the 10.2.0-RC2 release of Akka HTTP. This release is the second release candidate leading up to version 10.2.0 of Akka HTTP.

For the RC2, we wanted to deprecate a few more APIs which led to some tricky compatibility issues. Therefore, we took the opportunity to introduce a new server
binding API (although late in the release cycle) to be able to realize a few more API improvements (especially on the Java side) that would otherwise have been
hold back by those compatibility issues.

10.2.0 is now feature-complete, and we will only merge documentation and cosmetic changes going forward, with the final release of 10.2.0 planned for August.

Notably new in this RC are

  • a new server binding API (see below)
  • more support and usage of the new message attributes
  • some performance optimizations in the client pool
  • some other smaller changes

Please see the detailed change log on the documentation site and the
migration guide for a full account of the upcoming changes.

Please take Akka HTTP 10.2.0-RC2 for a spin to iron out the last remaining issues before the final release.

Here’s a bit more information about the new server APIs:

Better integration with Akka 2.6 using the new server API entrypoints

Making changes to support Akka 2.6 better, we realized that the existing server API is sometimes awkward to use and to evolve. Therefore, we took the opportunity to come up
with a new ServerBuilder API that provides a
way to bind servers more concisely, especially from Java.

Existing Java code for binding a server like this:

// only worked with classic actor system
akka.actor.ActorSystem system = akka.actor.ActorSystem.create("TheSystem");
Materializer mat = ActorMaterializer.create(system);
Route route = get(() -> complete("Hello World!"));
Http.get(system).bindAndHandle(route.flow(system), ConnectHttp.toHost("localhost", 8080), mat);

can now be written as:

// works with classic or typed actor system
akka.actor.typed.ActorSystem system = akka.actor.typed.ActorSystem.create(Behaviors.empty(), "TheSystem");
// or
// akka.actor.ActorSystem system = akka.actor.ActorSystem.create("TheSystem");
// materializer not needed any more
Route route = get(() -> complete("Hello World!"));
Http.get(system).newServerAt("localhost", 8080).bind(route);

For Scala users, we strive to release a scalafix rule for the final release of Akka Http 10.2.0 to make the transition as
painless as possible.

Credits

For this release we had the help of 3 contributors – thank you all very much!

commits  added  removed
     38   2232     1240 Johannes Rudolph
     13   1189      451 Arnout Engelen
      5    264      130 Enno

The Akka core team is employed by Lightbend. If you’re looking to take your Akka systems to the next level, let’s set up a time to discuss our enterprise-grade expert support, self-paced education courses, and technology enhancements that help you manage, monitor and secure your Akka system from development to production.

Happy hakking!

– The Akka Team