A comprehensive suite of modern concurrency abstractions and thread-safe utilities for Ruby, inspired by Erlang, Clojure, and Java.
Concurrent Ruby is a library that provides modern concurrency tools and thread-safe data structures for Ruby. It solves the problem of writing safe, efficient concurrent programs by offering abstractions like agents, promises, actors, and thread pools, inspired by languages like Erlang, Clojure, and Java. The library ensures strong thread safety guarantees across MRI, JRuby, and TruffleRuby interpreters.
Ruby developers building applications that require parallelism, background job processing, or shared state management, such as web servers, data processing pipelines, or real-time systems.
Developers choose Concurrent Ruby because it offers the most comprehensive set of thread-safe concurrency abstractions in the Ruby ecosystem, with consistent behavior across interpreters, no external dependencies, and a philosophy focused on idiomatic Ruby design.
Modern concurrency tools including agents, futures, promises, thread pools, supervisors, and more. Inspired by Erlang, Clojure, Scala, Go, Java, JavaScript, and classic concurrency patterns.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers a unified set of abstractions like promises, agents, actors, and thread-safe collections, covering most concurrency patterns, as detailed in the README's extensive feature list.
Provides consistent thread safety guarantees across MRI, JRuby, and TruffleRuby, with every abstraction documented as thread-safe, ensuring reliable multi-threaded behavior.
Adapts concepts from languages like Erlang and Clojure to feel natural in Ruby, with minimal external dependencies and a focus on Ruby semantics, per the project's philosophy.
Backed by a team of maintainers and contributors, with regular updates, semantic versioning, and clear deprecation paths for stable evolution.
The concurrent-ruby-edge gem contains unstable APIs like actors and channels that may change without notice, lacking full documentation and tests, as admitted in the README.
The numerous concurrency models can be overwhelming, requiring deep understanding to avoid misuse or performance inefficiencies, especially without the optional C extensions.
Older abstractions like Future and Promise are deprecated in favor of Promises, forcing migration efforts and potential confusion for legacy codebases.