Reactor Core v3.4.0-RC1 Release Notes

Release Date: 2020-09-15 // over 3 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