Painless multi-threaded multi-core programming for Ruby.

Do multi-threaded multi-core programming in Ruby.

Instead of resorting to Erlang, Elixr, Rust, Go, and Akka to use the Actor Model or do Event-driven Programming, keep writing more and more powerful Ruby code in new ways. With Celluloid, anyone can write their own high-performance, light-weight server applications. But it doesn't stop at server applications...

Celluloid is a Ruby gem that lets you turn any object into an Actor.

The joy of writing Ruby code doesn't end at high-performance concurrent, parallel, asynchronous, and distributed programming. Using the beautiful Ruby language and Celluloid, any kind of application can take full advantage of modern CPU's and cloud computing platforms, using the Actor model and Evented programming.

There are several gems in the Celluloid suite, and together they provide a complete toolset for actor-based evented multi-threaded, multi-core programming in Ruby:

Some examples of Celluloid uses...

  • HTTP/S and WebSocket Servers like those based on Reel.
  • Custom Domain Specific Languages like Angelo, for the web.
  • Background processing backends like Sidekiq and Sucker Punch.
  • High-performance protocol servers like Celluloid::DNS.
  • Distributed computing systems like DCell.
  • Telephone systems like Adhearsion.
  • Process monitoring tools like Eye.
  • Countless uses outside server applications, like:
    • IRC/Slack Bots, linking API Integrations.
    • Controlling multiple aerial drones and robots simultaneously.
    • High-fidelity transaction data and financial information processing using ZeroMQ.
    • Turning any program into a multi-threaded, evented, multi-core actor system.
lightbulb_outline View ideas list


  • ruby
  • multi-threading
  • multi-core
  • zeromq
  • high-resolution timers


comment IRC Channel
email Mailing list
mail_outline Contact email

Celluloid 2016 Projects

  • Pulkit Bhatia
    Celluloid - Adding new features to Reel
    Reel is Celluloid::IO native, evented server which serves as bare-bones for http and webSocket server providing functionality such as Connection...
  • Prathmesh Ranaut
    Celluloid - Benchmarking and Performance Improvements
    Celluloid has gone through a lot of improvements since v0.13. This has somehow affected the performance. The aim of my project primarily is to create...
  • benzrf
    Extract ECell
    Prepare the existing ECell code for public release.