Description
Celluloid provides a simple and natural way to build fault-tolerant concurrent
programs in Ruby. With Celluloid, you can build systems out of concurrent
objects just as easily as you build sequential programs out of regular objects.
Recommended for any developer, including novices, Celluloid should help ease
your worries about building multithreaded Ruby programs.
Much of the difficulty with building concurrent programs in Ruby arises because
the object-oriented mechanisms for structuring code, such as classes and
inheritance, are separate from the concurrency mechanisms, such as threads and
locks. Celluloid combines these into a single structure, an active object
running within a thread, called an "actor", or in Celluloid vernacular, a "cell".
By combining concurrency with object oriented programming, Celluloid frees you
up from worry about where to use threads and locks. Celluloid combines them
together into a single concurrent object oriented programming model,
encapsulating state in concurrent objects and thus avoiding many of the
problems associated with multithreaded programming. Celluloid provides many
features which make concurrent programming simple, easy, and fun:
Celluloid alternatives and similar gems
Based on the "Concurrency" category.
Alternatively, view Celluloid alternatives based on common mentions on social networks and blogs.
-
Concurrent Ruby
Modern concurrency tools including agents, futures, promises, thread pools, supervisors, and more. Inspired by Erlang, Clojure, Scala, Go, Java, JavaScript, and classic concurrency patterns. -
EventMachine
EventMachine: fast, simple event-processing library for Ruby programs -
render_async
render_async lets you include pages asynchronously with AJAX
Collect and Analyze Billions of Data Points in Real Time
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Celluloid or a related project?
README
Celluloid is a framework for building asynchronous and multithreaded Ruby programs using object-oriented concepts.
Revival Process Underway
Celluloid
is in the process of being refactored and released back into the wild during Google Summer of Code
. The next era will not have one individual active maintainer, but a team of collaborators. Going forward, previously dormant maintainer Donovan Keme is returning to support future primary maintainer Emese Padányi during GSoC 2020
. Her plan extends past the Summer program, and aims to revive the community and codebase of Celluloid
together. Backing this process are Harsh Deep and GSoC
alumni Dilum Navanjana. We welcome your collaboration and contributions in this massive work.
The codebase is being refactored to pursue a stable release with no deprecation warnings, and with this cleaned up:
Diagram meticulously developed by Emese Padányi
Proudly supported by the best cloud infrastructure provider in the world: DigitalOcean
Discussion
Documentation
Please see the Celluloid Wiki for more detailed documentation and usage notes.
The following API documentation is also available:
Related Projects
See also: Projects Using Celluloid
- Reel: An "evented" web server based on
Celluloid::IO
- DCell: The Celluloid actor protocol distributed over 0MQ
- ECell: Mesh strategies for
Celluloid
actors distributed over 0MQ - Celluloid::IO: "Evented" IO support for
Celluloid
actors - Celluloid::ZMQ: "Evented" 0MQ support for
Celluloid
actors - Celluloid::DNS: An "evented" DNS server based on
Celluloid::IO
- Celluloid::SMTP: An "evented" SMTP server based on
Celluloid::IO
- nio4r: "New IO for Ruby": high performance IO selectors
- Timers: A generic Ruby timer library for event-based systems
Contributing to Celluloid
- Fork this repository on github
- Make your changes and send us a pull request
- Pull requests will be reviewed for inclusion in the project
License
Copyright (c) 2011-2018 Tony Arcieri, Donovan Keme.
Distributed under the MIT License. See LICENSE.txt for further details.
*Note that all licence references and agreements mentioned in the Celluloid README section above
are relevant to that project's source code only.