From: Tony Arcieri Date: 2011-11-19T09:42:49+09:00 Subject: [ANN] celluloid 0.6.0: easy-to-use concurrent objects for Ruby 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. - RDoc: http://celluloid.github.com/ - Github: http://github.com/tarcieri/celluloid Celluloid wraps objects in threads, allowing them to run concurrently, while still letting you talk to them using standard Ruby method call conventions. It also enables asynchronous method calls which tell a method to do something in the background, and futures, which let you request a method be executed then check back later for the result. -- Celluloid 0.6.0 brings with it one of the most requested features: applications and supervision trees. Using a simple DSL you can now list all of the actors in a given library, ensure they're supervised, and even supervise the supervisors. The DSL works as follows: class MyApplication < Celluloid::Application supervise MyActor, :as => :my_actor supervise AnotherActor, :as => :another_actor end This defines the actors in your application. When your application is running, it will create one instance of MyActor and register it as Celluloid::Actor[:my_actor], and also a single instance of AnotherActor registered as Celluloid::Actor[:another_actor] To start the application, run: MyApplication.run This will run in the foreground, waiting for any of the supervisors to crash and automatically restarting them. To run an application in the background, run: MyApplication.run! -- Additional changes in Celluloid 0.6.0: * Celluloid::Application classes for describing the structure of applications built with Celluloid * Methods of actors can now participate in the actor protocol directly via Celluloid#receive * Configure custom mailbox types using Celluloid.use_mailbox * Define a custom finalizer for an actor by defining MyActor#finalize * Actor.call and Actor.async API for making sync and async calls via Celluloid::Mailboxes * Fix bugs in Celluloid::Supervisors which would crash on startup if the actor they're supervising also crashes on startup * Add Celluloid.fiber and Celluloid.resume_fiber to allow extension APIs to participate in the Celluloid fiber protocol * Internal refactoring to better support DCell -- Tony Arcieri