Comments (3)
📢 Reactor 2022.0 to stay at Reactor 3 generation level
After much debate, prioritizing the topics we most want to see for the next 2022.0 train,
taking into account the feedback from our community and evaluating the risk/benefits of a new architecture / a new Java baseline,
we've finally reached a decision for the next version of Reactor.
The 2022.0
release train line will continue with the same Reactor 3 architecture and Java baseline.
What it means for Reactor-Core and Reactor-Netty
As such, Reactor-Core will continue the 3.x line with a 3.5.0.
Reactor-Netty will however split into two stacks: one for Netty 4, continuing the 1.x line with a 1.1.0, and one for Netty 5.
The later stack will likely be separate modules, with their own versioning.
To be perfectly clear: the Java baseline for the 2022.0 train will still be Java 8.
The only exception is Reactor-Netty for Netty5, which will require Java 17.
This release train line will focus on:
- offering a Netty 5 stack
- improving performance and internal RS optimizations
- integrating efforts around observability
- improving the user experience when mixing imperative and reactive code (particularly with thread locals)
Looking ahead, past Java 8
As we cannot stay on Java 8 forever, the team thinks there should be at least a tentative plan for upgrading.
We expect a discussion around Java baseline upgrade should occur again as we get closer to the next LTS, Java 21, in parallel to the present continuation of Reactor 3 generation.
This might be pushed a little if we foresee a subsequent Java version is likely to drive much more adoption than Java 21.
This gives our users and ecosystem outside of Spring an additional 2 years to plan around this Java upgrade.
For core, it would represent a 4.0.0.
Note that it might also be an opportunity for much deeper API and architectural changes, representing a new generation of Reactor, but that decision will come much later.
from reactor.
In terms of smaller scale change. I always thought that RxJava observable types described better the semantics of the stream.
- A
Completable
will either complete or error. - A
Maybe
will either return something or not then complete, or error. - A
Single
will either return something then complete, or error.
These types immediately describe the method, valid operations are limited by the time type system. While a Mono
always requires some inspection to get the stream semantics, and eventually requires to apply defensive technics.
I understand this significantly expand the API surface, for integrators as well, yet I'd like to believe the safety of these types outweigh this cost.
from reactor.
Thank you for taking community feedback and making this choice. I know it would not have been an easy decision, or the 'fun' decision, but from a community support standpoint I believe you've absolutely made the best call. Thank you.
from reactor.
Related Issues (20)
- Allow signed releases to Artifactory from GitHub Actions HOT 4
- Remove explicit occurrences of jcenter from build HOT 2
- Release: move tagging step at the end
- Use Spotless plugin to help enforce basic formatting / license HOT 3
- Use Spotless plugin to enforce and update copyright headers HOT 1
- [Reactor Gen4] Discussing switching to a JDK 17 baseline HOT 41
- [Reactor Gen4] Ensuring Reactor 3 can run along Reactor 4 HOT 13
- Use Gradle 7.3 HOT 1
- Reproducible Builds
- Remove the Reactive Streams Commons from README.md
- Is there any connection between org.projectreactor:reactor-core and io.projectreactor:reactor-core ? HOT 2
- Incompatible reactor-kotlin-extensions used in 2020.0.x BOM HOT 1
- Add new module reactor-core-micrometer to 2022.0.0-M3 BOM
- No dependency management for `reactor-tools` with classifier `original` HOT 1
- Builds with japicmp should set onlyModified = true / onBinaryIncompatibleModified = false
- Update GHA workflows to avoid warnings around output APIs HOT 1
- Did we have some tools like Java-profilers for perfomance or cost analyzing?
- Consider enabling discussions tab on GitHub
- reactor-tools original classifier should also be part of the BOM HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from reactor.