# cysharp/r3

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/cysharp-r3).**

3,616 stars · 160 forks · C# · mit

## Links

- GitHub: https://github.com/Cysharp/R3
- awesome-repositories: https://awesome-repositories.com/repository/cysharp-r3.md

## Description

R3 is a reactive extensions library and asynchronous data pipeline framework. It provides a system for composing asynchronous data streams, managing reactive state, and coordinating event sequences using observable patterns.

The project distinguishes itself with a deterministic testing toolkit that mocks time and frame updates to ensure reproducible unit tests for asynchronous logic. It also includes observability tools for tracking active subscriptions and generating stack traces to identify memory leaks, alongside centralized exception routing for pipeline recovery.

The framework covers a broad surface of reactive capabilities, including stream composition, pipeline transformations, and thread-aware scheduling. It provides utilities to convert standard events, property changes, and game engine signals into unified reactive streams, and includes data binding logic to link reactive properties to command execution.

## Tags

### Software Engineering & Architecture

- [Observable Streams](https://awesome-repositories.com/f/software-engineering-architecture/flow-modularization/modular-flow-composition/observable-streams.md) — Provides core architectural patterns for modeling and composing asynchronous, push-based observable data streams.
- [Reactive Stream Architectures](https://awesome-repositories.com/f/software-engineering-architecture/reactive-stream-architectures.md) — Provides an architectural framework for composing and transforming asynchronous event sequences into data pipelines. ([source](https://cdn.jsdelivr.net/gh/cysharp/r3@main/README.md))
- [Property-to-Stream Conversions](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/change-detection/property-change-observers/property-to-stream-conversions.md) — Turns property change notifications into reactive streams to trigger actions whenever model state changes. ([source](https://cdn.jsdelivr.net/gh/cysharp/r3@main/README.md))
- [Async Data Pipeline Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/async-data-pipeline-frameworks.md) — Provides a framework for transforming, filtering and coordinating streams of data across different threading models.
- [UI Thread Schedulers](https://awesome-repositories.com/f/software-engineering-architecture/background-thread-dispatchers/thread-safe-dispatchers/ui-thread-schedulers.md) — Coordinates the delivery of asynchronous data streams specifically to the main UI thread or engine frames.
- [Disposable Observers](https://awesome-repositories.com/f/software-engineering-architecture/observer-patterns/disposable-observers.md) — Implements a hierarchical disposal pattern to automatically release subscriptions and prevent memory leaks.
- [Time and Frame Providers](https://awesome-repositories.com/f/software-engineering-architecture/provider-abstractions/time-and-frame-providers.md) — Decouples time and frame updates through abstract providers to allow deterministic simulation during unit testing.
- [UI Data Binding](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/observer-patterns/ui-data-observers/ui-data-binding.md) — Links reactive properties to command logic to automatically update interface states based on live data changes.
- [Event-to-Observable Conversion](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-event-dispatchers/event-to-observable-conversion.md) — Converts standard event triggers and property changes into observables to simplify complex asynchronous workflows.
- [Exception Handling Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/exception-handling-pipelines.md) — Captures unexpected errors in the data pipeline and routes them to a specified handler for logging and recovery. ([source](https://cdn.jsdelivr.net/gh/cysharp/r3@main/README.md))
- [Pipeline Exception Routing](https://awesome-repositories.com/f/software-engineering-architecture/exception-traceback-capture/process-exception-interception/pipeline-exception-routing.md) — Provides centralized exception routing to intercept and recover from unhandled errors within reactive pipelines.
- [Reactive State Management](https://awesome-repositories.com/f/software-engineering-architecture/reactive-state-management.md) — Provides a system for binding properties and events to reactive pipelines to synchronize state and logic.

### Part of an Awesome List

- [Reactive Programming](https://awesome-repositories.com/f/awesome-lists/productivity/reactive-programming.md) — Provides a comprehensive toolkit for building asynchronous data pipelines using reactive programming patterns.

### Data & Databases

- [Event-to-Stream Conversions](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/stream-processing-systems/stream-processing/effect-to-stream-conversion/event-to-stream-conversions.md) — Transforms standard event triggers into reactive streams to compose them with other asynchronous data sequences. ([source](https://cdn.jsdelivr.net/gh/cysharp/r3@main/README.md))

### Game Development

- [Game Engine Event Streams](https://awesome-repositories.com/f/game-development/game-engine-event-streams.md) — Converts engine-specific triggers, physics loops, and frame updates into reactive data streams for game logic coordination. ([source](https://cdn.jsdelivr.net/gh/cysharp/r3@main/README.md))
- [Game State Management](https://awesome-repositories.com/f/game-development/game-state-management.md) — Synchronizes game engine frame updates and physics loops with reactive logic to coordinate in-game behavior.

### Operating Systems & Systems Programming

- [Deterministic Time Simulation](https://awesome-repositories.com/f/operating-systems-systems-programming/system-time-virtualization/virtual-time-schedulers/deterministic-time-simulation.md) — Simulates time passage and frame updates with mock providers to ensure deterministic testing of asynchronous logic.

### Programming Languages & Runtimes

- [Reactive Extensions](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/concurrency-models/reactive-programming/reactive-extensions.md) — Implements a library for composing asynchronous and event-based programs using observable sequences.
- [Task Interoperability](https://awesome-repositories.com/f/programming-languages-runtimes/async-await-flow-control/task-interoperability.md) — Converts single-value asynchronous operations into tasks to ensure interoperability with standard async-await patterns. ([source](https://cdn.jsdelivr.net/gh/cysharp/r3@main/README.md))

### Security & Cryptography

- [Deterministic Testing Toolkits](https://awesome-repositories.com/f/security-cryptography/clock-abstracted-time-validation/deterministic-testing-toolkits.md) — Ships a toolkit for mocking time and frames to perform reproducible unit tests on asynchronous logic.
- [Data Transformation Pipelines](https://awesome-repositories.com/f/security-cryptography/content-filtering/pipeline-filters/data-transformation-pipelines.md) — Implements linear sequences of pure functions to transform, filter, and combine asynchronous event sequences.

### System Administration & Monitoring

- [Subscription Lifecycle Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/task-status-monitors/stream-status-monitors/subscription-lifecycle-monitoring.md) — Monitors active data streams and generates stack traces to identify and resolve memory leaks. ([source](https://cdn.jsdelivr.net/gh/cysharp/r3@main/README.md))

### Testing & Quality Assurance

- [Memory Leak Detection](https://awesome-repositories.com/f/testing-quality-assurance/debugging-diagnostics/memory-leak-detection.md) — Tracks active data subscriptions and generates stack traces to identify and resolve memory leaks in event pipelines.
- [Virtual Time Testing](https://awesome-repositories.com/f/testing-quality-assurance/virtual-time-testing.md) — Provides testing utilities that decouple event emission and frame updates from the system clock using mock providers. ([source](https://cdn.jsdelivr.net/gh/cysharp/r3@main/README.md))

### User Interface & Experience

- [UI Framework Synchronization](https://awesome-repositories.com/f/user-interface-experience/ui-architecture/reactivity-systems/external-state-integrations/ui-framework-synchronization.md) — Synchronizes timing and frame updates with the host user interface thread to prevent rendering glitches. ([source](https://cdn.jsdelivr.net/gh/cysharp/r3@main/README.md))
