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.

Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +333 -0
  3. data/README.md +1 -1
  4. data/culture/CODE_OF_CONDUCT.md +28 -0
  5. data/culture/Gemfile +9 -0
  6. data/culture/README.md +22 -0
  7. data/culture/Rakefile +5 -0
  8. data/culture/SYNC.md +70 -0
  9. data/culture/celluloid-culture.gemspec +18 -0
  10. data/culture/gems/README.md +39 -0
  11. data/culture/gems/dependencies.yml +78 -0
  12. data/culture/gems/loader.rb +101 -0
  13. data/culture/rubocop/README.md +38 -0
  14. data/culture/rubocop/lint.yml +8 -0
  15. data/culture/rubocop/metrics.yml +15 -0
  16. data/culture/rubocop/rubocop.yml +4 -0
  17. data/culture/rubocop/style.yml +48 -0
  18. data/culture/spec/gems_spec.rb +2 -0
  19. data/culture/spec/spec_helper.rb +0 -0
  20. data/culture/spec/sync_spec.rb +2 -0
  21. data/culture/sync.rb +56 -0
  22. data/culture/tasks/rspec.rake +5 -0
  23. data/culture/tasks/rubocop.rake +2 -0
  24. data/examples/basic_usage.rb +49 -0
  25. data/examples/futures.rb +38 -0
  26. data/examples/ring.rb +61 -0
  27. data/examples/simple_pmap.rb +14 -0
  28. data/examples/timers.rb +72 -0
  29. data/lib/celluloid.rb +142 -127
  30. data/lib/celluloid/actor.rb +47 -41
  31. data/lib/celluloid/actor_system.rb +75 -22
  32. data/lib/celluloid/autostart.rb +1 -1
  33. data/lib/celluloid/backported.rb +2 -0
  34. data/lib/celluloid/call/async.rb +16 -0
  35. data/lib/celluloid/call/block.rb +22 -0
  36. data/lib/celluloid/call/sync.rb +70 -0
  37. data/lib/celluloid/calls.rb +25 -114
  38. data/lib/celluloid/cell.rb +32 -20
  39. data/lib/celluloid/condition.rb +3 -3
  40. data/lib/celluloid/core_ext.rb +1 -1
  41. data/lib/celluloid/current.rb +2 -0
  42. data/lib/celluloid/deprecate.rb +18 -0
  43. data/lib/celluloid/exceptions.rb +1 -1
  44. data/lib/celluloid/fiber.rb +3 -3
  45. data/lib/celluloid/future.rb +7 -6
  46. data/lib/celluloid/group.rb +65 -0
  47. data/lib/celluloid/group/manager.rb +27 -0
  48. data/lib/celluloid/group/pool.rb +125 -0
  49. data/lib/celluloid/group/spawner.rb +71 -0
  50. data/lib/celluloid/logging.rb +5 -5
  51. data/lib/celluloid/mailbox.rb +14 -13
  52. data/lib/celluloid/mailbox/evented.rb +76 -0
  53. data/lib/celluloid/notices.rb +15 -0
  54. data/lib/celluloid/proxies.rb +12 -0
  55. data/lib/celluloid/proxy/abstract.rb +24 -0
  56. data/lib/celluloid/proxy/actor.rb +46 -0
  57. data/lib/celluloid/proxy/async.rb +36 -0
  58. data/lib/celluloid/proxy/block.rb +31 -0
  59. data/lib/celluloid/proxy/cell.rb +76 -0
  60. data/lib/celluloid/proxy/future.rb +40 -0
  61. data/lib/celluloid/proxy/sync.rb +44 -0
  62. data/lib/celluloid/rspec.rb +9 -10
  63. data/lib/celluloid/system_events.rb +16 -15
  64. data/lib/celluloid/{tasks.rb → task.rb} +21 -21
  65. data/lib/celluloid/task/fibered.rb +45 -0
  66. data/lib/celluloid/task/threaded.rb +59 -0
  67. data/lib/celluloid/test.rb +1 -1
  68. data/lib/celluloid/thread.rb +6 -1
  69. data/lib/celluloid/version.rb +3 -0
  70. data/spec/celluloid/actor_spec.rb +2 -2
  71. data/spec/celluloid/actor_system_spec.rb +35 -21
  72. data/spec/celluloid/block_spec.rb +3 -5
  73. data/spec/celluloid/calls_spec.rb +33 -11
  74. data/spec/celluloid/condition_spec.rb +16 -13
  75. data/spec/celluloid/evented_mailbox_spec.rb +1 -31
  76. data/spec/celluloid/future_spec.rb +13 -10
  77. data/spec/celluloid/group/elastic_spec.rb +0 -0
  78. data/spec/celluloid/group/manager_spec.rb +0 -0
  79. data/spec/celluloid/group/pool_spec.rb +8 -0
  80. data/spec/celluloid/group/spawner_spec.rb +8 -0
  81. data/spec/celluloid/mailbox/evented_spec.rb +27 -0
  82. data/spec/celluloid/mailbox_spec.rb +1 -3
  83. data/spec/celluloid/misc/leak_spec.rb +73 -0
  84. data/spec/celluloid/task/fibered_spec.rb +5 -0
  85. data/spec/celluloid/task/threaded_spec.rb +5 -0
  86. data/spec/celluloid/timer_spec.rb +14 -16
  87. data/spec/deprecate/actor_system_spec.rb +72 -0
  88. data/spec/deprecate/block_spec.rb +52 -0
  89. data/spec/deprecate/calls_spec.rb +57 -0
  90. data/spec/deprecate/evented_mailbox_spec.rb +34 -0
  91. data/spec/deprecate/future_spec.rb +32 -0
  92. data/spec/deprecate/internal_pool_spec.rb +4 -0
  93. data/spec/shared/actor_examples.rb +1237 -0
  94. data/spec/shared/group_examples.rb +121 -0
  95. data/{lib/celluloid/rspec → spec/shared}/mailbox_examples.rb +20 -17
  96. data/{lib/celluloid/rspec → spec/shared}/task_examples.rb +9 -8
  97. data/spec/spec_helper.rb +72 -16
  98. data/spec/support/coverage.rb +4 -0
  99. data/spec/support/crash_checking.rb +68 -0
  100. data/spec/support/debugging.rb +31 -0
  101. data/spec/support/env.rb +16 -0
  102. data/{lib/celluloid/rspec/example_actor_class.rb → spec/support/examples/actor_class.rb} +21 -2
  103. data/spec/support/examples/evented_mailbox_class.rb +27 -0
  104. data/spec/support/includer.rb +9 -0
  105. data/spec/support/logging.rb +63 -0
  106. data/spec/support/loose_threads.rb +65 -0
  107. data/spec/support/reset_class_variables.rb +27 -0
  108. data/spec/support/sleep_and_wait.rb +14 -0
  109. data/spec/support/split_logs.rb +1 -0
  110. data/spec/support/stubbing.rb +14 -0
  111. metadata +255 -95
  112. data/lib/celluloid/call_chain.rb +0 -13
  113. data/lib/celluloid/cpu_counter.rb +0 -34
  114. data/lib/celluloid/evented_mailbox.rb +0 -73
  115. data/lib/celluloid/fsm.rb +0 -186
  116. data/lib/celluloid/handlers.rb +0 -41
  117. data/lib/celluloid/internal_pool.rb +0 -159
  118. data/lib/celluloid/legacy.rb +0 -9
  119. data/lib/celluloid/links.rb +0 -36
  120. data/lib/celluloid/logger.rb +0 -93
  121. data/lib/celluloid/logging/incident.rb +0 -21
  122. data/lib/celluloid/logging/incident_logger.rb +0 -129
  123. data/lib/celluloid/logging/incident_reporter.rb +0 -48
  124. data/lib/celluloid/logging/log_event.rb +0 -20
  125. data/lib/celluloid/logging/ring_buffer.rb +0 -65
  126. data/lib/celluloid/method.rb +0 -32
  127. data/lib/celluloid/notifications.rb +0 -83
  128. data/lib/celluloid/pool_manager.rb +0 -146
  129. data/lib/celluloid/probe.rb +0 -73
  130. data/lib/celluloid/properties.rb +0 -24
  131. data/lib/celluloid/proxies/abstract_proxy.rb +0 -20
  132. data/lib/celluloid/proxies/actor_proxy.rb +0 -38
  133. data/lib/celluloid/proxies/async_proxy.rb +0 -31
  134. data/lib/celluloid/proxies/block_proxy.rb +0 -29
  135. data/lib/celluloid/proxies/cell_proxy.rb +0 -68
  136. data/lib/celluloid/proxies/future_proxy.rb +0 -35
  137. data/lib/celluloid/proxies/sync_proxy.rb +0 -36
  138. data/lib/celluloid/receivers.rb +0 -63
  139. data/lib/celluloid/registry.rb +0 -57
  140. data/lib/celluloid/responses.rb +0 -44
  141. data/lib/celluloid/rspec/actor_examples.rb +0 -1054
  142. data/lib/celluloid/signals.rb +0 -23
  143. data/lib/celluloid/stack_dump.rb +0 -133
  144. data/lib/celluloid/supervision_group.rb +0 -169
  145. data/lib/celluloid/supervisor.rb +0 -22
  146. data/lib/celluloid/task_set.rb +0 -49
  147. data/lib/celluloid/tasks/task_fiber.rb +0 -43
  148. data/lib/celluloid/tasks/task_thread.rb +0 -53
  149. data/lib/celluloid/thread_handle.rb +0 -50
  150. data/lib/celluloid/uuid.rb +0 -38
  151. data/spec/celluloid/cpu_counter_spec.rb +0 -82
  152. data/spec/celluloid/fsm_spec.rb +0 -107
  153. data/spec/celluloid/internal_pool_spec.rb +0 -52
  154. data/spec/celluloid/links_spec.rb +0 -45
  155. data/spec/celluloid/logging/ring_buffer_spec.rb +0 -38
  156. data/spec/celluloid/notifications_spec.rb +0 -120
  157. data/spec/celluloid/pool_spec.rb +0 -92
  158. data/spec/celluloid/probe_spec.rb +0 -121
  159. data/spec/celluloid/properties_spec.rb +0 -42
  160. data/spec/celluloid/registry_spec.rb +0 -64
  161. data/spec/celluloid/stack_dump_spec.rb +0 -64
  162. data/spec/celluloid/supervision_group_spec.rb +0 -65
  163. data/spec/celluloid/supervisor_spec.rb +0 -103
  164. data/spec/celluloid/tasks/task_fiber_spec.rb +0 -5
  165. data/spec/celluloid/tasks/task_thread_spec.rb +0 -5
  166. data/spec/celluloid/thread_handle_spec.rb +0 -26
  167. data/spec/celluloid/uuid_spec.rb +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b9e9584ba72b44bbb2ce23372b0b4b86f2f3687
4
- data.tar.gz: 10ec35b6465a1025defe4a697c3108f1982b5f77
3
+ metadata.gz: f3dcad033e3a0b6fa706d2968031433ca348ff7b
4
+ data.tar.gz: 7de5d781ae489a2e9887333fbdd17a008f10869c
5
5
  SHA512:
6
- metadata.gz: 9394c33b6d7eff1efa0e0f78d24ff5578ce208dac695d0b7b806c999b47a456253c670783599ae448cb9bb3f6bf455be4ac66705fb399d8e53c3adb72a894250
7
- data.tar.gz: f3e2659328cb38517ec107ad32e7c08d8aaa40fece3d74213273d50f703a6cb0878a43616d933b41fb6d061d928f02ba68850d269be32107062bc5e7b162bcc2
6
+ metadata.gz: d03a5a5da0d7bf0efe4ebf46cb76b58384e7cae02e4c9054e3d7fa15f01c35fb0e7e27f476c0e26d578555945985c1bb65cab1c7e15aeba56c9179a92666247d
7
+ data.tar.gz: e8d4f7cf8058919f3ef408a71d8435971e8b01ba3c60c950d38b79dec8a73e7a5c094ad36ba7f599d11fe169c75dc22951014b1584004ddac4796ee4eea7c33c
@@ -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 1.9.3, 2.0.0, JRuby 1.6+, and Rubinius 2.0.
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/)
@@ -0,0 +1,9 @@
1
+ source "https://rubygems.org"
2
+
3
+ group :development, :test do
4
+ gem "rubocop"
5
+ gem "rspec"
6
+ gem "rake"
7
+ end
8
+
9
+ gemspec
@@ -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).
@@ -0,0 +1,5 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ Dir["tasks/**/*.rake"].each { |task| load task }
4
+
5
+ task default: "rubocop"
@@ -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
+ ```