For control flow structures, the strongest matches are statelyai/xstate (XState is a finite state machine and statechart framework), reactivex/rxjava (RxJava is a reactive stream processing framework that provides) and vavr-io/vavr (Vavr is a functional library for Java providing immutable). kotlin/kotlinx.coroutines and jakesgordon/javascript-state-machine round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Explore the best open-source control flow engines on GitHub, ranked by stars and activity. Compare top alternatives and pick the right one.
XState is a statechart logic library and finite state machine framework used to model complex application behavior. It provides a system for defining states, events, and transitions to govern how a system responds to inputs through a formal schema. The project includes a visual state machine editor that allows for the design of state machine diagrams which automatically generate the corresponding logic and code. It implements an actor model to manage independent concurrent entities that communicate via asynchronous events to coordinate behavioral flows. The framework covers event-driven stat
XState is a finite state machine and statechart framework that uses an actor model for asynchronous workflows and complex application logic coordination, directly matching your search for advanced control flow structures.
RxJava is a reactive stream processing framework and JVM reactive extensions library. It serves as an asynchronous dataflow orchestrator used to compose event-based programs by transforming, combining, and consuming real-time data flows on the Java Virtual Machine. The project distinguishes itself through integrated backpressure flow control, which manages the emission rate between producers and consumers to prevent memory exhaustion. It further provides mechanisms for concurrent thread management and parallel data processing to offload blocking operations and maintain application responsiven
RxJava is a reactive stream processing framework that provides asynchronous dataflow orchestration, stream processing, and concurrent task execution primitives for the JVM, fitting the core control flow and asynchronous requirements.
Vavr is a functional library for Java providing immutable collections, pattern matching, and monadic error handling, which fits the advanced control flow and functional primitives requested by this search.
Kotlinx.coroutines is a library for managing non-blocking background tasks and structured concurrency within the Kotlin programming language. It provides a framework for executing concurrent operations and synchronizing shared state, replacing traditional thread management and complex callback chains with lightweight primitives. The library utilizes a structured concurrency hierarchy to organize hierarchical background tasks, ensuring that lifecycle management, cancellation, and timeout handling propagate automatically to prevent resource leaks. It employs continuation-passing style transform
Kotlinx.coroutines is a robust asynchronous execution and stream processing library for Kotlin that covers reactive streams and non-blocking background tasks, though it focuses on coroutines rather than traditional finite state machines or pattern matching.
This library is a finite state machine framework for JavaScript designed to manage application states and valid transitions. It provides a system for executing state changes with lifecycle hooks, conditional guards, and transition cancellation. The project is distinguished by its ability to inject state machine logic and transition capabilities directly into existing JavaScript class instances or objects. It also includes a visualization tool that exports state configurations into Graphviz DOT language for auditing system logic. The framework covers asynchronous transition execution and paus
This repository provides a JavaScript finite state machine framework with lifecycle hooks, conditional guards, and asynchronous transition control, though it lacks broader pipeline processing and reactive stream features.
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
R3 is a reactive extensions library and asynchronous data pipeline framework that handles event streams, data transformation, and async workflows, fitting the category well despite omitting pattern matching.
Returns is a functional programming library for Python that provides type-safe containers for managing state, error handling, and optionality. It serves as a monadic container library and a type-safe error handling framework, replacing traditional try-catch blocks and null checks with Result and Optional containers to treat exceptions as data. The project is distinguished by its use of a specialized Mypy static analysis plugin to validate functional pipelines and emulate higher kinded types. It provides mechanisms for isolating side effects through IO containers and offers a framework for typ
Returns is a functional programming library for Python providing type-safe containers for error handling and state management, aligning well with the search for advanced control flow and pipeline processing utilities.
language-ext is a functional programming framework for C# that provides a suite of immutable data structures and monadic types. It enables the implementation of pure functional programming patterns, utilizing containers to manage side effects, optional values, and error handling. The library is distinguished by its advanced concurrency and state management tools, including a software transactional memory system and lock-free atomic references. It also provides specialized utilities for distributed systems, such as vector clocks for causality tracking and deterministic data conflict resolution
Language-ext provides functional concurrency, error handling, and asynchronous execution primitives for C#, serving as a robust framework for advanced control flow and state management despite lacking a dedicated finite state machine engine.
Inngest is a durable execution framework and event-driven automation engine designed to orchestrate background workflows. It enables developers to build resilient, stateful processes by memoizing function steps, ensuring that long-running tasks can automatically resume from the last successful operation after failures, timeouts, or infrastructure restarts. The platform distinguishes itself through its event-driven architecture, which uses a schema-validated bus to trigger functions and coordinate complex, multi-step logic. It employs an onion-model middleware approach for cross-cutting concer
Inngest is an event-driven workflow and durable execution framework that manages stateful, asynchronous background processes with robust error handling, though it is geared towards cloud-based orchestration rather than in-code state machines or pattern matching.
Workflow is a cross-platform architectural framework for building deterministic unidirectional state machines and user interfaces in native mobile applications. Available as libraries for both Kotlin and Swift, the framework manages application state and screen navigation using composable state machines that direct data in a single direction from source to interface while routing user actions back to business logic. The architecture models screen navigation as nested presenter states and recursive component hierarchies rather than separate routing logic. Complex application features are buil
This library provides composable state machines in Swift and Kotlin for managing complex application logic, fitting the core category well despite leaning toward UI-driven workflows rather than general async processing.
Workflow-kotlin is a cross-platform state management and UI binding framework for Kotlin that models application navigation, background tasks, and screen rendering through composable, hierarchical state machines. The architecture drives application behavior by flowing immutable data downward to declarative user interfaces and routing user interactions upward through named event handlers. The library includes multiplatform target support for compiling shared code across operating systems, along with asynchronous operation execution that handles background tasks safely outside render passes. I
This library provides composable state machines and reactive UI integration for Kotlin and Swift, fitting the search for advanced control flow and state management tools.
The .NET Reactive Extensions Library is a framework for composing, querying, and transforming asynchronous data streams. It provides a non-blocking implementation of the observer pattern to manage notifications and data flows between producers and consumers, functioning as an event stream processing library. The project applies LINQ-style querying and filtering operators to asynchronous sequences. This allows for the handling of event-driven programming patterns by utilizing composable operators to process notifications as they occur. The library covers asynchronous data streaming and non-bl
It is a well-known reactive streams and asynchronous data flow framework that provides event-driven processing primitives for the specified ecosystem, though it lacks built-in finite state machines and pattern matching.
Rx.NET is a reactive programming framework and library for the .NET ecosystem used to compose asynchronous and event-based programs. It provides an observable data stream API that treats live sequences of information as collections, allowing developers to coordinate asynchronous event workflows using a declarative syntax. The project functions as an extension of language integrated query patterns to asynchronous streams. This allows for the filtering and transformation of asynchronous notifications and event sequences through the application of query operators. The framework covers asynchron
Rx.NET is a reactive programming framework that provides observable data streams and asynchronous event workflow coordination, fitting the need for reactive stream processing and asynchronous execution primitives.
This project is a reactive state management library designed for Angular applications. It provides a centralized store that maintains a single immutable source of truth, ensuring that all application data transitions follow a predictable, unidirectional flow. The library implements the Redux pattern, utilizing discrete actions and pure functions to trigger state updates. It leverages observable streams to propagate these changes, allowing user interface components to bind reactively to specific slices of data. By isolating asynchronous operations and external interactions into independent act
This repository is a reactive state management library for Angular that implements unidirectional data flow and observable streams, fitting the search for advanced state management and asynchronous execution primitives despite being tailored to a specific framework.
| Repository | Stars | Sprache | Lizenz | Letzter Push |
|---|---|---|---|---|
| statelyai/xstate | 29.7K | TypeScript | MIT | |
| reactivex/rxjava | 48.2K | Java | Apache-2.0 | |
| vavr-io/vavr | 6.2K | Java | Apache-2.0 | |
| kotlin/kotlinx.coroutines | 13.7K | Kotlin | apache-2.0 | |
| jakesgordon/javascript-state-machine | 8.8K | JavaScript | MIT | |
| cysharp/r3 | 3.6K | C# | mit | |
| dry-python/returns | 4.3K | Python | BSD-2-Clause | |
| louthy/language-ext | 7.1K | C# | MIT | |
| inngest/inngest | 5.5K | Go | NOASSERTION | |
| square/workflow | 1.2K | Shell | Apache-2.0 |