For concurrency engineering patterns, the strongest matches are actix/actix (Actix is an actor-based concurrency framework for Rust that), kotlin/kotlinx.coroutines (Kotlinx) and lunatic-solutions/lunatic (Lunatic is a WebAssembly-based actor runtime that implements lightweight). celluloid/celluloid and puniverse/quasar round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Explore top open-source concurrency design patterns on GitHub, ranked by stars and activity, to compare and pick the right one.
Actix is a Rust actor framework and concurrent programming toolkit designed for building applications that manage state through an asynchronous messaging system. It provides a model where independent actors serve as autonomous units of state and logic, communicating via strongly typed messages sent to unique addresses. The framework distinguishes itself by isolating state within these actors, allowing internal data to be mutated safely during message handling without the use of locks or mutexes. It employs an asynchronous mailbox system to buffer incoming requests and uses supervision strateg
Actix is an actor-based concurrency framework for Rust that implements the actor model and asynchronous messaging, fitting the requirement for advanced execution models even though it does not cover every requested feature like STM or reactive streams.
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 comprehensive concurrency and async engineering framework that provides green threads, structured concurrency, channel-based communication, and asynchronous streams for the Kotlin language.
Lunatic is a WebAssembly runtime and concurrent process manager that implements an Erlang-inspired model of lightweight concurrency and fault tolerance. It functions as a distributed actor system where isolated processes communicate via message passing across a network of linked nodes. The system utilizes a WebAssembly sandbox environment to isolate memory and restrict system call permissions for each individual process. This capability-based security model ensures that processes are sandboxed to safely execute untrusted code. The platform provides a fault-tolerant supervision tree for hiera
Lunatic is a WebAssembly-based actor runtime that implements lightweight processes, message passing channels, and supervision trees, aligning well with your search for advanced concurrency frameworks.
Celluloid is a concurrent object framework for the Ruby language. It implements the actor model to enable the construction of multithreaded programs where objects communicate through asynchronous message passing to avoid shared state locks. The framework provides a system for managing asynchronous interactions without manual locking or thread management. It utilizes actor-based object orientation to handle parallel execution and non-blocking tasks. The project covers several architecture and capability areas, including mailbox-driven execution, fiber-based task scheduling, and proxy-based me
Celluloid is an actor-model framework for Ruby that provides asynchronous message passing and concurrent object programming, making it a fitting tool for advanced concurrency design despite lacking the full breadth of other concurrency paradigms.
Quasar is a JVM concurrency framework that implements the actor model and a lightweight thread library. It provides isolated execution units that communicate via asynchronous message passing to eliminate shared mutable state. The project distinguishes itself through a distributed actor system capable of operating across multiple cluster nodes with location-transparent registries and actor state migration. It utilizes a work-stealing fiber scheduler to manage millions of lightweight threads, allowing tasks to suspend during non-blocking I/O operations without stalling underlying system threads
Quasar is a JVM concurrency framework that implements the actor model and lightweight fibers, though it lacks built-in software transactional memory and full reactive streams support.
Akka Core is an actor model framework and asynchronous concurrency library used for building scalable and resilient distributed systems. It provides a distributed computing platform and fault tolerant runtime that manages communication and state across networked nodes. The system uses location-transparent messaging and a cluster management system to organize nodes into high-availability architectures. This allows for the creation of elastic clusters that scale resources on demand and coordinate distributed workloads. The platform handles concurrent state management and distributed systems or
Akka Core is a robust actor model framework that provides asynchronous concurrency primitives, location-transparent messaging, and non-blocking event loops for building resilient distributed systems.
Concurrent Ruby is a comprehensive concurrency toolkit for the Ruby language that provides thread-safe data structures, synchronization primitives, and asynchronous execution patterns. It implements core concurrency abstractions including an actor model framework where isolated actors communicate through asynchronous message passing, a future and promise system for composing non-blocking operations, and thread pool executors that manage reusable worker threads for concurrent task execution. The library distinguishes itself through a broad set of coordination mechanisms that go beyond basic th
Concurrent Ruby is a comprehensive concurrency toolkit for the Ruby language that provides thread-safe data structures, synchronization primitives, and asynchronous execution patterns like futures, promises, and an actor model.
Akka is an actor model framework and distributed systems platform used to build concurrent and distributed applications. It provides a toolkit for managing multi-threaded state and behavior through asynchronous message passing, allowing developers to create concurrent applications without manual locks or synchronization. The system functions as a cluster management and event sourcing framework, automating the scaling and coordination of high-availability clusters. It enables the deployment of elastic services that coordinate workloads across multiple network nodes and ensures fault tolerance
Akka is a mature actor-model framework for building concurrent and distributed systems, though it focuses more on distributed actor messaging and clustering than on low-level green threads or software transactional memory.
Akka.NET is an actor model framework used for building concurrent and distributed applications. It functions as a distributed computing platform and state manager that enables isolated actors to communicate via asynchronous message passing, ensuring thread-safe state management without manual locks. The project is distinguished by its decentralized coordination capabilities, including a distributed state manager that uses sharding and dynamic rebalancing to maintain high availability. It incorporates an event sourcing engine that persists state as a sequence of events in an append-only log an
Akka.NET provides a robust actor model framework with asynchronous message passing and reactive stream processing, directly matching your need for advanced concurrent execution models.
Pony is an open-source, actor-model, capabilities-secure, high performance programming language
Pony is an actor-model programming language with built-in asynchronous message passing and work-stealing schedulers, serving as a specialized tool for concurrent engineering though it is a standalone language rather than a standard library or framework.
Tokio is an asynchronous runtime for the Rust programming language, designed to manage and execute concurrent tasks efficiently. It provides a multi-threaded execution environment that schedules lightweight tasks across available processor cores, utilizing a work-stealing scheduler to balance computational load. By employing a poll-based execution model and waker-based notifications, the runtime drives asynchronous operations forward without requiring active polling loops, ensuring efficient resource utilization. The project distinguishes itself through a comprehensive suite of tools for high
Tokio is a foundational asynchronous runtime and concurrency framework for Rust that provides green threads, an async I/O event loop, and scheduling primitives tailored for high-performance concurrent systems.
ReactPHP is an asynchronous runtime and event-driven I/O framework for PHP. It provides an environment for executing concurrent tasks through a central event loop implementation and reactor pattern, allowing applications to handle multiple operations without pausing the main execution thread. The project includes a specialized asynchronous socket library for TCP, UDP, and TLS communication, alongside a non-blocking HTTP server and client for streaming web requests and responses. Its capability surface covers asynchronous control flow via promises and fibers, non-blocking network connectivity
ReactPHP is an asynchronous runtime and event-driven I/O framework that implements non-blocking operations and event loops for PHP, though it lacks actor models or software transactional memory.
coobjc is an Objective-C coroutine library that provides await methods and generators to simplify asynchronous programming in Objective-C and Swift. It enables the implementation of non-blocking workflows to eliminate nested callbacks and thread blocking. The toolkit includes a non-blocking Foundation wrapper to convert synchronous Foundation and UIKit APIs into suspendable operations. It provides a lazy sequence generator for producing values on demand via yield, as well as a channel-based communication tool for exchanging data between concurrent tasks using buffered and unbuffered channels.
This Objective-C and Swift coroutine library provides async/await programming, generator patterns, and channel-based communication to simplify concurrent workflows, though it targets mobile environments rather than general-purpose backend concurrency.
Nano is a distributed application framework designed for building systems using an actor-based messaging model. It functions as a distributed actor framework that decouples components through asynchronous messaging to maintain state isolation across a server cluster. The system acts as a cluster message dispatcher and session-aware request router, tracking client state to route incoming messages to the specific agent holding the session data. It utilizes a distributed agent registry to coordinate the dispatching of messages between multiple application instances acting as agents. The framewo
Nano is a distributed actor-based messaging framework designed for asynchronous communication and clustering, though it is specifically tailored for game server architectures rather than a general-purpose concurrency library.
Reactor is a reactive streams library and framework for building asynchronous data pipelines. It provides a system for coordinating execution contexts via an asynchronous event-loop manager, alongside a set of reactive abstractions for implementing high-performance TCP, UDP, QUIC, and HTTP services. The project includes a specialized testing tool for verifying the timing and order of asynchronous data flows and a bill of materials to synchronize compatible versions of core reactive libraries and networking add-ons. Its capability surface covers non-blocking network services, demand-based bac
Reactor provides a robust reactive streams framework for asynchronous data pipelines and non-blocking network services, fitting the concurrency engineering category well despite lacking actor or transactional memory primitives.
protoactor-go is a framework for building concurrent and distributed systems in Go using the actor model. It provides a distributed actor system that enables isolated entities to communicate via asynchronous messaging and share state across a cluster. The framework implements a multi-language actor protocol, allowing interoperability between actors written in Go, C#, and Java. It further supports a virtual actor implementation, where actors are automatically instantiated across a network based on a unique identity. The system includes a supervision model for managing actor lifecycles and fau
Protoactor-go provides a distributed actor model framework for Go that implements asynchronous messaging and actor-based concurrency, though it lacks some broader async execution features like software transactional memory or reactive streams.
Orleans is a .NET distributed actor framework designed for building scalable, cloud-native applications. It implements a virtual actor model where entities with stable identities manage their own state and lifecycle across a cluster of servers. The framework provides a distributed state management system with ACID transaction support and a distributed pub/sub streaming engine for real-time data processing. It distinguishes itself through location-transparent routing, automatic actor activation and deactivation, and elastic cluster scaling that redistributes workloads during node failures. Th
Orleans is a .NET distributed actor framework that implements a virtual actor model for scalable, concurrent application development, fulfilling the core actor-model requirement even though it is tailored for distributed systems rather than general-purpose local concurrency.
Swoole is a coroutine-based concurrency library and IO framework for PHP. It provides a system for building high-performance network servers and applications by bringing asynchronous, event-driven, and coroutine-based concurrency to the PHP runtime. The project distinguishes itself by implementing user-space coroutine scheduling and non-blocking IO interception, which transforms standard blocking network and file operations into asynchronous actions. It further enables high-speed data exchange across multiple PHP processes through shared memory management and specialized data structures. The
Swoole is a coroutine-based concurrency and I/O framework that brings asynchronous event-driven execution and user-space green threads to the PHP runtime, though it lacks features like software transactional memory.
ZIO is a functional effect system for the JVM that models asynchronous and concurrent programs as pure, composable values with typed error handling and dependency injection. Its core identity is built on fiber-based concurrency, where lightweight, non-blocking fibers execute millions of concurrent tasks with structured lifecycle management, and a dual-channel error model that separates expected business failures from unexpected system defects at compile time. The system provides effect-typed dependency injection through a layer-based dependency graph, pull-based reactive stream processing with
ZIO is a functional effect system for the JVM providing green threads via lightweight fibers, asynchronous I/O, software transactional memory, and stream processing, matching your search for advanced concurrency frameworks despite its Scala-specific ecosystem.
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 robust reactive streams framework that implements asynchronous task orchestration and push-based data propagation for the JVM, fitting the asynchronous execution model requirement though lacking actor-model or green-thread concurrency primitives.
Folly is a collection of high-performance C++ components designed as an extension to the C++ Standard Library for large-scale production environments. It provides specialized toolkits for memory management, concurrency, asynchronous workflows, and low-latency input and output operations. The project distinguishes itself through the provision of lock-free containers and bounded queues to minimize contention in multi-threaded applications, alongside a framework for managing deferred computations using futures and promises. It further offers specialized memory arenas and optimized implementation
Folly provides robust C++ concurrency utilities including lock-free containers, asynchronous futures and promises, and concurrent queues that align well with advanced execution models, though it does not implement the actor model or software transactional memory.
RxSwift is a reactive programming library for Swift that provides a framework for managing push-based data flows and composing asynchronous, event-based programs. It utilizes observable sequences and functional operators to transform and filter asynchronous sequences through a declarative approach. The library is distinguished by its ability to link asynchronous data streams directly to user interface elements, automating view updates via reactive data binding. It includes specialized tools for tracking UI control properties and events on the main thread, as well as the ability to encapsulate
RxSwift is a reactive programming library for Swift that implements asynchronous event-based execution flows using observable sequences, though it focuses on reactive streams rather than actor models or software transactional memory.
Vert.x is a reactive polyglot framework and asynchronous programming library for the Java Virtual Machine. It functions as an event-driven networking framework and toolkit for building non-blocking applications. The system enables the development of high-concurrency network services and event-driven microservices. It supports the creation of reactive services using multiple languages running on the JVM. The framework covers a wide range of capabilities including the management of HTTP and TCP network protocols, non-blocking file system access, and the integration of reactive clients.
Vert.x is an asynchronous, event-driven networking framework for the JVM that provides a non-blocking execution model and event loop support, making it a strong fit for reactive application development despite lacking built-in actors or software transactional memory.
Rayon is a data parallelism library for Rust that provides a framework for converting sequential computations into parallel operations. It enables the transformation of standard data structures and loops into parallel iterators, allowing workloads to be distributed across multiple processor cores. By utilizing a work-stealing scheduler, the library dynamically balances tasks to maximize throughput and minimize execution time. The library distinguishes itself through its focus on safe, scoped task synchronization, which ensures that all spawned operations complete before a scope exits to preve
Rayon is a data parallelism framework for Rust that provides parallel iterators and a work-stealing scheduler, fitting the search for advanced concurrent execution models even though it focuses specifically on data parallelism rather than general async I/O or actor models.
Coost is a concurrent network framework and coroutine scheduler designed for building high-performance TCP, HTTP, and RPC services. It provides a set of tools for handling non-blocking IPv4 and IPv6 communication, integrating SSL encryption and a lightweight execution engine that manages concurrent tasks using shared stacks. The project features a specialized JSON RPC implementation for exchanging structured data over encrypted connections and a high-performance logging system. This logging infrastructure supports topic-based routing, frequency filtering, and automated stack trace capture for
Coost is a C++ concurrent network framework and coroutine scheduler that provides asynchronous execution capabilities, though it lacks actor models and software transactional memory.
Functional Concurrency Primitives
This Swift library provides functional concurrency primitives, fitting the category of a concurrency framework even though its scope is narrower and lacks some of the advanced features like actors or software transactional memory.
| Dépôt | Stars | Langage | Licence | Dernier push |
|---|---|---|---|---|
| actix/actix | 9.2K | Rust | Apache-2.0 | |
| kotlin/kotlinx.coroutines | 13.7K | Kotlin | apache-2.0 | |
| lunatic-solutions/lunatic | 4.9K | Rust | Apache-2.0 | |
| celluloid/celluloid | 3.9K | Ruby | MIT | |
| puniverse/quasar | 4.6K | Java | NOASSERTION | |
| akka/akka-core | 13.3K | Scala | NOASSERTION | |
| ruby-concurrency/concurrent-ruby | 5.8K | Ruby | NOASSERTION | |
| akka/akka | 13.3K | Scala | NOASSERTION | |
| akkadotnet/akka.net | 5K | C# | other | |
| ponylang/ponyc | 6.1K | Pony | BSD-2-Clause |