What’s New

RxJava

Languages & Runtimes

RxJava release notes.

Latest v4.0.0-alpha-20 · by RxJavaWebsiteReactiveX/RxJava

Changelog

v4.0.0-alpha-20

Added
  • Streamable operator with blockingLast, ignoreElements, repeat, repeatWhen, retry, and retryWhen support
Changed
  • Optimized range and collect internals with improved Streamable implementation
  • Optimized several operator internals for Streamable
  • Optimized mapOptional operator performance
  • Optimized filter, map fusion, and lastOrError for Streamable
  • Optimized skip operations for Streamable
  • Optimized flattenAsFlowable with deferred evaluation
  • Optimized collect slow path and concatIterable
  • Reduced whenComplete usage in collect operation
What's Changed
Implementation
Dependabot
Streamable Scrabble

Ongoing measure/optimization. Managed to shave over half the time off (but some came from using better collector implementations for sure).

:computer: i9 275HX, 32GB LPDDR5 6400MT CL52, Windows 25H2, JDK 26.0.1

StepTime (ms)Improvementvs Baseline
Baseline42,5119--
Avoid whenComplete usage in collect37,566-11,65%-
IndexableSource in collect35,815-4,66%-15,77%
concatIterable optimizations31,971-10,73%-24,81%
map fusions30,623-4,22%-27,98%
flattenAsFlowable deferred opt27,999-8,57%-34,15%
MutableLong in the bench26,159-6,57%-38,48%
lastOrError opt25,164-3,80%-40,82%
custom Collector summers24,885-1,11%-41,47%
skip optimizations24,791-0,38%-41,69%
filter opt, filter+map fusion, lastOrError opt23,566-4,94%-44,58%
slow path collect optimization22,392-4,98%-47,34%
CharStreamer EnumerableSource marker21,843-2,45%-48,63%
custom max collector20,369-6,75%-52,09%

Versus the other techs

TechTime in milliseconds
For Loop JDK 262,125
IObservable synchronous7,917
IEnumerable port8,225
Ix 1.0.08,463
RxJava Observable 3.1.1210,119
RxJava Observable 4a19 :arrow_backward:10,484
RxJava Observable 2.2.2110,612
RxJava Flowable 4a1911,424
RxJava Flowable 3.1.1212,499
RxJava Flowable 2.2.2113,849
Reactive4Java 0.98.113,086
Guava 33.6.012,564
Reactor 3.8.614,158
CyclopsReactOpt17,273
:new: RxJava Streamable 4a20 :arrow_backward:20,369
JOOL 0.9.1538,876
RxJava Streamable 4a19 :arrow_backward:42,512

Full Changelog: https://github.com/ReactiveX/RxJava/compare/v4.0.0-alpha-19...v4.0.0-alpha-20

v4.0.0-alpha-19

Added
  • Add Streamable.concat, using, and test fixes
  • Add native take implementation for Streamable
  • Add Streamable.blockingFirst, blockingLast, blockingLastOrError, skip, and Single.flattenAsStreamable methods
Changed
  • Replace Streamable.stream() DisposableContainer with StreamerCancellation
  • Separate streamer cancellation from DisposableContainer in Streamable

What's Changed

API
Dependabot
Misc

Full Changelog: https://github.com/ReactiveX/RxJava/compare/v4.0.0-alpha-18...v4.0.0-alpha-19

v4.0.0-alpha-18

Added
  • Streamable API with range, fromArray, take, error, defer operators
  • Streamable API with fromIterable, fromStream, hide, never operators
  • Streamable API with map, filter, flatMap implementations
  • Streamable operators doOnNext, intercept, lift, to
  • Streamable API with timer and interval operators
  • Streamable API with takeWhile, toObservable, and toStreamable conversion methods
  • Streamable API with takeUntil and groupBy operators
  • Streamable API with delay, timeout, zip, onErrorResumeNext operators
  • DispatchStreamProcessor and other Streamable improvements
  • Streamable operators doOnError and forEach(StreamSink)
  • VirtualSchedulerTests extending AbstractSchedulerConcurrencyTests
Changed
  • Streamable and Streamer API redesign, dropping next and finish arguments
  • Convert test suite from JUnit 4 to JUnit 6
Fixed
  • SchedulerToExecutorService invokeAll and invokeAny implementation
Removed
  • Pioneer-RetryTest
API
Test
Fixes
Cleanup
Dependabot
Documentation

Full Changelog: https://github.com/ReactiveX/RxJava/compare/v4.0.0-alpha-17...v4.0.0-alpha-18

v4.0.0-alpha-17

Changed
  • Standardize config records into 3 main variants
Removed
  • Reduce Flowable API by removing concat*, merge, concatMap*, and flatMap* variants
  • Remove remaining Flowable operators and related APIs
What's Changed
API reductions
Dependabot

Full Changelog: https://github.com/ReactiveX/RxJava/compare/v4.0.0-alpha-16...v4.0.0-alpha-17

v4.0.0-alpha-16

Fixed
  • NullPointerException in AppendOnlyLinkedArrayList.forEachWhile on a full last chunk
Removed
  • Single.concat and Single.concatEager static methods
  • Single.merge static method
  • Maybe.concat, Maybe.concatEager, and Maybe.merge static methods
  • Observable.combineLatest static methods
  • Observable.concat static methods
  • Observable.merge static methods
  • Observable.concatEager static methods
  • Observable.sequenceEqual, Observable.switchOnNext, and Observable.zip static methods
  • Observable.concatArray, Observable.concatArrayEager, and related concat variants
  • Observable.flatMap*, Observable.groupBy, and Observable.observeOn overloads
  • Observable.switchMap static method
  • Disposable no longer implements AutoCloseable
What's Changed
API reductions
Other API changes
Cleanup
Bugfixes
  • Fix NullPointerException in AppendOnlyLinkedArrayList.forEachWhile on a full last chunk by @vasiliy-mikhailov in https://github.com/ReactiveX/RxJava/pull/8174
    • Note on the contributor: Banned, AI Slop, Undisclosed AI Use, Had to Manually Correct PR
    • Contributing.md clearly states we (I) won't argue with your AI to fix the PR style or content or whatever.
Dependabot
New Contributors

Full Changelog: https://github.com/ReactiveX/RxJava/compare/v4.0.0-alpha-15...v4.0.0-alpha-16

v4.0.0-alpha-15

Changed
  • Turn Completable concatX and mergeX into config-based API
Fixed
  • Fix IllegalStateException in SchedulerToExecutorService.invokeAny
What's Changed
Fixes & Enhancements
Cleanup
Chores

None

Full Changelog: https://github.com/ReactiveX/RxJava/compare/v4.0.0-alpha-14...v4.0.0-alpha-15

v4.0.0-alpha-14

Added
  • Add task coordination primitives and implement a basic concat() operator
  • Add +shared, +parallel, +blocking Scheduler
  • Detect un-awaited CompletionStageDisposables during tests
Fixed
  • Fix Scheduler.toExecutorService() NullPointerException from null worker store
  • Fix Scheduler.toExecutorService(boolean) logic
Removed
  • Remove Scheduler.when due to maintenance burden
What's Changed
Chores
Cleanup
New Contributors

Full Changelog: https://github.com/ReactiveX/RxJava/compare/v4.0.0-alpha-13...v4.0.0-alpha-14

v4.0.0-alpha-13

Added
  • Add optional build and test for future JDKs
Changed
  • Enhance Streamable/Streamer and DisposableContainer APIs
Fixed
  • Isolate windowUnsubscribeNonOverlappingAsyncSource to JUnit 5
What's Changed
New Contributors

Full Changelog: https://github.com/ReactiveX/RxJava/compare/v4.0.0-alpha-11...v4.0.0-alpha-13