Released on 2015-08-31.
Finally… the Ratpack 1.0.0 release candidate. It's been a two and half year journey, but we are finally here. We plan to release 1.0.0 final roughly two weeks after the RC release, depending on the feedback.
First off, thank you to everyone who has supported the project in any way over the recent years. Ratpack is a volunteer effort; no one gets paid to work on it and no one gets paid by people using it. We've received many pull requests, bug reports, feature suggestions and praise which provide the motivation to keep going. You can see the list of people who have contributed code to the project in the credits section of the manual.
There are quite a few changes in this release from 0.9.19.
The development time reloading strategy has changed from using runtime class patching (using SpringLoaded), to using Gradle's Continuous Build feature. This is a far more reliable strategy and greatly simplifies IDE integration for Ratpack apps (i.e. no special integration is needed). Try it out by running
./gradlew run --continuous on your project, after upgrading to Gradle 2.6 (Ratpack now requires this version). The Ratpack runtime has no knowledge of Gradle. It is entirely theoretically possible to integrate Ratpack with the equivalent feature in another build tool should it exist.
The request body can now only be read once during a request. Its byte buffer can now also be eagerly released to free the memory if desired. This change is in preparation for the coming feature in Ratpack 1.1.0 of deferring the reading of the body over the wire until it is requested.
ratpack-jackson-guice library has been removed. The functionality that it provided is now part of
ratpack-core. That is, renderers and parsers for working with the types of
Jackson are now available automatically. The
ratpack-core library already depended on Jackson for the config mechanism. Besides the removal of the library and the
JacksonModule class, the main change you will need to make is how you customise Jackson. See “Configuring Jackson”.
Parser API has also simplified. For parse operations with no options, the parse objects now returns no options instead of a
NullParseOpts marker. Also, parsers are no longer restricted to a content type. An implementation can now potentially parse multiple content types.
RemoteControl now accepts
UnserializableResultStrategy. The default value is
io.remotecontrol.client.UnserializableResultStrategy.throw. It is now also possible to specify
uses closures (i.e. external closures that are used by the command closure) as well.
StreamedResponse#send have been changed to
Redis session storage is now supported in the
ratpack-session-redis library. See "RedisSessionModule" for details.
ratpack-codahale-metrics module has been renamed to
The configuration classes associated with this module are no longer inner classes of the module, you will need to use
The 1.0.0 release doesn't mean that Ratpack is “done”. There are still things to add, and no doubt bugs to squash, but it's both a symbolic and practical milestone. It's symbolic in that we are asserting that it's at a certain level of maturity and is applicable to a good number of projects. It's practical in that we are now striving for API compatibility (i.e. no more breaking changes). What this means is that you should be able to upgrade your app on the 1.x line in order to incorporate new features and fixes without your existing code breaking. We will be taking this very seriously, but of course we are mere humans and uncaught mistakes may be made.
1.0.x releases will occur as frequently as needed in response to bug fixes and internal improvements. After the release of 1.0.0, improving the documentation will be a key focus.
Please try the release candidate on your projects promptly and let us know of any problems so they can be fixed before the 1.0.0 final release.
We hope you are as excited as we are about Ratpack 1.0.0.
Pull Requests (3)
-  - Add config options for changing delimiters (lundvall)
-  - Simplify parsers, and remove the jackson-guice lib (inlined into core). (ldaley)
-  - Provide support for RFC2616 Content-Type media type parsing. (zedar)
Resolved Issues (8)
-  - Relative paths passed to ServerConfig.Builder's json() and yaml() methods should be resolved relatively to base dir
-  - Add config option for changing delimiters in ratpack-handlebars
-  - Provide RFC2616 support for Content-Type media type parcing.
-  - [handlebars] Update to latest handlebars.java version
-  - HandlingResult status code not set properly in DefaultRequestFixture when handler calls clientError()
-  - Rename `send` to `forwardTo` on received response classes
-  - Joining to context registry from handler doesn't work when Context#insert is used
-  - Rename Coda Hale Metrics module to Dropwizard Metrics