Released on 2022-05-13.
Ratpack 2.0.0-rc-1 is now available!
This release is the first candidate for the next major version of Ratpack and is intended to identify any significant issues or regressions that may have occurred. As a major version release, this release include a number of breaking changes for applications.
Package & Module Changes
This release includes changes to Ratpack's modules and Java package naming structure to align with Java Platform Module System (JPMS) introduced in Java 9. Each module now contains one unique package name across the framework's libraries. The libraries do not contain
module-info.java files at this time.
To facilitate this change, a number of core API classes were moved to new packages and some additional package were added.
ratpack-config: contains the code for Ratpack's configuration binding system
ratpack-func: contains the collection of functional interface definitions used across Ratpack's code base.
The following deprecated modules have now been removed and are not published in this release.
ratpack-hystrix(Hystrix is no longer maintained, relies on
ratpack-rxwhich is removed)
ratpack-pac4j(in favor of https://github.com/pac4j/ratpack-pac4j)
ratpack-remote(obsolete due to additions of
URLClassLoaderno longer supported in Java > 9)
ratpack-remote-test(obsolete due to additions of
URLClassLoaderno longer supported in Java > 9)
ratpack-rx(in favor of
ratpack-thymeleaf(in favor of
The following package relocations are provided as assistance in identifying the updates needed in client applications. This list may not be exhaustive.
ratpack.config→ moved to
ratpack.func→ moved to
Breaking Required Version Updates
A number of dependencies were updates to their latest versions and support for older versions dropped. This may result in breaking changes to applications builds and tests when using Ratpack 2.0.0-rc-1.
ratpack-gradleupdated to 7.4 and dropped support for running in projects with < Gradle 7.0.
groovyupdated to 3.0.9.
spockupdated to 2.1-groovy-3.0
A number of other core dependencies have been upgraded:
- netty 4.1.48.FINAL → 4.1.73.FINAL
- netty-tcnative 2.0.30.FINAL → 2.0.48.FINAL
- guava 28.2-jre → 31.0.1-jre
- groovy 2.5.4→ 3.0.9
- rxjava2 2.1.2 → 2.2.21
- reactor 3.1.8.RELEASE → 3.4.14
- jackson 2.10.3 → 2.13.1
- dropwizard metrics 4.1.6 → 4.2.8
- pegdown 1.5.0 → 1.6.0
- log4j 2.13.1 → 2.17.1
- newrelic 3.15.0 → 5.13.0
- reactiveStreams 1.0.2 → 1.0.3
- guice 4.1.0 → 5.1.0
- caffeine 2.8.1 → 2.9.3 (the 3.x versions required Java 11)
- retrofit 2.8.1 → 2.9.0
- commons-codec 1.10 → 1.14
- snakeyaml 1.23 → 1.30
- commons-lang3 3.3.2 → 3.12
- springboot 1.3.RELEASE → 2.6.3
- gradle 6.5.1 → 7.4
Breaking Code Changes
@Deprecated methods have been removed from the public API. Client application's will need to updated accordingly. Refer to the javadoc of your current version to identify the replacement version.
Request.getClientCertificates() method has been removed and replaced with [
Request.getSslSession()](https://ratpack.io/manual/2.0.0-rc-1/api/ratpack/core/http/Request.html#getSslSession()). This method allows a Ratpack server to access all available SSL session information for an incoming request.
ExecController.of](https://ratpack.io/manual/2.0.0-rc-1/api/ratpack/exec/ExecController.html#of(ratpack.func.Action)) method has been added to support initializing Ratpack's Execution and Promise model outside of a Ratpack server. Users that were previously using internal API of
new DefaultExecController() should now migrate to this public API.
The Ratpack server can now be configured to handle multiple SSL server certificates using SNI. This may require changes to an application's configuration if configuring SSL. See the SSL Configuration docs to more details.
There are also a few other new convenience methods added to support easier development and testing of Ratpack applications. Thanks to all who contributed.
We hope you enjoy Ratpack 2.0-rc-1 and open issues for any regression that are discovered when migrating applications.
Pull Requests (20)
-  - Upgrade SpringBoot to 2.1.3 (beckje01)
-  - Remove ratpack-pac4j (michaelschlies)
-  - Add support for binary websocket frames (marcphilipp)
-  - Collapse ratpack-base into ratpack-exec and export single package (johnrengelman)
-  - Collapse ratpack-core packages into ratpack.core (johnrengelman)
-  - Remove modules (johnrengelman)
-  - migrate to io.lettuce package, upgrade rxjava and reactor to match (johnrengelman)
-  - Caching CachingUpstream to do tail recursion to avoid stack overflows (johnrengelman)
-  - Remove deprecated methods and classes (johnrengelman)
-  - Ratpack-Config and Ratpack-Func modules (johnrengelman)
-  - Dependency updates (johnrengelman)
-  - Update manual for Gradle configuration names that cause errors in Gradle 7 (runtime, etc.) (davidmc24)
-  - Add takeWhile to Streams and TransformablePublisher (leonard84)
-  - Add SNI support for server and httpClient. (johnrengelman)
-  - Capture NotSslRecordExceptions and log warning (johnrengelman)
-  - Add public API for ExecController. (johnrengelman)
-  - Replace Request.getClientCertificate() with Request.getSslSession(). (johnrengelman)
-  - Improve Gradle build cacheability (jprinet)
-  - Groovy 3 (johnrengelman)
-  - Update Gradle Enterprise plugins to latest (jprinet)
Resolved Issues (16)
-  - Java 9 support
-  - Ratpack unusable in modular JDK9 applications due to package splits
-  - Run CI builds against Java 9
-  - HttpClient connection pooling does not set Connection header
-  - Create ratpack-config module
-  - Remove obsolete modules
-  - RemoteControl library does not support Java 9+
-  - Update lettuce dependency in ratpack-session-redis to io.lettuce group
-  - Update Guice version
-  - Gradle plugin expects server instances to be implementation type
-  - Supporting JDK 15
-  - Update to Guice 5.0.1
-  - Migrate from javax.security.cert to java.security.cert
-  - Groovy v3 compatbility
-  - Support for Server Name Indication (TLS) on the server
-  - Runtime issues while running ratpack on jdk17 and guice-5.1.10 with certificates based request