Play 2.7.0-RC3 released!

Hi all,

The Play team is proud to announce the first release candidate for Play 2.7.0 (due to a bug during the release process we had to skip RC1 and RC2, so RC3 is effectively the first RC). We expect this to be considerably more stable than the milestone releases, not only in terms of functionality but we are also moving closer to the idea of freezing the APIs.

As with milestones, the primary goal is to get feedback, so please let us know if something isn’t working or you see something that should be improved. If you are the author of a Play module, we would recommend checking out this release to see how it will affect your module. If there are changes not well documented in javadocs, scaladocs or our migration guides, please, let us know so that we can improve them before the general availability release.

There are many improvements and changes at this new release compared to Milestone 4. More than 50 pull requests were merged. But as we did for Play 2.6, we pushed to have a smooth migration from the previous version.

What is new

So a sneak peek of the main changes after Milestone 4:

A new way to access Http.Request in Java APIs: play.mvc.Http.Context is a crucial part of Java HTTP & MVC APIs, but it is not a good abstraction of how these APIs should work. It either has some concepts that could be better modelled or implementation details that are complex to test and to reason about in a multi-threading framework like Play. Matthias Kurz did an astonishing work to remodel the API, deprecate and document everything that changed.

A new HTTP error handler that understands client’s preferred media type: the current HTTP error handler is excellent for web applications, but not for APIs where you want to report errors as JSON or other formats. The new handler is both capable of handling HTML and JSON and is extensible to add whichever format you need.

Improvements around application secret: the application secret is used as the key for ensuring that a Play session cookie is valid, i.e. has been generated by the server as opposed to spoofed by an attacker. However, the secret only specifies a string and does not determine the amount of entropy in that string. Anyhow, it is possible to put a lower bound on the amount of entropy in the secret by merely measuring how short it is.

For other changes, you can see a summary of our progress on 2.7.0 in our roadmap document.

Standalone projects

Together with Play 2.7.0-RC3, we are also releasing compatible versions of standalone projects that directly depends on Play.

  1. Scalatest+Play 4.0.0-RC1
  2. Play-Ebean 5.0.0-RC1
  3. Play WS 2.0.0-RC1
  4. Twirl 1.4.0-RC1
  5. Play Json 2.7.0-RC1
  6. Play Slick 4.0.0-RC1

Please note that these are all intended to be a preview of the upcoming general availability release, and we do not recommend using in a production application. We have made an effort to introduce most major API changes in this release, but we reserve the right to do small changes in a future release candidate. The good news is that there’s still a chance to provide feedback, so please try it out and let us know what you think. Don’t hesitate file issues on the project or start a discussion on our forums if you have suggestions.


Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

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

Special thanks to the following contributors who helped with this release: Andrii, Dale Wijnand, Dmitry Avershin, Erik LaBianca, Greg Methvin, Gui Becker. L, Ignasi Marimon-Clos, Marcos Pereira, Matthias Kurz, NickBlow, Play Team, Radim Kolar, Takahiro Takashima, Taylor Raack, Veselin Slavchev, Will Sargent, fghzxm, natefitzgerald, picimaci, sullis, techmoksha

Play Team!