ratpack

Lean & powerful HTTP apps

OTHER License

Stars
1.9K
Committers
155

Bot releases are visible (Hide)

ratpack -

Published by johnrengelman over 9 years ago

Another month, another Ratpack release…

Tim Yates added support for arbitrary regex path bindings, which makes path binding very flexible and powerful for those that need it. The existing path binding mechanism is now built on Tim's improvements.

Ben Navetta added search functionality to Registry, making render() and parse() operations more efficient, particularly in larger applications.

Jérôme Leleu made significant contributions to Ratpack's integration with his Pac4j multi protocol authn and authz library. Jérôme has created a demo application showing how to use Ratpack with Pac4j, which also serves as an example of building a Ratpack application with Maven.

Rus Hart has been busy adding integration for Netflix's fault tolerance library, Hystrix. Expect examples and docs in next month's release.

This release contains a major breaking change that is likely to affect all users. The modules {} block, used for configuring Guice bindings, in Ratpack.groovy scripts (and associated backing classes) has been renamed. This block is now named bindings {} which more accurately reflects that this block contributes Guice bindings, of which modules are one kind of source. There are other breaking API changes in this release, but they are unlikely to affect many users if at all.

Ratpack's implementation and core abstractions continue to strengthen and improve, forming the basis of what is becoming a very powerful toolkit for creating high performance HTTP applications that are enjoyable to develop. We hope that you use Ratpack and give us your feedback and ideas to help shape it on the road to 1.0.

ratpack -

Published by johnrengelman over 9 years ago

August has been a bumper month for Ratpack. Many cool new features and improvements have landed.

There are two big breaking changes in this release.
The reloadable property of LaunchConfig has been renamed to development to more accurately reflect its purpose.
Secondly, Jeff Beck completed the epic task of migrating the existing TestHttpClient to be based on Ratpack's own HttpClient where it was previous based on the RestAssured.
This allows a similar API to be used when performing HTTP requests inside your app and when testing your app with a HTTP client.
It also moves the HttpTestClient from the ratpack-groovy-test to ratpack-test module as it no longer uses Groovy.
If you require any assistance dealing with these breaking changes, please ask for help via the forum.

An exciting new improvement is what we term “dangling request detection”.
If you've ever written a handler and forgotten to call context.next() or another handler termination method you have experienced a dangling request.
Previously, if a handler didn't render to the response or pass control to another handler (e.g. via context.next()) the request would go unhandled and eventually timeout.
This no longer happens.
If a handler doesn't respond or pass on control, an error will be raised terminating the response (with a 500).
In development mode, the response will identify the faulty handler that can then be fixed.
This is a big improvement to the development cycle.

Much work has also been done on streaming data, making use of the emerging Reactive Streams standard as the basis of the API.
See our the new “Streams” chapter of the manual for more information.

Thanks to all who contributed code, issues and ideas to Ratpack 0.9.8.
We hope you enjoy it.

ratpack -

Published by johnrengelman over 9 years ago

Another month, another release.

This release saw the continued Java 8-ization that we started with the 0.9.9 release. This is about embracing the new JDK functional types where appropriate, redesigning APIs around interface default and static methods, optimising APIs for type inference and generally just leveraging the general Java 8 goodness. We are also incrementally updating all of the the code samples in the documentation to Java 8 syntax.

Some significant optimizations were made that reduce allocations for all apps, but particularly for apps with lots of handlers. The net result is less garbage created per request, increasing throughput under load.

Promises were beefed up in this release, with the addition of more promise operations to make async composition easier. We've documented all the transforms in this release and provided example usage snippets for most.

There were also great contributions from Rob Zienert (improved development time error page, handlebars integration fixes), Lari Hotari (SpringLoaded updates), Massimo Lusetti (HikariCP updates), John Engelman (RxJava to Promise conversions, unit test API improvements, response decoration API, Gradle plugin improvements) and Stephane Maldini (documentation improvements).

During this month we also finished our move to SnapCI for our test builds. SnapCI had the right mix of features for us, and was faster and more stable than any of other providers we've tried over the last year.

There's some very interesting stuff in the works. The HTTP client is continuing to be improved and we expect the API to be fully documented and explained in the next release. There is also some exciting work going on to improve our configuration story to make it easier to deal with externalised configuration. Some of this should land in the next release.

In recent days there’s been some movement on the Reactive Streams front. While the Promise is used for representing single value “streams”, Ratpack uses the Reactive Streams API for multi value streams. You can see this in action in our support for chunk streaming. The use of the Reactive Streams API allows integration with other implementors of the API. Ronald Kuhn, lead of the Akka project, recently posted an example showing a data stream collaboration between RxJava, Akka, Reactor Project and Ratpack. This is an exciting innovation in the reactive space on the JVM.

Thanks to everyone who contributed code, issues and forum posts for Ratpack 0.9.9. We hope you enjoy 0.9.10.

ratpack -

Published by johnrengelman over 9 years ago

The first release of 2015.

As always there are some internal performance and efficiency improvements, making Ratpack leaner and meaner at runtime. There are also some new features and improvements, and new initiatives started.

The Jackson integration got some love in this release, including new features and documentation.

The new RenderableDecorator feature allows objects to be modified/decorated/intercepted just before they are rendered. The initial target use case for this feature is to support implicitly adding objects to view models.

Work is continuing on support for client side sessions, which should wrap up in the next release. As is the work for direct response streaming with the HTTP client (e.g. to support proxying other HTTP servers without reading the proxied response into memory).

There are some breaking changes to the Groovy support in this release. All of the templating related classes have been moved into the one ratpack.groovy.template package. Moreover, some classes that are rarely used directly have been renamed.

A big thanks to Rob Fletcher and Robert Zakrzewski for contributions to Ratpack's own build. Thank you also to Glenn Saqui for a bunch of contributions, and the promise of more in the future!

This release included moving from Netty 4.0.x to 4.1.x. Unfortunately, a non snapshot version of the Netty version we required (4.1.0.Beta4) was not available at the time of Ratpack 0.9.12's release. This means that 0.9.12 ships with a dependency on a snapshot version of Netty. We apologise for this serious inconvenience. Netty 4.1.0.Beta4 should be released before too long, upon which it is recommended to use it. You may want to consider not adopting Ratpack 0.9.12 due to this, and instead wait for 0.9.13 which will be released on the 1st of February.

We hope you enjoy this version of Ratpack.

ratpack -

Published by erdi almost 10 years ago

A relatively quiet month for the codebase, but a huge month for Ratpack.

We are happy to announce the addition of John Engelman to the core committer team. John has been contributing valuable bits and pieces for a while and we are glad to have him on board.

The other big news of the month is that Team Ratpack member Dan Woods is working on a book, “Learning Ratpack”, to be published by O'Reilly Media. The book will be released in 2015 and will target and coincide with the 1.0 release of Ratpack. If you're not familiar with Dan's work, now would be a good time to follow him on Twitter, then promptly unfollow him.

Some new areas of functionality were initiated in this release, such as client side cookie based session storage, bi directional streaming websockets, documentation for Hystrix integration, JSON metric streaming and more. As usual, there several performance optimisations and general improvements and bug fixes to boot.

This release also saw contributions from Wilson MacGyver, Tomás Lin, Jörn Huxhorn and Cédric Champeau.

We hope you enjoy Ratpack 0.9.11.

ratpack -

Published by danhyun about 10 years ago

Another month, another release.

This release saw the continued Java 8-ization that we started with the 0.9.9 release. This is about embracing the new JDK functional types where appropriate, redesigning APIs around interface default and static methods, optimising APIs for type inference and generally just leveraging the general Java 8 goodness. We are also incrementally updating all of the the code samples in the documentation to Java 8 syntax.

Some significant optimizations were made that reduce allocations for all apps, but particularly for apps with lots of handlers. The net result is less garbage created per request, increasing throughput under load.

Promises were beefed up in this release, with the addition of more promise operations to make async composition easier. We've documented all the transforms in this release and provided example usage snippets for most.

There were also great contributions from Rob Zienert (improved development time error page, handlebars integration fixes), Lari Hotari (SpringLoaded updates), Massimo Lusetti (HikariCP updates), John Engelman (RxJava to Promise conversions, unit test API improvements, response decoration API, Gradle plugin improvements) and Stephane Maldini (documentation improvements).

During this month we also finished our move to SnapCI for our test builds. SnapCI had the right mix of features for us, and was faster and more stable than any of other providers we've tried over the last year.

There's some very interesting stuff in the works. The HTTP client is continuing to be improved and we expect the API to be fully documented and explained in the next release. There is also some exciting work going on to improve our configuration story to make it easier to deal with externalised configuration. Some of this should land in the next release.

In recent days there’s been some movement on the Reactive Streams front. While the Promise is used for representing single value “streams”, Ratpack uses the Reactive Streams API for multi value streams. You can see this in action in our support for chunk streaming. The use of the Reactive Streams API allows integration with other implementors of the API. Ronald Kuhn, lead of the Akka project, recently posted an example showing a data stream collaboration between RxJava, Akka, Reactor Project and Ratpack. This is an exciting innovation in the reactive space on the JVM.

Thanks to everyone who contributed code, issues and forum posts for Ratpack 0.9.9. We hope you enjoy 0.9.10.

Team Ratpack

ratpack - 0.9.7

Published by rhart about 10 years ago

July has been a bumper month for Ratpack!

First of all, welcome to our latest committer Dan Hyun who has already made a significant number of contributions from Windows development improvements, ensuring onClose events are fired when file rendering and some refactorings.

21 issues have been closed and there has been a massive 18 pull requests from 7 different contributors including:

This release contains a breaking change which is an id change for the Gradle plugins to be Gradle Plugin Portal compatible. This means that the ratpack plugin is now io.ratpack.ratpack-java and ratpack-groovy is io.ratpack.ratpack-groovy.

Reactive Streams integration continues and the API in this area is now reaching a stable point. See this test for a sneak peak.

A very useful contribution was the addition of support for Groovy's new “markup” based templating system, contributed by core Groovy developer Cédric Champeau. This new templating approach is faster and more convenient than Ratpack's existing Groovy template support, which embeds snippets of Groovy code in text files, opposed to building the content programmatically as the new “markup” templates do. See the templates for the example-books project for examples.

A big thank you also to John Engelman who added very cool Gradle build time integration with his “Shadow” plugin for creating fat jars. Creating fat jars for deployment is now much faster, and far more configurable thanks to John's excellent plugin. John even added some documentation on the integration to the manual.

More work has also gone into the Ratpack manual. In particular, we have added some information on how Ratpack compares to other tools for creating web apps. Improving Ratpack documentation is a priority for us and expect to see some significant improvements in this area.

Big thanks also to Lari Hotari and Ratpack team members Jeff Beck and Rob Fletcher who all presented Ratpack talks at Gr8Conf US and set Twitter buzzing.

Last but not least, Rob Fletcher has printed up some sweet Ratpack stickers that he gave out during Gr8Conf. If you'd like to print your own and help spread the word, the graphic used can be used with sticker services such as Stickerhub.

-- Team Ratpack

ratpack - 0.9.6

Published by davidmc24 over 10 years ago

While June wasn't the biggest month in Ratpack's history in terms of commits, some very interesting and important work happened along with some significant Ratpack related events.

Some very significant work has taken place right at the core regarding the execution. Ratpack now guarantees deterministic execution for a given logical execution thread (e.g. handling a request), even when asynchronous callback based APIs are used. The upshot of this is that a class of potential sporadic race conditions that can occur in any multi threaded non blocking system are effectively avoided, which just means more stable apps for free.

Work continues on the RxJava and Hystrix integration, notably with improved support for doing parallel data processing with RxJava. The distribution of work is integrated with the main application event loop, which keeps resource usage low.

An important event that took place in June was the release of the Ratpack powered, Gradle Plugin Portal. This is a production class Ratpack application using RxJava. The application is not open source, but expect to see blog posts from Luke Daley over the coming weeks discussing some of the techniques used in the app.

Team Ratpack member Dan Woods also gave a talk on Ratpack at UberConf 2014 that discusses the asynchronous model, testing and other important Ratpack concepts. Dan has made the slides and code available on GitHub.

Thanks to Roy Schumacher, Chip McCormick and Stefano Gualdi for their contributions to 0.9.6. There are already some interesting contributions queued up for 0.9.7.

We are always looking for contributions to Ratpack, so if you're interested don't hesitate to get in contact through the GitHub issues or the forum.

-- Team Ratpack

ratpack - 0.9.0

Published by ldaley almost 11 years ago

This is the first release of Ratpack, since it evolved into the project it is today. It's been a long time coming, but finally there is an immutable release that is available from the standard repositories.

The next version, 0.9.1, will be released on the first of February 2014. The intention is that new versions will be released on the first of each month until the time that Ratpack goes 1.0. There is no scheduled date for the release of 1.0. There will be as many 0.9.x releases as the team feel necessary before locking down the API for compatibility.

The Ratpack binaries are currently available in Bintray's JCenter Maven repository (repo link). The artifacts will be sync'd to Maven Central over the next few hours.

Thanks to everyone who has supported Ratpack during its early incubation, and a special thanks to all who have made code contributions. We look forward to your continued support.