← All reportsPublic report

reactivex/rxjava

RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.

48k stars Java View on GitHubprofiled 11d ago
Try GitZoid
46PRs this week
6Contributors
0Deps scanned
0Issues found
01 · Repo overview

How rxjava is put together

RxJava is a pure-Java library implementing Reactive Extensions for the JVM: a fluent, immutable operator API for composing asynchronous event streams built on java.util.concurrent.Flow (Reactive Streams). The codebase is organized as a single Java library module (io.reactivex.rxjava4) with public API packages (core, schedulers, subjects, processors, parallel, disposables, functions, plugins, exceptions) and implementation details hidden under internal packages excluded from javadoc and OSGi export. Data flows through base types Flowable (backpressured), Observable, Single, Maybe, Completable, and the new virtual-thread-based Streamable, assembled at assembly time and executed at subscription/runtime time via Schedulers. Build is Gradle-based producing a multi-release JPMS/OSGi jar published to Maven Central.

Languages

Java

Frameworks

Reactive Streams (java.util.concurrent.Flow)OpenJDK JMHJUnit JupiterTestNGMockitoCheckstyleJaCoCobnd (OSGi bundle builder)

Infrastructure

GitHub Actions CI (Snapshot workflow badge)Codecov coverage reportingMaven Central publishing (com.vanniktech.maven.publish)Gradle wrapperJava toolchain 26 (experimental override via JDK_EXPERIMENTAL env var)Multi-release jar (META-INF/versions/9 module-info)

Major components

core (io.reactivex.rxjava4.core)

Defines the public reactive base types (Flowable, Observable, Single, Maybe, Completable, Streamable), their observers/subscribers/emitters, converters, operators, transformers, Scheduler abstraction, and Connectable/Grouped variants.

disposables

Provides the Disposable contract and implementations (CompositeDisposable, SerialDisposable, ActionDisposable, FutureDisposable, etc.) for cancellation and resource lifecycle management.

functions

Supplies the functional interface vocabulary (Function1-9, Consumer, BiConsumer, Predicate, Action, Cancellable) used by all operators.

exceptions

Defines the error protocol types such as CompositeException, UndeliverableException, MissingBackpressureException, ProtocolViolationException, and QueueOverflowException.

annotations

Metadata annotations (@Beta, @Experimental, @SchedulerSupport, @BackpressureSupport, @NonNull/@Nullable, @CheckReturnValue) documenting operator semantics for users and static analysis.

parallel / streamable areas

Parallel flow processing support plus the new Streamable type family (StreamProcessor, StreamSink, Streamer, VirtualEmitter/VirtualGenerator) built on virtual threads and CompletionStage state machines.

module & packaging (src/main/module, bnd bundle task)

JPMS module descriptor exporting the public API packages while requiring only java.management, plus the bnd Bundle task producing an OSGi multi-release jar excluding internal packages.

jmh benchmarks (src/jmh)

JMH performance benchmarks covering flatMap/concatMap/switchMap across all reactive types, blocking operators, memory, and Streamable operations.

The last few weeks of RxJava development focused on hardening the upcoming 4.x release: fixing memory leaks and resource-cleanup bugs in caching and streaming components, plus a security fix for a privilege-escalation risk in a GitHub workflow. Alongside these fixes, the team modernized project infrastructure by upgrading Gradle, GitHub Actions, and test dependencies, improving documentation, and reorganizing flaky tests.

Week by week

2026-08-24A quiet maintenance week focused on keeping build tools and security scanners up to date.latest2 changes

Chore

Build tooling upgraded

The code-packaging tool (bnd) was bumped to 7.4.0 and Gradle to 9.7.1 to keep builds current.

Chore

Security scanner updated

GitHub's CodeQL security-scanning action was refreshed to its latest version.

2026-08-17New annotation validation arrived alongside documentation updates and dependency bumps.4 changes

Feature

Scheduler annotation validator

A new validator checks that annotations describing which schedulers operators use are correct, catching mistakes early.

Fix

Fixed take() scheduler annotation

Corrected an incorrect scheduler label on the take operator so it matches actual behavior.

Docs

Getting Started docs refreshed

Updated the 4.x Getting Started guide to reflect the latest state of the library.

Chore

Dependency updates

Guava was upgraded to 33.7.1-jre and the CodeQL action refreshed.

2026-08-10Resource-leak fixes took center stage, with cache cleanup and stream shutdown improvements.4 changes

Fix

cache() no longer holds onto consumers

Fixed a race where cancelling a subscription could leave cached data holding references longer than needed, wasting memory.

Fix

timer cleans up after itself

Streamable.timer now shuts down its executor/scheduler when finished instead of leaving resources running.

Docs

Security policy clarified

Added reporting guidelines so people know how to responsibly report vulnerabilities.

Chore

Test and build dependencies bumped

JUnit Jupiter moved to 6.1.3 and the Gradle wrapper to 9.7.0.

2026-08-03A busy week that fixed a privilege-escalation vulnerability in CI automation and shipped several correctness fixes plus heavy housekeeping.6 changes

Fix

Security vulnerability patched in CI

Closed a hole in the 'entropy scan' workflow that could have let untrusted pull-request code run with elevated permissions or spam comments.

Fix

fromStream now closes streams

Streamable.fromStream previously left opened Streams unclosed; it now properly releases them.

Fix

Flaky test stabilized

Made DispatchStreamProcessorTest.raceToStream less prone to random failures.

Refactor

Race-condition tests isolated

Moved more TestHelper.race tests into @Isolated classes (batch 2) so they don't interfere with each other.

Chore

CI actions pinned and upgraded

All unpinned GitHub Actions were pinned to exact versions, and upload-artifact, download-artifact, cache, github-script, and setup-java were all bumped.

Docs

Templates and README overhauled

README updated for recent changes/removals, issue templates migrated to the newer GitHub format, and the pull request template revised for clarity.

2026-07-27Performance work on Streamable landed together with a garbage-collection fix and contributor-guideline updates.5 changes

Refactor

Streamable optimizations

A round of performance improvements made the new Streamable API faster and leaner.

Fix

FlowableCache GC issue fixed

Resolved a problem where FlowableCache could prevent objects from being garbage-collected when they should be.

Chore

More race tests isolated

Flowable flatMap/mergeWith race tests were moved into @Isolated classes to reduce cross-test interference.

Chore

JDK 28 support added

The Gradle build workflow now supports testing on JDK 28, and the secret-scanning action was bumped.

Docs

Contributing guidelines revised

CONTRIBUTING.md was updated with clearer branch-targeting rules and guidelines around AI-assisted contributions.

03 · Security check

Dependencies and code review

0 dependencies scanned

Dependency advisories

Security Watch

No known advisories across 0 scanned dependencies.

No known advisories in the scanned dependencies.

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required