celluloid 0.16.0 → 0.17.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of celluloid might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGES.md +333 -0
- data/README.md +1 -1
- data/culture/CODE_OF_CONDUCT.md +28 -0
- data/culture/Gemfile +9 -0
- data/culture/README.md +22 -0
- data/culture/Rakefile +5 -0
- data/culture/SYNC.md +70 -0
- data/culture/celluloid-culture.gemspec +18 -0
- data/culture/gems/README.md +39 -0
- data/culture/gems/dependencies.yml +78 -0
- data/culture/gems/loader.rb +101 -0
- data/culture/rubocop/README.md +38 -0
- data/culture/rubocop/lint.yml +8 -0
- data/culture/rubocop/metrics.yml +15 -0
- data/culture/rubocop/rubocop.yml +4 -0
- data/culture/rubocop/style.yml +48 -0
- data/culture/spec/gems_spec.rb +2 -0
- data/culture/spec/spec_helper.rb +0 -0
- data/culture/spec/sync_spec.rb +2 -0
- data/culture/sync.rb +56 -0
- data/culture/tasks/rspec.rake +5 -0
- data/culture/tasks/rubocop.rake +2 -0
- data/examples/basic_usage.rb +49 -0
- data/examples/futures.rb +38 -0
- data/examples/ring.rb +61 -0
- data/examples/simple_pmap.rb +14 -0
- data/examples/timers.rb +72 -0
- data/lib/celluloid.rb +142 -127
- data/lib/celluloid/actor.rb +47 -41
- data/lib/celluloid/actor_system.rb +75 -22
- data/lib/celluloid/autostart.rb +1 -1
- data/lib/celluloid/backported.rb +2 -0
- data/lib/celluloid/call/async.rb +16 -0
- data/lib/celluloid/call/block.rb +22 -0
- data/lib/celluloid/call/sync.rb +70 -0
- data/lib/celluloid/calls.rb +25 -114
- data/lib/celluloid/cell.rb +32 -20
- data/lib/celluloid/condition.rb +3 -3
- data/lib/celluloid/core_ext.rb +1 -1
- data/lib/celluloid/current.rb +2 -0
- data/lib/celluloid/deprecate.rb +18 -0
- data/lib/celluloid/exceptions.rb +1 -1
- data/lib/celluloid/fiber.rb +3 -3
- data/lib/celluloid/future.rb +7 -6
- data/lib/celluloid/group.rb +65 -0
- data/lib/celluloid/group/manager.rb +27 -0
- data/lib/celluloid/group/pool.rb +125 -0
- data/lib/celluloid/group/spawner.rb +71 -0
- data/lib/celluloid/logging.rb +5 -5
- data/lib/celluloid/mailbox.rb +14 -13
- data/lib/celluloid/mailbox/evented.rb +76 -0
- data/lib/celluloid/notices.rb +15 -0
- data/lib/celluloid/proxies.rb +12 -0
- data/lib/celluloid/proxy/abstract.rb +24 -0
- data/lib/celluloid/proxy/actor.rb +46 -0
- data/lib/celluloid/proxy/async.rb +36 -0
- data/lib/celluloid/proxy/block.rb +31 -0
- data/lib/celluloid/proxy/cell.rb +76 -0
- data/lib/celluloid/proxy/future.rb +40 -0
- data/lib/celluloid/proxy/sync.rb +44 -0
- data/lib/celluloid/rspec.rb +9 -10
- data/lib/celluloid/system_events.rb +16 -15
- data/lib/celluloid/{tasks.rb → task.rb} +21 -21
- data/lib/celluloid/task/fibered.rb +45 -0
- data/lib/celluloid/task/threaded.rb +59 -0
- data/lib/celluloid/test.rb +1 -1
- data/lib/celluloid/thread.rb +6 -1
- data/lib/celluloid/version.rb +3 -0
- data/spec/celluloid/actor_spec.rb +2 -2
- data/spec/celluloid/actor_system_spec.rb +35 -21
- data/spec/celluloid/block_spec.rb +3 -5
- data/spec/celluloid/calls_spec.rb +33 -11
- data/spec/celluloid/condition_spec.rb +16 -13
- data/spec/celluloid/evented_mailbox_spec.rb +1 -31
- data/spec/celluloid/future_spec.rb +13 -10
- data/spec/celluloid/group/elastic_spec.rb +0 -0
- data/spec/celluloid/group/manager_spec.rb +0 -0
- data/spec/celluloid/group/pool_spec.rb +8 -0
- data/spec/celluloid/group/spawner_spec.rb +8 -0
- data/spec/celluloid/mailbox/evented_spec.rb +27 -0
- data/spec/celluloid/mailbox_spec.rb +1 -3
- data/spec/celluloid/misc/leak_spec.rb +73 -0
- data/spec/celluloid/task/fibered_spec.rb +5 -0
- data/spec/celluloid/task/threaded_spec.rb +5 -0
- data/spec/celluloid/timer_spec.rb +14 -16
- data/spec/deprecate/actor_system_spec.rb +72 -0
- data/spec/deprecate/block_spec.rb +52 -0
- data/spec/deprecate/calls_spec.rb +57 -0
- data/spec/deprecate/evented_mailbox_spec.rb +34 -0
- data/spec/deprecate/future_spec.rb +32 -0
- data/spec/deprecate/internal_pool_spec.rb +4 -0
- data/spec/shared/actor_examples.rb +1237 -0
- data/spec/shared/group_examples.rb +121 -0
- data/{lib/celluloid/rspec → spec/shared}/mailbox_examples.rb +20 -17
- data/{lib/celluloid/rspec → spec/shared}/task_examples.rb +9 -8
- data/spec/spec_helper.rb +72 -16
- data/spec/support/coverage.rb +4 -0
- data/spec/support/crash_checking.rb +68 -0
- data/spec/support/debugging.rb +31 -0
- data/spec/support/env.rb +16 -0
- data/{lib/celluloid/rspec/example_actor_class.rb → spec/support/examples/actor_class.rb} +21 -2
- data/spec/support/examples/evented_mailbox_class.rb +27 -0
- data/spec/support/includer.rb +9 -0
- data/spec/support/logging.rb +63 -0
- data/spec/support/loose_threads.rb +65 -0
- data/spec/support/reset_class_variables.rb +27 -0
- data/spec/support/sleep_and_wait.rb +14 -0
- data/spec/support/split_logs.rb +1 -0
- data/spec/support/stubbing.rb +14 -0
- metadata +255 -95
- data/lib/celluloid/call_chain.rb +0 -13
- data/lib/celluloid/cpu_counter.rb +0 -34
- data/lib/celluloid/evented_mailbox.rb +0 -73
- data/lib/celluloid/fsm.rb +0 -186
- data/lib/celluloid/handlers.rb +0 -41
- data/lib/celluloid/internal_pool.rb +0 -159
- data/lib/celluloid/legacy.rb +0 -9
- data/lib/celluloid/links.rb +0 -36
- data/lib/celluloid/logger.rb +0 -93
- data/lib/celluloid/logging/incident.rb +0 -21
- data/lib/celluloid/logging/incident_logger.rb +0 -129
- data/lib/celluloid/logging/incident_reporter.rb +0 -48
- data/lib/celluloid/logging/log_event.rb +0 -20
- data/lib/celluloid/logging/ring_buffer.rb +0 -65
- data/lib/celluloid/method.rb +0 -32
- data/lib/celluloid/notifications.rb +0 -83
- data/lib/celluloid/pool_manager.rb +0 -146
- data/lib/celluloid/probe.rb +0 -73
- data/lib/celluloid/properties.rb +0 -24
- data/lib/celluloid/proxies/abstract_proxy.rb +0 -20
- data/lib/celluloid/proxies/actor_proxy.rb +0 -38
- data/lib/celluloid/proxies/async_proxy.rb +0 -31
- data/lib/celluloid/proxies/block_proxy.rb +0 -29
- data/lib/celluloid/proxies/cell_proxy.rb +0 -68
- data/lib/celluloid/proxies/future_proxy.rb +0 -35
- data/lib/celluloid/proxies/sync_proxy.rb +0 -36
- data/lib/celluloid/receivers.rb +0 -63
- data/lib/celluloid/registry.rb +0 -57
- data/lib/celluloid/responses.rb +0 -44
- data/lib/celluloid/rspec/actor_examples.rb +0 -1054
- data/lib/celluloid/signals.rb +0 -23
- data/lib/celluloid/stack_dump.rb +0 -133
- data/lib/celluloid/supervision_group.rb +0 -169
- data/lib/celluloid/supervisor.rb +0 -22
- data/lib/celluloid/task_set.rb +0 -49
- data/lib/celluloid/tasks/task_fiber.rb +0 -43
- data/lib/celluloid/tasks/task_thread.rb +0 -53
- data/lib/celluloid/thread_handle.rb +0 -50
- data/lib/celluloid/uuid.rb +0 -38
- data/spec/celluloid/cpu_counter_spec.rb +0 -82
- data/spec/celluloid/fsm_spec.rb +0 -107
- data/spec/celluloid/internal_pool_spec.rb +0 -52
- data/spec/celluloid/links_spec.rb +0 -45
- data/spec/celluloid/logging/ring_buffer_spec.rb +0 -38
- data/spec/celluloid/notifications_spec.rb +0 -120
- data/spec/celluloid/pool_spec.rb +0 -92
- data/spec/celluloid/probe_spec.rb +0 -121
- data/spec/celluloid/properties_spec.rb +0 -42
- data/spec/celluloid/registry_spec.rb +0 -64
- data/spec/celluloid/stack_dump_spec.rb +0 -64
- data/spec/celluloid/supervision_group_spec.rb +0 -65
- data/spec/celluloid/supervisor_spec.rb +0 -103
- data/spec/celluloid/tasks/task_fiber_spec.rb +0 -5
- data/spec/celluloid/tasks/task_thread_spec.rb +0 -5
- data/spec/celluloid/thread_handle_spec.rb +0 -26
- data/spec/celluloid/uuid_spec.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3dcad033e3a0b6fa706d2968031433ca348ff7b
|
4
|
+
data.tar.gz: 7de5d781ae489a2e9887333fbdd17a008f10869c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d03a5a5da0d7bf0efe4ebf46cb76b58384e7cae02e4c9054e3d7fa15f01c35fb0e7e27f476c0e26d578555945985c1bb65cab1c7e15aeba56c9179a92666247d
|
7
|
+
data.tar.gz: e8d4f7cf8058919f3ef408a71d8435971e8b01ba3c60c950d38b79dec8a73e7a5c094ad36ba7f599d11fe169c75dc22951014b1584004ddac4796ee4eea7c33c
|
data/CHANGES.md
ADDED
@@ -0,0 +1,333 @@
|
|
1
|
+
0.17.0 (2015)
|
2
|
+
----
|
3
|
+
* Fix $CELLULOID_TEST warnings
|
4
|
+
* Massive overhaul of test suite, end-to-end.
|
5
|
+
* Make "Terminating task" log messages debug-level events
|
6
|
+
* Added `.dead?` method on actors, as opposite of `.alive?`
|
7
|
+
* Added class/module method to access `publish` outside actors.
|
8
|
+
* Radical Refactor of Celluloid::InternalPool, and moved it to Celluloid::Group::Pool
|
9
|
+
* Radical Refactor: *::Group::Pool replaced as default with *::Group::Spawner
|
10
|
+
* Added `rspec-log_split` as replacement logger for itemized testing logs.
|
11
|
+
* *::Task::PooledFibers has been found and made available, and compatible ( sometimes 4x faster than even Task::Fibered )
|
12
|
+
* GEM EXTRACTION: PoolManager taken out, and implemented in the `celluloid-pool` gem, separately.
|
13
|
+
* GEM EXTRACTION: FSM taken out, and implemented in the `celluloid-fsm` gem, separately.
|
14
|
+
* GEM EXTRACTION: SupervisionGroup, Supervisor, and related methods taken out, and implemented in the `celluloid-supervision` gem, separately.
|
15
|
+
* BREAKING CHANGE: Added Celluloid::Internals and moved several "private" classes into that namespace:
|
16
|
+
* CallChain, CPUCounter, Handlers ( and Handle ), Links, Logger, Method, Properties, Registry, Responses, Signals, StackDump, TaskSet, ThreadHandle, UUID.
|
17
|
+
* BREAKING CHANGE: Changed class names, per convention:
|
18
|
+
* Moved Celluloid::TaskFiber to Celluloid::Task::Fibered
|
19
|
+
* Moved Celluloid::TaskThread to Celluloid::Task::Threaded
|
20
|
+
* Moved Celluloid::EventedMailbox to Celluloid::Mailbox::Evented
|
21
|
+
* Moved Celluloid::AbstractProxy to Celluloid::Proxy::Abstract
|
22
|
+
* Moved Celluloid::ActorProxy to Celluloid::Proxy::Actor
|
23
|
+
* Moved Celluloid::AsyncProxy to Celluloid::Proxy::Async
|
24
|
+
* Moved Celluloid::BlockProxy to Celluloid::Proxy::Block
|
25
|
+
* Moved Celluloid::CellProxy to Celluloid::Proxy::Cell
|
26
|
+
* Moved Celluloid::FutureProxy to Celluloid::Proxy::Future
|
27
|
+
* Moved Celluloid::SyncProxy to Celluloid::Proxy::Sync
|
28
|
+
* GEM EXTRACTION: `Internals`, `Notifications`, `Probe`, and the contents of `logging/*` have become a `celluloid-essentials` gem.
|
29
|
+
* Implement `Group::Manager` as base for future `Group::Unlocker` and other such systems traversing `ActorSystem#group` regularly.
|
30
|
+
* Reduce number of supervisors instantiated by `ActorSystem` by consolidating them down to `Service::Root` container instances.
|
31
|
+
|
32
|
+
0.16.0 (2014-09-04)
|
33
|
+
-----
|
34
|
+
* Factor apart Celluloid::Cell (concurrent objects) from Celluloid::Actor
|
35
|
+
* Introduce Celluloid::ActorSystem as an abstraction around the backend
|
36
|
+
actor implementation (idea borrowed from Akka)
|
37
|
+
* Celluloid::Probe system for monitoring system behavior
|
38
|
+
* Fix handling of timeouts with Celluloid::EventedMailbox (i.e. Celluloid::IO
|
39
|
+
and Celluloid::ZMQ)
|
40
|
+
* Add timeout support to Celluloid::Condition
|
41
|
+
* Obtain actor names via Celluloid::Actor.registered_name and
|
42
|
+
#registered_name to avoid conflicts with the built-in Ruby
|
43
|
+
Class.name method
|
44
|
+
* Update to timers 4.0.0
|
45
|
+
* Dynamically resizable pools
|
46
|
+
* Remove use of core Ruby ThreadGroups
|
47
|
+
* Simplified CPU core detector
|
48
|
+
* Better thread names on JRuby for easier debugging
|
49
|
+
* Thread safety fixes to internal thread pool
|
50
|
+
|
51
|
+
0.15.2 (2013-10-06)
|
52
|
+
-----
|
53
|
+
* require 'celluloid/test' for at_exit-free testing
|
54
|
+
|
55
|
+
0.15.1 (2013-09-06)
|
56
|
+
-----
|
57
|
+
* Only raise on nested tasks if $CELLULOID_DEBUG is set
|
58
|
+
|
59
|
+
0.15.0 (2013-09-04)
|
60
|
+
-----
|
61
|
+
* Remove legacy support for "bang"-method based async invocation
|
62
|
+
* Generic timeout support with Celluloid#timeout
|
63
|
+
* Implement recursion detection for #inspect, avoiding infinite loop bugs
|
64
|
+
* Fix various inheritance anomalies in class attributes (e.g. mailbox_class)
|
65
|
+
* Avoid letting version.rb define an unusable Celluloid module
|
66
|
+
* Remove "Shutdown completed cleanly" message that was annoying everyone
|
67
|
+
* Subclass all Celluloid exceptions from Celluloid::Error
|
68
|
+
* Log all unhandled messages
|
69
|
+
* Celluloid::Conditions are now usable ubiquitously, not just inside actors
|
70
|
+
* Introspection support for number of threads in the Celluloid thread pool
|
71
|
+
* Use a ThreadGroup to track the threads in the Celluloid thread pool
|
72
|
+
* Reimplement signal system on top of Conditions
|
73
|
+
* Add metadata like the current method to Celluloid::StackDumps
|
74
|
+
|
75
|
+
0.14.0 (2013-05-07)
|
76
|
+
-----
|
77
|
+
* Use a Thread-subclass for Celluloid
|
78
|
+
* Implement actor-local variables
|
79
|
+
* Add helper methods to the class
|
80
|
+
* Move IO::Mailbox to EventedMailbox to remove dependency between
|
81
|
+
celluloid-io and celluloid-zmq. This makes it easier to maintain
|
82
|
+
the evented style of Mailbox.
|
83
|
+
* Install the `at_exit` handler by default
|
84
|
+
* Show backtrace for all tasks. Currently only for TaskThread
|
85
|
+
* Implement mailbox bounds where overflow is logged
|
86
|
+
* Fix Thread self-join
|
87
|
+
* Execute blocks on the sender by default
|
88
|
+
* Fix CPU counter on windows
|
89
|
+
|
90
|
+
0.13.0
|
91
|
+
-----
|
92
|
+
* API change: Require Celluloid with: require 'celluloid/autostart' to
|
93
|
+
automatically start support actors and configure at_exit handler which
|
94
|
+
automatically terminates all actors.
|
95
|
+
* API change: use_mailbox has been removed
|
96
|
+
* API change: finalizers must be declared with "finalizer :my_finalizer"
|
97
|
+
* Bugfix: receivers don't crash when methods are called incorrectly
|
98
|
+
* Celluloid::Condition provides ConditionVariable-like signaling
|
99
|
+
* Shutdown timeout reduced to 10 seconds
|
100
|
+
* Stack traces across inter-actor calls! Should make Celluloid backtraces
|
101
|
+
much easier to understand
|
102
|
+
* Celluloid#call_chain_id provides UUIDs for calls across actors
|
103
|
+
* Give all thread locals a :celluloid_* prefix
|
104
|
+
|
105
|
+
0.12.4
|
106
|
+
-----
|
107
|
+
* Bugfix: Clear dead/crashed actors out of links
|
108
|
+
* Bugfix: Exclusive mode was broken
|
109
|
+
* Bugfix: Celluloid::SupervisionGroup#run was broken
|
110
|
+
* Celluloid::ClassMethods#proxy_class allows configurable proxies
|
111
|
+
* Improved error messages for Fiber-related problems
|
112
|
+
* Better object leakage detection when inspecting
|
113
|
+
* Use #public_send to dispatch Celluloid methods
|
114
|
+
* #idle_size and #busy_size for Celluloid::PoolManager
|
115
|
+
|
116
|
+
0.12.3
|
117
|
+
-----
|
118
|
+
* Bugfix: Ensure exclusive mode works correctly for per-method case
|
119
|
+
* Bugfix: Exit handlers were not being inherited correctly
|
120
|
+
|
121
|
+
0.12.2
|
122
|
+
-----
|
123
|
+
* Disable IncidentReporter by default
|
124
|
+
|
125
|
+
0.12.1
|
126
|
+
-----
|
127
|
+
* Fix bug in unsetting of exclusive mode
|
128
|
+
* New incident report system for providing better debugging reports
|
129
|
+
* Revert BasicObject proxies for now... they are causing problems
|
130
|
+
* String inspect that reveals bare object leaks
|
131
|
+
* Fix bug reporting proper task statuses
|
132
|
+
* Initial thread dumper support
|
133
|
+
* Remove Celluloid#alive? as it cannot be called in any manner that will ever
|
134
|
+
return anything but true, rendering it useless
|
135
|
+
|
136
|
+
0.12.0
|
137
|
+
-----
|
138
|
+
* Alternative async syntax: actor.async.method in lieu of actor.method!
|
139
|
+
Original syntax still available but will be removed in Celluloid 1.0
|
140
|
+
* Alternative future syntax: actor.future.method in lieu of future(:method)
|
141
|
+
* All methods in the Celluloid module are now available on its singleton
|
142
|
+
* The #join and #kill methods are no longer available on the actor proxy.
|
143
|
+
Please use Celluloid::Actor.join(actor) and .kill(actor) instead.
|
144
|
+
* Celluloid::Future#ready? can be used to query for future readiness
|
145
|
+
* Celluloid::Group constant removed. Please use Celluloid::SupervisionGroup
|
146
|
+
* #monitor, #unmonitor, and #monitoring? provide unidirectional linking
|
147
|
+
* Linking is now performed via a SystemEvent
|
148
|
+
* SystemEvents are no longer exceptions. Boo exceptions as flow control!
|
149
|
+
* Celluloid::Mailbox#system_event eliminated and replaced with Mailbox#<<
|
150
|
+
SystemEvents are now automatically high priority
|
151
|
+
* The task_class class method can be used to override the class used for
|
152
|
+
tasks, allowing different task implementations to be configured on an
|
153
|
+
actor-by-actor-basis
|
154
|
+
* Celluloid::TaskThread provides tasks backed by Threads instead of Fibers
|
155
|
+
* ActorProxy is now a BasicObject
|
156
|
+
* A bug prevented Celluloid subclasses from retaining custom mailboxes
|
157
|
+
defined by use_mailbox. This is now fixed.
|
158
|
+
* `exclusive` class method without arguments makes the whole actor exclusive
|
159
|
+
|
160
|
+
0.11.1
|
161
|
+
-----
|
162
|
+
* 'exclusive' class method marks methods as always exclusive and runs them
|
163
|
+
outside of a Fiber (useful if you need more stack than Fibers provide)
|
164
|
+
* Celluloid::PoolManager returns its own class when #class is called, instead
|
165
|
+
of proxying to a cell/actor in the pool.
|
166
|
+
* #receive now handles SystemEvents internally
|
167
|
+
* Celluloid::Timers extracted into the timers gem, which Celluloid now
|
168
|
+
uses for its own timers
|
169
|
+
|
170
|
+
0.11.0
|
171
|
+
-----
|
172
|
+
* Celluloid::Application constant permanently removed
|
173
|
+
* Celluloid::Pool removed in favor of Celluloid.pool
|
174
|
+
* Celluloid::Group renamed to Celluloid::SupervisionGroup, old name is
|
175
|
+
still available and has not been deprecated
|
176
|
+
* Celluloid::ThreadPool renamed to Celluloid::InternalPool to emphasize its
|
177
|
+
internalness
|
178
|
+
* Support for asynchronously calling private methods inside actors
|
179
|
+
* Future is now an instance method on all actors
|
180
|
+
* Async call exception logs now contain the failed method
|
181
|
+
* MyActor#async makes async calls for those who dislike the predicate syntax
|
182
|
+
* abort can now accept a string instead of an exception object and will raise
|
183
|
+
RuntimeError in the caller's context
|
184
|
+
|
185
|
+
0.10.0
|
186
|
+
-----
|
187
|
+
* Celluloid::Actor.current is now the de facto way to obtain the current actor
|
188
|
+
* #terminate now uses system messages, making termination take priority over
|
189
|
+
other pending methods
|
190
|
+
* #terminate! provides asynchronous termination
|
191
|
+
|
192
|
+
0.9.1
|
193
|
+
-----
|
194
|
+
* Recurring timers with Celluloid#every(n) { ... }
|
195
|
+
* Obtain UUIDs with Celluloid.uuid
|
196
|
+
* Obtain the number of CPU cores available with Celluloid.cores
|
197
|
+
* Celluloid::Pool defaults to one actor per CPU core max by default
|
198
|
+
|
199
|
+
0.9.0
|
200
|
+
-----
|
201
|
+
* Celluloid::Pool supervises pools of actors
|
202
|
+
* Graceful shutdown which calls #terminate on all actors
|
203
|
+
* Celluloid::Actor.all returns all running actors
|
204
|
+
* Celluloid#exclusive runs a high priority block which prevents other methods
|
205
|
+
from executing
|
206
|
+
* Celluloid.exception_handler { |ex| ... } defines a callback for notifying
|
207
|
+
exceptions (for use with Airbrake, exception_notifier, etc.)
|
208
|
+
|
209
|
+
0.8.0
|
210
|
+
-----
|
211
|
+
* Celluloid::Application is now Celluloid::Group
|
212
|
+
* Futures no longer use a thread unless created with a block
|
213
|
+
* No more future thread-leaks! Future threads auto-terminate now
|
214
|
+
* Rename Celluloid#async to Celluloid#defer
|
215
|
+
* Celluloid#tasks now returns an array of tasks with a #status attribute
|
216
|
+
* Reduce coupling between Celluloid and DCell. Breaks compatibility with
|
217
|
+
earlier versions of DCell.
|
218
|
+
* Celluloid::FSMs are no longer actors themselves
|
219
|
+
* Benchmarks using benchmark_suite
|
220
|
+
|
221
|
+
0.7.2
|
222
|
+
-----
|
223
|
+
* Workaround fiber problems on JRuby 1.6.5.1 in addition to 1.6.5
|
224
|
+
* Fix class displayed when inspecting dead actors
|
225
|
+
|
226
|
+
0.7.1
|
227
|
+
-----
|
228
|
+
* More examples!
|
229
|
+
* Cancel all pending tasks when actors crash
|
230
|
+
* Log all errors that occur during signaling failures
|
231
|
+
* Work around thread-local issues on rbx (see 52325ecd)
|
232
|
+
|
233
|
+
0.7.0
|
234
|
+
-----
|
235
|
+
* Celluloid::Task abstraction replaces Celluloid::Fiber
|
236
|
+
* Celluloid#tasks API to introspect on running tasks
|
237
|
+
* Move Celluloid::IO into its own gem, celluloid-io
|
238
|
+
* Finite state machines with Celluloid::FSM
|
239
|
+
* Fix bugs in supervisors handling actors that crash during initialize
|
240
|
+
* Old syntax Celluloid::Future() { ... } deprecated. Please use the #future
|
241
|
+
method or Celluloid::Future.new { ... } to create futures
|
242
|
+
* New timer subsystem! Bullet point-by-bullet point details below
|
243
|
+
* Celluloid#after registers a callback to fire after a given time interval
|
244
|
+
* Celluloid.sleep and Celluloid#sleep let an actor continue processing messages
|
245
|
+
* Celluloid.receive and Celluloid#receive now accept an optional timeout
|
246
|
+
* Celluloid::Mailbox#receive now accepts an optional timeout
|
247
|
+
|
248
|
+
0.6.2
|
249
|
+
-----
|
250
|
+
* List all registered actors with Celluloid::Actor.registered
|
251
|
+
* All logging now handled through Celluloid::Logger
|
252
|
+
* Rescue DeadActorError in Celluloid::ActorProxy#inspect
|
253
|
+
|
254
|
+
0.6.1
|
255
|
+
-----
|
256
|
+
* Celluloid#links obtains Celluloid::Links for a given actor
|
257
|
+
* The #class method is now proxied to actors
|
258
|
+
* Celluloid::Fiber replaces the Celluloid.fiber and Celluloid.resume_fiber API
|
259
|
+
* Use Thread.mailbox instead of Thread.current.mailbox to obtain the mailbox
|
260
|
+
for the current thread
|
261
|
+
|
262
|
+
0.6.0
|
263
|
+
-----
|
264
|
+
* Celluloid::Application classes for describing the structure of applications
|
265
|
+
built with Celluloid
|
266
|
+
* Methods of actors can now participate in the actor protocol directly via
|
267
|
+
Celluloid#receive
|
268
|
+
* Configure custom mailbox types using Celluloid.use_mailbox
|
269
|
+
* Define a custom finalizer for an actor by defining MyActor#finalize
|
270
|
+
* Actor.call and Actor.async API for making direct calls to mailboxes
|
271
|
+
* Fix bugs in Celluloid::Supervisors which would crash on startup if the actor
|
272
|
+
they're supervising also crashes on startup
|
273
|
+
* Add Celluloid.fiber and Celluloid.resume_fiber to allow extension APIs to
|
274
|
+
participate in the Celluloid fiber protocol
|
275
|
+
|
276
|
+
0.5.0
|
277
|
+
-----
|
278
|
+
* "include Celluloid::Actor" no longer supported. Use "include Celluloid"
|
279
|
+
* New Celluloid::IO module for actors that multiplex IO operations
|
280
|
+
* Major overhaul of Celluloid::Actor internals (see 25e22cc1)
|
281
|
+
* Actor threads are pooled in Celluloid::Actor::Pool, improving the speed
|
282
|
+
of creating short-lived actors by over 2X
|
283
|
+
* Classes that include Celluloid now have a #current_actor instance method
|
284
|
+
* Celluloid#async allows actors to make indefinitely blocking calls while
|
285
|
+
still responding to messages
|
286
|
+
* Fix a potential thread safety bug in Thread#mailbox
|
287
|
+
* Experimental Celluloid::TCPServer for people wanting to write servers in
|
288
|
+
Celluloid. This may wind up in another gem, so use at your own risk!
|
289
|
+
* Magically skip ahead a few version numbers to impart the magnitude of this
|
290
|
+
release. It's my versioning scheme and I can do what I wanna.
|
291
|
+
|
292
|
+
0.2.2
|
293
|
+
-----
|
294
|
+
|
295
|
+
* AbortErrors now reraise in caller scope and get a caller-focused backtrace
|
296
|
+
* Log failed async calls instead of just letting them fail silently
|
297
|
+
* Properly handle arity of synchronous calls
|
298
|
+
* Actors can now make async calls to themselves
|
299
|
+
* Resolve crashes that occur when sending responses to exited/dead callers
|
300
|
+
|
301
|
+
0.2.1
|
302
|
+
-----
|
303
|
+
|
304
|
+
* Hack around a bug of an indeterminate cause (2baba3d2)
|
305
|
+
* COLON!#@!
|
306
|
+
|
307
|
+
0.2.0
|
308
|
+
-----
|
309
|
+
|
310
|
+
* Support for future method calls with MyActor#future
|
311
|
+
* Initial signaling support via MyActor#signal and MyActor#wait
|
312
|
+
* Just "include Celluloid" works in lieu of "include Celluloid::Actor"
|
313
|
+
* Futures terminate implicitly when their values are obtained
|
314
|
+
* Add an underscore prefix to all of Celluloid's instance variables so they don't
|
315
|
+
clash with user-defined ones.
|
316
|
+
|
317
|
+
0.1.0
|
318
|
+
-----
|
319
|
+
* Fiber-based reentrant actors. Requires Ruby 1.9
|
320
|
+
* MyActor.new (where MyActor includes Celluloid::Actor) is now identical to .spawn
|
321
|
+
* Terminate actors with MyActor#terminate
|
322
|
+
* Obtain current actor with Celluloid.current_actor
|
323
|
+
* Configurable logger with Celluloid.logger
|
324
|
+
* Synchronization now based on ConditionVariables instead of Celluloid::Waker
|
325
|
+
* Determine if you're in actor scope with Celluloid.actor?
|
326
|
+
|
327
|
+
0.0.3
|
328
|
+
-----
|
329
|
+
* Remove self-referential dependency in gemspec
|
330
|
+
|
331
|
+
0.0.1
|
332
|
+
-----
|
333
|
+
* Initial release
|
data/README.md
CHANGED
@@ -142,7 +142,7 @@ require 'celluloid/autostart'
|
|
142
142
|
Supported Platforms
|
143
143
|
-------------------
|
144
144
|
|
145
|
-
Celluloid works on Ruby
|
145
|
+
Celluloid works on Ruby 2.0+, JRuby 1.7+, and Rubinius 2.0.
|
146
146
|
|
147
147
|
JRuby or Rubinius are the preferred platforms as they support true thread-level
|
148
148
|
parallelism when executing Ruby code, whereas MRI/YARV is constrained by a global
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Contributor Code of Conduct
|
2
|
+
|
3
|
+
As contributors and maintainers of this project, we pledge to respect all
|
4
|
+
people who contribute through reporting issues, posting feature requests,
|
5
|
+
updating documentation, submitting pull requests or patches, and other
|
6
|
+
activities.
|
7
|
+
|
8
|
+
We are committed to making participation in this project a harassment-free
|
9
|
+
experience for everyone, regardless of level of experience, gender, gender
|
10
|
+
identity and expression, sexual orientation, disability, personal appearance,
|
11
|
+
body size, race, age, or religion.
|
12
|
+
|
13
|
+
Examples of unacceptable behavior by participants include the use of sexual
|
14
|
+
language or imagery, derogatory comments or personal attacks, trolling, public
|
15
|
+
or private harassment, insults, or other unprofessional conduct.
|
16
|
+
|
17
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
18
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
19
|
+
that are not aligned to this Code of Conduct. Project maintainers who do not
|
20
|
+
follow the Code of Conduct may be removed from the project team.
|
21
|
+
|
22
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
23
|
+
reported by opening an issue or contacting one or more of the project
|
24
|
+
maintainers.
|
25
|
+
|
26
|
+
This Code of Conduct is adapted from the [Contributor Covenant](http
|
27
|
+
:contributor-covenant.org), version 1.0.0, available at [http://contributor-
|
28
|
+
covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
|
data/culture/Gemfile
ADDED
data/culture/README.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Celluloid::Culture
|
2
|
+
==================
|
3
|
+
[![Build Status](https://travis-ci.org/celluloid/culture.svg)](https://travis-ci.org/celluloid/culture)
|
4
|
+
|
5
|
+
### Please see...
|
6
|
+
* Important [issues for discussion](/celluloid/culture/issues).
|
7
|
+
* Information about [Celluloid::Sync](SYNC.md).
|
8
|
+
* Information about [RuboCop](rubocop/README.md).
|
9
|
+
|
10
|
+
|
11
|
+
## Integration
|
12
|
+
To add `celluloid/culture` and its many splendors to a gem, install it as a sub-module of the gem repository. Once you fully integrate [`Celluloid::Sync`](SYNC.md), the sub-module will be automatically refreshed.
|
13
|
+
|
14
|
+
##### Add celluloid/culture as GIT submodule:
|
15
|
+
```sh
|
16
|
+
git submodule add http://github.com/celluloid/culture.git
|
17
|
+
```
|
18
|
+
|
19
|
+
Make sure `http://` is used and no other method of inclusion. CI needs it to be `http://`
|
20
|
+
|
21
|
+
### Then what?
|
22
|
+
Once you've done that, read up on [Celluloid::Sync](SYNC.md) and [RuboCop](rubocop/README.md).
|
data/culture/Rakefile
ADDED
data/culture/SYNC.md
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
# Celluloid::Sync
|
2
|
+
|
3
|
+
The `celluloid/culture` sub-module needs to be updated in ever repository which uses it, and integrations between all the gems in Celluloid's core suite began to need greater efficiency in handling many gems at once. This lead to the birth of `Celluloid::Sync` and its automation of several otherwise tedious tasks.
|
4
|
+
|
5
|
+
|
6
|
+
## When all is said and done...
|
7
|
+
|
8
|
+
Running `bundle` or `rspec` will trigger `Celluloid::Sync` automatically, without slowing you down.
|
9
|
+
|
10
|
+
---
|
11
|
+
|
12
|
+
## So what does it do?
|
13
|
+
|
14
|
+
**1. It adds the gem you're in to the `$LOADPATH`.**
|
15
|
+
|
16
|
+
**2. It tries to find the `VERSION` constant for the current gem and load it.**
|
17
|
+
|
18
|
+
This allows easy inclusion of `VERSION` in gemspec, without individually including the required file first.
|
19
|
+
|
20
|
+
**3. It updates the `celluloid/culture` sub-module.**
|
21
|
+
|
22
|
+
Whenever `bundle` is run, the `culture/` directory is synchronized with the repository before it's used any further.
|
23
|
+
|
24
|
+
**4. It keeps `Gemfile` and `gemspec` requirements up to date.**
|
25
|
+
|
26
|
+
Avoid circular dependency errors, but still have the power to use locally sourced repositories.
|
27
|
+
|
28
|
+
---
|
29
|
+
|
30
|
+
## How is it installed in `Gemfile` and `gemspec` then?
|
31
|
+
|
32
|
+
Add the line above to the top of both files, before everything else:
|
33
|
+
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
require File.expand_path("../culture/sync", __FILE__)
|
37
|
+
```
|
38
|
+
|
39
|
+
|
40
|
+
#### Finishing off `gemspec` ...
|
41
|
+
|
42
|
+
You only have one other line to add, other than line above ... right before the closing `end` in the file:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
require File.expand_path("../culture/sync", __FILE__)
|
46
|
+
Gem::Specification.new do |gem|
|
47
|
+
# ...
|
48
|
+
# ...
|
49
|
+
# Keep in mind, the VERSION constant of this gem ought to be loaded.
|
50
|
+
# ...
|
51
|
+
# ...
|
52
|
+
Celluloid::Sync.gems(gem)
|
53
|
+
end
|
54
|
+
|
55
|
+
```
|
56
|
+
|
57
|
+
#### Finishing off `Gemfile` ...
|
58
|
+
|
59
|
+
Same as in `gemspec` you have only two bits to add. The second line we're adding goes at the very end, or at least after `gemspec` is called:
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
require File.expand_path("../culture/sync", __FILE__)
|
63
|
+
|
64
|
+
# ...
|
65
|
+
# below any calls to `gemspec`
|
66
|
+
# below any other gems
|
67
|
+
# ...
|
68
|
+
|
69
|
+
Celluloid::Sync.gems(self)
|
70
|
+
```
|