spray 0.7.0 released
After a lot more time than originally planned the second spray release has finally hit its scala-tools.org shelves. It features a great many changes, extensions and general improvements over the first release, mainly:
- Compatibility with Scala 2.9.0-1 and Akka 1.1.x
- Independence from Akka Mist
- A client module for consuming other REST APIs
- Support for gzip/deflate compression, authentication/authorization (incl. HTTP Basic Auth), proper server-side caching, even better path and parameter matching, case class extraction, spray-json and Tomcat 6
- 27 closed tickets
- Vastly improved documentation
The point about the removed dependency on Akka Mist deserves some more discussion. The first spray release relied on Akkas “Mist” layer for receiving and suspending the HTTP request coming in from the enclosing servlet container. Even though this worked nicely the amount of Mist logic that spray really used was only a small fraction of all the code in Akkas HTTP module (which Mist still is a part of). Also Mist introduced one more layer of request conversion than required and didn’t support Tomcat 6, which we needed support for at the time.
So we decided to implement the small adapter layer between the enclosing web server and spray ourselves, which turned out to be easier than expected and was done in less than 200 lines of Scala code, including the additional support for Tomcat 6.
Meanwhile spray is running very robustly in at least one larger production environment and we are very happy with the amount of attention it has received since its initial release. We hope spray continues to deliver upon its promise of being a fun and productive tool for building high-performance web services in Scala. As always, we are very much looking forward to your feedback…