aboutsummaryrefslogtreecommitdiff
path: root/devel/rubygem-celluloid-io/pkg-descr
blob: 2f06244762206548c5e73fe7bddcc0382545bb47 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Celluloid::IO provides an event-driven IO system for building fast, scalable
network applications that integrates directly with the Celluloid actor library,
making it easy to combine both threaded and evented concepts. Celluloid::IO is
ideal for servers which handle large numbers of mostly-idle connections, such as
Websocket servers or chat/messaging systems.

Celluloid::IO provides a different class of actor: one that's slightly slower
and heavier than standard Celluloid actors, but one which contains a
high-performance reactor just like EventMachine or Cool.io. This means
Celluloid::IO actors have the power of both Celluloid actors and evented I/O
loops. Unlike certain other evented I/O systems which limit you to a single
event loop per process, Celluloid::IO lets you make as many actors as you want,
system resources permitting.

Rather than callbacks, Celluloid::IO exposes a synchronous API built on duck
types of Ruby's own IO classes, such as TCPServer and TCPSocket. These classes
work identically to their core Ruby counterparts, but in the scope of
Celluloid::IO actors provide "evented" performance. Since they're drop-in
replacements for the standard classes, there's no need to rewrite every library
just to take advantage of Celluloid::IO's event loop and you can freely switch
between evented and blocking IO even over the lifetime of a single connection.

WWW: https://github.com/celluloid/celluloid-io