github reactor/reactor-core v3.4.0-RC1

latest releases: v3.8.5, v3.7.18, v3.8.4...
pre-release5 years ago

Reactor-Core 3.4.0.-RC1 is part of 2020.0.0-RC1 Release Train (codename Europium).

This first Release Candidate brings further changes to the Sinks API introduced in M2

This release note focuses on RC1-specific changes, but RC1 also contains all the changes released in 3.2.20.RELEASE and 3.3.10.RELEASE.

⚠️ Update considerations and deprecations

Processors and sinks update considerations

The most impactful change is the switch in focus from an API that emulates Subscriber (with void return types) to a lower level API that can consistently provide immediate feedback to a signalling attempt via the returned Emission. Now the later is prefixed with tryEmit. An emit API is offered as an initial problematic attempt at a higher level abstraction, but it had to be @Deprecated. See #2374 for potential ways to rewrite code that used to call onNext/next/emitNext-without-checking-returned-Emission in previous versions.

@simonbasle is also preparing a retrospective write up of all the changes through which the sinks API went in #2382.

emitXxx replaced with tryEmitXxx

  • See #2319 : Split emitXxx/tryEmitXxx, more consistent use of hooks.

new Emission.FAIL_xxx error codes

  • Emission.FAIL_NON_SERIALIZED (see #2342 Failing fast on non-serialized access to Sink)
  • Emission.FAIL_ZERO_SUBSCRIBER (see #2338 Add new Emission FAIL_ZERO_SUBSCRIBER error code)

"safe" onBackpressureError() not exposed anymore

  • See #2375 : Remove Sinks.many().multicast().onBackpressureError().

emitXxx part of the API to be removed / heavily reworked

  • See #2374 : Deprecate Sinks emit{Next,Error,Complete} methods.

🐞 Bug fixes

  • These are incremental improvements over the tryEmitNext API (previously emitNext in M2):
    • Handle ASYNC fusion in EmitterProcessor#onNext rather than emitNext (#2316)
    • #2330 Ensure we never throw from tryEmitNext (#2336)
    • #2342 Failing fast on non-serialized access to Sink (#2365)

✨ New features and improvements

  • #2312 Add user provided state to Retry
  • #2325 Add method to snapshot factory+global schedulers, used by VTS (#2326)
  • #2328 Make ParallelFlux.subscribe(array) public to allow delegation
  • Sinks related improvements over M2:
    • #2329 Improve Emission API: polish status helpers, add orThrow()
    • #2338 Add new Emission FAIL_ZERO_SUBSCRIBER error code
    • Add onBackpressureError() variant of the unicast Sink (#2347, #2367)
  • [Polish] Add inners[] param to Operators dropMulticast private methods

📖 Documentation, Tests and Build

  • [doc] As the custom javadoc tags are not displayed in all IDEs, turned discard/errorMode javadoc tags into plain paragraphs (#2136)
  • [build] #2353 Use api for reactive streams api dependency import
  • several typos and inconsistencies fixed by various contributors
  • [doc] #2317 Add examples to deprecation notes of processors
  • [test] Avoid potential infinite busy looping in tests
  • [doc] Polish javadoc of the multicast onBackpressureBuffer Sinks (#2373)
  • [doc] Polish variable names in snippet (#2351)

👍 Thanks to the following contributors that also participated to this release

@hamidshahid, @steppedreckoner

Don't miss a new reactor-core release

NewReleases is sending notifications on new releases.