celluloid 0.18.0.pre → 0.18.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (179) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES.md +114 -39
  3. data/CONDUCT.md +13 -0
  4. data/CONTRIBUTING.md +39 -0
  5. data/README.md +59 -55
  6. data/architecture.md +120 -0
  7. data/examples/basic_usage.rb +1 -1
  8. data/examples/configurations.rb +78 -0
  9. data/examples/futures.rb +1 -1
  10. data/examples/ring.rb +5 -4
  11. data/examples/simple_pmap.rb +1 -1
  12. data/examples/stack.rb +2 -2
  13. data/examples/supervisors_and_registry.rb +82 -0
  14. data/examples/timers.rb +1 -1
  15. data/lib/celluloid.rb +72 -47
  16. data/lib/celluloid/actor.rb +27 -17
  17. data/lib/celluloid/actor/system.rb +13 -29
  18. data/lib/celluloid/autostart.rb +5 -5
  19. data/lib/celluloid/backported.rb +6 -2
  20. data/lib/celluloid/call/async.rb +2 -0
  21. data/lib/celluloid/call/sync.rb +10 -3
  22. data/lib/celluloid/calls.rb +5 -12
  23. data/lib/celluloid/cell.rb +5 -9
  24. data/lib/celluloid/condition.rb +3 -3
  25. data/lib/celluloid/core_ext.rb +0 -2
  26. data/lib/celluloid/current.rb +3 -1
  27. data/lib/celluloid/debug.rb +3 -0
  28. data/lib/celluloid/exceptions.rb +2 -2
  29. data/lib/celluloid/future.rb +7 -9
  30. data/lib/celluloid/group.rb +12 -8
  31. data/lib/celluloid/group/pool.rb +1 -3
  32. data/lib/celluloid/group/spawner.rb +2 -6
  33. data/lib/celluloid/internals/call_chain.rb +15 -0
  34. data/lib/celluloid/internals/cpu_counter.rb +62 -0
  35. data/lib/celluloid/internals/handlers.rb +42 -0
  36. data/lib/celluloid/internals/links.rb +38 -0
  37. data/lib/celluloid/internals/logger.rb +104 -0
  38. data/lib/celluloid/internals/method.rb +34 -0
  39. data/lib/celluloid/internals/properties.rb +32 -0
  40. data/lib/celluloid/internals/receivers.rb +64 -0
  41. data/lib/celluloid/internals/registry.rb +102 -0
  42. data/lib/celluloid/internals/responses.rb +46 -0
  43. data/lib/celluloid/internals/signals.rb +24 -0
  44. data/lib/celluloid/internals/stack.rb +74 -0
  45. data/lib/celluloid/internals/stack/dump.rb +12 -0
  46. data/lib/celluloid/internals/stack/states.rb +72 -0
  47. data/lib/celluloid/internals/stack/summary.rb +12 -0
  48. data/lib/celluloid/internals/task_set.rb +51 -0
  49. data/lib/celluloid/internals/thread_handle.rb +52 -0
  50. data/lib/celluloid/internals/uuid.rb +40 -0
  51. data/lib/celluloid/logging/incident.rb +21 -0
  52. data/lib/celluloid/logging/incident_logger.rb +147 -0
  53. data/lib/celluloid/logging/incident_reporter.rb +49 -0
  54. data/lib/celluloid/logging/log_event.rb +20 -0
  55. data/lib/celluloid/logging/ring_buffer.rb +64 -0
  56. data/lib/celluloid/mailbox.rb +22 -9
  57. data/lib/celluloid/mailbox/evented.rb +13 -5
  58. data/lib/celluloid/managed.rb +6 -3
  59. data/lib/celluloid/notifications.rb +95 -0
  60. data/lib/celluloid/pool.rb +6 -0
  61. data/lib/celluloid/probe.rb +81 -0
  62. data/lib/celluloid/proxy/abstract.rb +9 -9
  63. data/lib/celluloid/proxy/async.rb +1 -1
  64. data/lib/celluloid/proxy/block.rb +2 -2
  65. data/lib/celluloid/proxy/cell.rb +1 -1
  66. data/lib/celluloid/proxy/future.rb +2 -4
  67. data/lib/celluloid/proxy/sync.rb +1 -3
  68. data/lib/celluloid/rspec.rb +22 -33
  69. data/lib/celluloid/supervision.rb +17 -0
  70. data/lib/celluloid/supervision/configuration.rb +169 -0
  71. data/lib/celluloid/supervision/configuration/injections.rb +8 -0
  72. data/lib/celluloid/supervision/configuration/instance.rb +113 -0
  73. data/lib/celluloid/supervision/constants.rb +123 -0
  74. data/lib/celluloid/supervision/container.rb +144 -0
  75. data/lib/celluloid/supervision/container/behavior.rb +89 -0
  76. data/lib/celluloid/supervision/container/behavior/pool.rb +71 -0
  77. data/lib/celluloid/supervision/container/behavior/tree.rb +23 -0
  78. data/lib/celluloid/supervision/container/injections.rb +8 -0
  79. data/lib/celluloid/supervision/container/instance.rb +116 -0
  80. data/lib/celluloid/supervision/container/pool.rb +210 -0
  81. data/{culture/rubocop/perf.yml → lib/celluloid/supervision/container/tree.rb} +0 -0
  82. data/lib/celluloid/supervision/deprecate.rb +9 -0
  83. data/lib/celluloid/supervision/deprecate/supervise.rb +105 -0
  84. data/lib/celluloid/supervision/deprecate/validation.rb +54 -0
  85. data/lib/celluloid/supervision/service.rb +27 -0
  86. data/lib/celluloid/supervision/supervise.rb +34 -0
  87. data/lib/celluloid/supervision/validation.rb +40 -0
  88. data/lib/celluloid/supervision/version.rb +5 -0
  89. data/lib/celluloid/system_events.rb +11 -6
  90. data/lib/celluloid/task.rb +25 -12
  91. data/lib/celluloid/task/fibered.rb +2 -0
  92. data/lib/celluloid/task/threaded.rb +3 -3
  93. data/lib/celluloid/test.rb +5 -2
  94. data/lib/celluloid/thread.rb +0 -2
  95. data/lib/celluloid/version.rb +1 -1
  96. data/spec/celluloid/block_spec.rb +29 -32
  97. data/spec/celluloid/calls_spec.rb +5 -15
  98. data/spec/celluloid/future_spec.rb +2 -2
  99. data/spec/celluloid/internals/cpu_counter_spec.rb +129 -0
  100. data/spec/celluloid/internals/links_spec.rb +43 -0
  101. data/spec/celluloid/internals/properties_spec.rb +40 -0
  102. data/spec/celluloid/internals/registry_spec.rb +62 -0
  103. data/spec/celluloid/internals/stack/dump_spec.rb +4 -0
  104. data/spec/celluloid/internals/stack/summary_spec.rb +4 -0
  105. data/spec/celluloid/internals/thread_handle_spec.rb +60 -0
  106. data/spec/celluloid/internals/uuid_spec.rb +9 -0
  107. data/spec/celluloid/logging/ring_buffer_spec.rb +36 -0
  108. data/spec/celluloid/mailbox/evented_spec.rb +11 -22
  109. data/spec/celluloid/misc/leak_spec.rb +3 -4
  110. data/spec/celluloid/notifications_spec.rb +140 -0
  111. data/spec/celluloid/probe_spec.rb +102 -0
  112. data/spec/celluloid/proxy_spec.rb +30 -30
  113. data/spec/celluloid/supervision/behavior_spec.rb +74 -0
  114. data/spec/celluloid/supervision/configuration_spec.rb +181 -0
  115. data/spec/celluloid/supervision/container_spec.rb +72 -0
  116. data/spec/celluloid/supervision/instance_spec.rb +13 -0
  117. data/spec/celluloid/supervision/root_spec.rb +28 -0
  118. data/spec/celluloid/supervision/supervisor_spec.rb +93 -0
  119. data/spec/celluloid/task/fibered_spec.rb +1 -3
  120. data/spec/celluloid/task/threaded_spec.rb +1 -3
  121. data/spec/shared/actor_examples.rb +58 -33
  122. data/spec/shared/group_examples.rb +2 -2
  123. data/spec/shared/mailbox_examples.rb +1 -1
  124. data/spec/shared/stack_examples.rb +87 -0
  125. data/spec/shared/task_examples.rb +2 -3
  126. data/spec/spec_helper.rb +2 -4
  127. data/spec/support/configure_rspec.rb +2 -3
  128. data/spec/support/coverage.rb +2 -4
  129. data/spec/support/crash_checking.rb +2 -2
  130. data/spec/support/examples/actor_class.rb +3 -8
  131. data/spec/support/examples/call_class.rb +2 -2
  132. data/spec/support/examples/container_class.rb +35 -0
  133. data/spec/support/examples/evented_mailbox_class.rb +1 -2
  134. data/spec/support/examples/stack_classes.rb +58 -0
  135. data/spec/support/examples/stack_methods.rb +23 -0
  136. data/spec/support/examples/subordinate_class.rb +19 -0
  137. data/spec/support/logging.rb +2 -34
  138. data/spec/support/loose_threads.rb +3 -16
  139. data/spec/support/reset_class_variables.rb +5 -1
  140. data/spec/support/stubbing.rb +1 -1
  141. metadata +91 -316
  142. data/culture/CONDUCT.md +0 -38
  143. data/culture/GSoC/1010-why_we_will_participate.md +0 -17
  144. data/culture/GSoC/1020-how_mentors_stay_engaged.md +0 -7
  145. data/culture/GSoC/1030-keeping_students_on_schedule.md +0 -9
  146. data/culture/GSoC/1040-getting_students_involved.md +0 -5
  147. data/culture/GSoC/1050-student_involvement_after.md +0 -5
  148. data/culture/GSoC/README.md +0 -16
  149. data/culture/Gemfile +0 -9
  150. data/culture/LICENSE.txt +0 -22
  151. data/culture/README.md +0 -22
  152. data/culture/Rakefile +0 -5
  153. data/culture/SYNC.md +0 -70
  154. data/culture/celluloid-culture.gemspec +0 -18
  155. data/culture/gems/README.md +0 -39
  156. data/culture/gems/dependencies.yml +0 -93
  157. data/culture/gems/loader.rb +0 -101
  158. data/culture/rubocop/README.md +0 -38
  159. data/culture/rubocop/lint.yml +0 -8
  160. data/culture/rubocop/metrics.yml +0 -15
  161. data/culture/rubocop/rubocop.yml +0 -5
  162. data/culture/rubocop/style.yml +0 -61
  163. data/culture/spec/gems_spec.rb +0 -2
  164. data/culture/spec/spec_helper.rb +0 -0
  165. data/culture/spec/sync_spec.rb +0 -2
  166. data/culture/sync.rb +0 -56
  167. data/culture/tasks/rspec.rake +0 -5
  168. data/culture/tasks/rubocop.rake +0 -2
  169. data/lib/celluloid/actor/manager.rb +0 -7
  170. data/lib/celluloid/deprecate.rb +0 -34
  171. data/lib/celluloid/fiber.rb +0 -32
  172. data/lib/celluloid/notices.rb +0 -15
  173. data/spec/deprecate/actor_system_spec.rb +0 -72
  174. data/spec/deprecate/block_spec.rb +0 -52
  175. data/spec/deprecate/calls_spec.rb +0 -39
  176. data/spec/deprecate/evented_mailbox_spec.rb +0 -34
  177. data/spec/deprecate/future_spec.rb +0 -32
  178. data/spec/deprecate/internal_pool_spec.rb +0 -4
  179. data/spec/support/env.rb +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6567bb5a07a228657c325a1a1edd3e381a67472f
4
- data.tar.gz: cf7f91e7a2ff18d99d882a896227e3080e50a3d8
2
+ SHA256:
3
+ metadata.gz: 901d303444b94a61e2b4faaf1e957ae442acd5ae2ae0864f9c0fd7af7dbfbe46
4
+ data.tar.gz: ff7fc82458f6b591a74fbc59d329db9082f195f466c9be7be12dec1c8073d621
5
5
  SHA512:
6
- metadata.gz: 9b6257f3e3720fd9e4672719aa6fb711b58d01a6c8bfd71cfa9c41d5e02af64094155a05ba1081ae1d0d7eaf236f34f32f2a645388ff3c245da90d91126d2405
7
- data.tar.gz: de12fdb823cd615c66402fdd14aa45187d7fc950ee6ec52adf039bb884687e07d048d181466bafb8d1b900ba88be5ca276eac4e1c4a083d0a4e8f0ee43b3fdae
6
+ metadata.gz: 71f12fd99271e598bf0e125b1ce44f5b1bc420b34dfabdabb64e80f38e8736c54a5295f6d9ecfcfbdcfde78a10bc79388dba4a18a0b7873415ed86050cc76420
7
+ data.tar.gz: 834996dba23ffde88d9970cd86bb0e5b6975f7658867d3f0f1d2eaba88ab1ebf0b45cc5847a63b11af0df390cab680be94aeb25d0bb5c791f6e997bd172dadf6
data/CHANGES.md CHANGED
@@ -1,8 +1,10 @@
1
- ## 0.18.0.pre (Final release TBD)
1
+ ## 0.18.0.pre2 (Final release TBD)
2
2
 
3
- * Release notes coming soon!
3
+ * TODO (before 0.18.0 final): release notes
4
4
 
5
- ## 0.17.3 (2016-01-18)
5
+ ## [0.17.3] (2016-01-18)
6
+
7
+ [0.17.3]: https://github.com/celluloid/celluloid/compare/v0.17.2...v0.17.3
6
8
 
7
9
  * [#701](https://github.com/celluloid/celluloid/pull/701)
8
10
  Conditions in loose threads loop does not take into account the difference between
@@ -37,22 +39,30 @@
37
39
  * [#666](https://github.com/celluloid/celluloid/pull/666)
38
40
  Don't catch IOError.
39
41
 
40
- ## 0.17.2 (2015-09-30)
42
+ ## [0.17.2] (2015-09-30)
43
+
44
+ [0.17.2]: https://github.com/celluloid/celluloid/compare/v0.17.1.2...v0.17.2
41
45
 
42
46
  * Revamped test suite, using shared RSpec configuration layer provided by Celluloid itself.
43
47
  * Updated gem dependencies provided by Celluloid::Sync... extraneous gems removed, or marked as development dependencies.
44
48
  * Clean up deprecation notes.
45
49
 
46
- ## 0.17.1.2 (2015-08-21)
50
+ ## [0.17.1.2] (2015-08-21)
51
+
52
+ [0.17.1.2]: https://github.com/celluloid/celluloid/compare/v0.17.1.1...v0.17.1.2
47
53
 
48
54
  * Fixes to posted markdown content.
49
55
  * Pull in new gem dependencies.
50
56
 
51
- ## 0.17.1.1 (2015-08-07)
57
+ ## [0.17.1.1] (2015-08-07)
58
+
59
+ [0.17.1.1]: https://github.com/celluloid/celluloid/compare/v0.17.1...v0.17.1.1
52
60
 
53
61
  * Revert "no task to suspend" code from #232.
54
62
 
55
- ## 0.17.1 (2015-08-06)
63
+ ## [0.17.1] (2015-08-06)
64
+
65
+ [0.17.1]: https://github.com/celluloid/celluloid/compare/v0.17.0...v0.17.1
56
66
 
57
67
  * `Celluloid::ActorSystem` moved to `Celluloid::Actor::System`, and from `celluloid/actor_system.rb` to `celluloid/actor/system.rb`
58
68
  * Added extensible API for defining new SystemEvents, and having them handled... without everyone changing `Actor#handle_system_event`.
@@ -60,7 +70,9 @@
60
70
  * General round-up of all "errors" emitted throughout Celluloid, to either be derived from `Celluloid::Error` or `Celluloid::Interruption`.
61
71
  * Added ability to pass a block to `Condition#wait` which runs a `{ |value| ... }` type block if present, once the value is obtained by waiting.
62
72
 
63
- ## 0.17.0 (2015-07-04)
73
+ ## [0.17.0] (2015-07-04)
74
+
75
+ [0.17.0]: https://github.com/celluloid/celluloid/compare/v0.16.0...v0.17.0
64
76
 
65
77
  * Fix $CELLULOID_TEST warnings
66
78
  * Massive overhaul of test suite, end-to-end.
@@ -91,7 +103,9 @@
91
103
  * Implement `Group::Manager` as base for future `Group::Unlocker` and other such systems traversing `ActorSystem#group` regularly.
92
104
  * Reduce number of supervisors instantiated by `ActorSystem` by consolidating them down to `Service::Root` container instances.
93
105
 
94
- ## 0.16.0 (2014-09-04)
106
+ ## [0.16.0] (2014-09-04)
107
+
108
+ [0.16.0]: https://github.com/celluloid/celluloid/compare/v0.15.2...v0.16.0
95
109
 
96
110
  * Factor apart Celluloid::Cell (concurrent objects) from Celluloid::Actor
97
111
  * Introduce Celluloid::ActorSystem as an abstraction around the backend
@@ -110,15 +124,21 @@
110
124
  * Better thread names on JRuby for easier debugging
111
125
  * Thread safety fixes to internal thread pool
112
126
 
113
- ## 0.15.2 (2013-10-06)
127
+ ## [0.15.2] (2013-10-06)
128
+
129
+ [0.15.2]: https://github.com/celluloid/celluloid/compare/v0.15.1...v0.15.2
114
130
 
115
131
  * require 'celluloid/test' for at_exit-free testing
116
132
 
117
- ## 0.15.1 (2013-09-06)
133
+ ## [0.15.1] (2013-09-06)
134
+
135
+ [0.15.1]: https://github.com/celluloid/celluloid/compare/v0.15.0...v0.15.1
118
136
 
119
137
  * Only raise on nested tasks if $CELLULOID_DEBUG is set
120
138
 
121
- ## 0.15.0 (2013-09-04)
139
+ ## [0.15.0] (2013-09-04)
140
+
141
+ [0.15.0]: https://github.com/celluloid/celluloid/compare/v0.14.0...v0.15.0
122
142
 
123
143
  * Remove legacy support for "bang"-method based async invocation
124
144
  * Generic timeout support with Celluloid#timeout
@@ -134,7 +154,9 @@
134
154
  * Reimplement signal system on top of Conditions
135
155
  * Add metadata like the current method to Celluloid::StackDumps
136
156
 
137
- ## 0.14.0 (2013-05-07)
157
+ ## [0.14.0] (2013-05-07)
158
+
159
+ [0.14.0]: https://github.com/celluloid/celluloid/compare/v0.13.0...v0.14.0
138
160
 
139
161
  * Use a Thread-subclass for Celluloid
140
162
  * Implement actor-local variables
@@ -149,7 +171,9 @@
149
171
  * Execute blocks on the sender by default
150
172
  * Fix CPU counter on windows
151
173
 
152
- ## 0.13.0
174
+ ## [0.13.0]
175
+
176
+ [0.13.0]: https://github.com/celluloid/celluloid/compare/v0.12.4...v0.13.0
153
177
 
154
178
  * API change: Require Celluloid with: require 'celluloid/autostart' to
155
179
  automatically start support actors and configure at_exit handler which
@@ -164,7 +188,9 @@
164
188
  * Celluloid#call_chain_id provides UUIDs for calls across actors
165
189
  * Give all thread locals a :celluloid_* prefix
166
190
 
167
- ## 0.12.4
191
+ ## [0.12.4]
192
+
193
+ [0.12.4]: https://github.com/celluloid/celluloid/compare/v0.12.3...v0.12.4
168
194
 
169
195
  * Bugfix: Clear dead/crashed actors out of links
170
196
  * Bugfix: Exclusive mode was broken
@@ -175,16 +201,23 @@
175
201
  * Use #public_send to dispatch Celluloid methods
176
202
  * #idle_size and #busy_size for Celluloid::PoolManager
177
203
 
178
- ## 0.12.3
204
+ ## [0.12.3]
205
+
206
+ [0.12.3]: https://github.com/celluloid/celluloid/compare/v0.12.2...v0.12.3
207
+
179
208
 
180
209
  * Bugfix: Ensure exclusive mode works correctly for per-method case
181
210
  * Bugfix: Exit handlers were not being inherited correctly
182
211
 
183
- ## 0.12.2
212
+ ## [0.12.2]
213
+
214
+ [0.12.2]: https://github.com/celluloid/celluloid/compare/v0.12.1...v0.12.2
184
215
 
185
216
  * Disable IncidentReporter by default
186
217
 
187
- ## 0.12.1
218
+ ## [0.12.1]
219
+
220
+ [0.12.1]: https://github.com/celluloid/celluloid/compare/v0.12.0...v0.12.1
188
221
 
189
222
  * Fix bug in unsetting of exclusive mode
190
223
  * New incident report system for providing better debugging reports
@@ -195,7 +228,9 @@
195
228
  * Remove Celluloid#alive? as it cannot be called in any manner that will ever
196
229
  return anything but true, rendering it useless
197
230
 
198
- ## 0.12.0
231
+ ## [0.12.0]
232
+
233
+ [0.12.0]: https://github.com/celluloid/celluloid/compare/v0.11.1...v0.12.0
199
234
 
200
235
  * Alternative async syntax: actor.async.method in lieu of actor.method!
201
236
  Original syntax still available but will be removed in Celluloid 1.0
@@ -219,7 +254,9 @@
219
254
  defined by use_mailbox. This is now fixed.
220
255
  * `exclusive` class method without arguments makes the whole actor exclusive
221
256
 
222
- ## 0.11.1
257
+ ## [0.11.1]
258
+
259
+ [0.11.1]: https://github.com/celluloid/celluloid/compare/v0.11.0...v0.11.1
223
260
 
224
261
  * 'exclusive' class method marks methods as always exclusive and runs them
225
262
  outside of a Fiber (useful if you need more stack than Fibers provide)
@@ -229,7 +266,9 @@
229
266
  * Celluloid::Timers extracted into the timers gem, which Celluloid now
230
267
  uses for its own timers
231
268
 
232
- ## 0.11.0
269
+ ## [0.11.0]
270
+
271
+ [0.11.0]: https://github.com/celluloid/celluloid/compare/v0.10.0...v0.11.0
233
272
 
234
273
  * Celluloid::Application constant permanently removed
235
274
  * Celluloid::Pool removed in favor of Celluloid.pool
@@ -244,21 +283,27 @@
244
283
  * abort can now accept a string instead of an exception object and will raise
245
284
  RuntimeError in the caller's context
246
285
 
247
- ## 0.10.0
286
+ ## [0.10.0]
287
+
288
+ [0.10.0]: https://github.com/celluloid/celluloid/compare/v0.9.1...v0.10.0
248
289
 
249
290
  * Celluloid::Actor.current is now the de facto way to obtain the current actor
250
291
  * #terminate now uses system messages, making termination take priority over
251
292
  other pending methods
252
293
  * #terminate! provides asynchronous termination
253
294
 
254
- ## 0.9.1
295
+ ## [0.9.1]
296
+
297
+ [0.9.1]: https://github.com/celluloid/celluloid/compare/v0.9.0...v0.9.1
255
298
 
256
299
  * Recurring timers with Celluloid#every(n) { ... }
257
300
  * Obtain UUIDs with Celluloid.uuid
258
301
  * Obtain the number of CPU cores available with Celluloid.cores
259
302
  * Celluloid::Pool defaults to one actor per CPU core max by default
260
303
 
261
- ## 0.9.0
304
+ ## [0.9.0]
305
+
306
+ [0.9.0]: https://github.com/celluloid/celluloid/compare/v0.8.0...v0.9.0
262
307
 
263
308
  * Celluloid::Pool supervises pools of actors
264
309
  * Graceful shutdown which calls #terminate on all actors
@@ -268,7 +313,9 @@
268
313
  * Celluloid.exception_handler { |ex| ... } defines a callback for notifying
269
314
  exceptions (for use with Airbrake, exception_notifier, etc.)
270
315
 
271
- ## 0.8.0
316
+ ## [0.8.0]
317
+
318
+ [0.8.0]: https://github.com/celluloid/celluloid/compare/v0.7.2...v0.8.0
272
319
 
273
320
  * Celluloid::Application is now Celluloid::Group
274
321
  * Futures no longer use a thread unless created with a block
@@ -280,19 +327,25 @@
280
327
  * Celluloid::FSMs are no longer actors themselves
281
328
  * Benchmarks using benchmark_suite
282
329
 
283
- ## 0.7.2
330
+ ## [0.7.2]
331
+
332
+ [0.7.2]: https://github.com/celluloid/celluloid/compare/v0.7.1...v0.7.2
284
333
 
285
334
  * Workaround fiber problems on JRuby 1.6.5.1 in addition to 1.6.5
286
335
  * Fix class displayed when inspecting dead actors
287
336
 
288
- ## 0.7.1
337
+ ## [0.7.1]
338
+
339
+ [0.7.1]: https://github.com/celluloid/celluloid/compare/v0.7.0...v0.7.1
289
340
 
290
341
  * More examples!
291
342
  * Cancel all pending tasks when actors crash
292
343
  * Log all errors that occur during signaling failures
293
344
  * Work around thread-local issues on rbx (see 52325ecd)
294
345
 
295
- ## 0.7.0
346
+ ## [0.7.0]
347
+
348
+ [0.7.0]: https://github.com/celluloid/celluloid/compare/v0.6.2...v0.7.0
296
349
 
297
350
  * Celluloid::Task abstraction replaces Celluloid::Fiber
298
351
  * Celluloid#tasks API to introspect on running tasks
@@ -307,13 +360,17 @@
307
360
  * Celluloid.receive and Celluloid#receive now accept an optional timeout
308
361
  * Celluloid::Mailbox#receive now accepts an optional timeout
309
362
 
310
- ## 0.6.2
363
+ ## [0.6.2]
364
+
365
+ [0.6.2]: https://github.com/celluloid/celluloid/compare/v0.6.1...v0.6.2
311
366
 
312
367
  * List all registered actors with Celluloid::Actor.registered
313
368
  * All logging now handled through Celluloid::Logger
314
369
  * Rescue DeadActorError in Celluloid::ActorProxy#inspect
315
370
 
316
- ## 0.6.1
371
+ ## [0.6.1]
372
+
373
+ [0.6.1]: https://github.com/celluloid/celluloid/compare/v0.6.0...v0.6.1
317
374
 
318
375
  * Celluloid#links obtains Celluloid::Links for a given actor
319
376
  * The #class method is now proxied to actors
@@ -321,7 +378,9 @@
321
378
  * Use Thread.mailbox instead of Thread.current.mailbox to obtain the mailbox
322
379
  for the current thread
323
380
 
324
- ## 0.6.0
381
+ ## [0.6.0]
382
+
383
+ [0.6.0]: https://github.com/celluloid/celluloid/compare/v0.5.0...v0.6.0
325
384
 
326
385
  * Celluloid::Application classes for describing the structure of applications
327
386
  built with Celluloid
@@ -335,7 +394,9 @@
335
394
  * Add Celluloid.fiber and Celluloid.resume_fiber to allow extension APIs to
336
395
  participate in the Celluloid fiber protocol
337
396
 
338
- ## 0.5.0
397
+ ## [0.5.0]
398
+
399
+ [0.5.0]: https://github.com/celluloid/celluloid/compare/v0.4.0...v0.5.0
339
400
 
340
401
  * "include Celluloid::Actor" no longer supported. Use "include Celluloid"
341
402
  * New Celluloid::IO module for actors that multiplex IO operations
@@ -351,15 +412,21 @@
351
412
  * Magically skip ahead a few version numbers to impart the magnitude of this
352
413
  release. It's my versioning scheme and I can do what I wanna.
353
414
 
354
- ## 0.4.0
415
+ ## [0.4.0]
416
+
417
+ [0.4.0]: https://github.com/celluloid/celluloid/compare/v0.3.0...v0.4.0
355
418
 
356
419
  * This version was mysteriously lost to the sands of time
357
420
 
358
- ## 0.3.0
421
+ ## [0.3.0]
422
+
423
+ [0.3.0]: https://github.com/celluloid/celluloid/compare/v0.2.2...v0.3.0
359
424
 
360
425
  * This version was also mysteriously lost to the sands of time
361
426
 
362
- ## 0.2.2
427
+ ## [0.2.2]
428
+
429
+ [0.2.2]: https://github.com/celluloid/celluloid/compare/v0.2.1...v0.2.2
363
430
 
364
431
  * AbortErrors now reraise in caller scope and get a caller-focused backtrace
365
432
  * Log failed async calls instead of just letting them fail silently
@@ -367,11 +434,15 @@
367
434
  * Actors can now make async calls to themselves
368
435
  * Resolve crashes that occur when sending responses to exited/dead callers
369
436
 
370
- ## 0.2.1
437
+ ## [0.2.1]
438
+
439
+ [0.2.1]: https://github.com/celluloid/celluloid/compare/v0.2.0...v0.2.1
371
440
 
372
441
  * Hack around a bug of an indeterminate cause (2baba3d2)
373
442
 
374
- ## 0.2.0
443
+ ## [0.2.0]
444
+
445
+ [0.2.0]: https://github.com/celluloid/celluloid/compare/v0.1.0...v0.2.0
375
446
 
376
447
  * Support for future method calls with MyActor#future
377
448
  * Initial signaling support via MyActor#signal and MyActor#wait
@@ -380,7 +451,9 @@
380
451
  * Add an underscore prefix to all of Celluloid's instance variables so they don't
381
452
  clash with user-defined ones.
382
453
 
383
- ## 0.1.0
454
+ ## [0.1.0]
455
+
456
+ [0.1.0]: https://github.com/celluloid/celluloid/compare/v0.0.3...v0.1.0
384
457
 
385
458
  * Fiber-based reentrant actors. Requires Ruby 1.9
386
459
  * MyActor.new (where MyActor includes Celluloid::Actor) is now identical to .spawn
@@ -390,7 +463,9 @@
390
463
  * Synchronization now based on ConditionVariables instead of Celluloid::Waker
391
464
  * Determine if you're in actor scope with Celluloid.actor?
392
465
 
393
- ## 0.0.3
466
+ ## [0.0.3]
467
+
468
+ [0.0.3]: https://github.com/celluloid/celluloid/compare/v0.0.1...v0.0.3
394
469
 
395
470
  * Remove self-referential dependency in gemspec
396
471
 
@@ -0,0 +1,13 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
4
+
5
+ We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, age, or religion.
6
+
7
+ Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
8
+
9
+ Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.
10
+
11
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
12
+
13
+ This Code of Conduct is adapted from the [Contributor Covenant](http:contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
@@ -0,0 +1,39 @@
1
+ # Contribution Guidelines
2
+
3
+ If you are seeking support, or for discussions about Celluloid, you can use [the mailing list](http://groups.google.com/group/celluloid-ruby) or the IRC channel, #celluloid on freenode.
4
+
5
+ If you encounter an issue with Celluloid itself, you should go through the following checklist:
6
+
7
+ * Is this a known bug or are you falling into a common trap? Check the [Gotchas wiki page](https://github.com/celluloid/celluloid/wiki/Gotchas).
8
+ * Is there already an issue filed which looks like your issue? Check the [issue tracker](https://github.com/celluloid/celluloid/issues).
9
+ * Is the problem present in the latest released version of Celluloid? Upgrade and check!
10
+ * Is the problem present on the master branch of Celluloid? [Run pre-release](#running-pre-release-celluloid) from source control and check!
11
+
12
+ If you don't get anywhere with this checklist, please feel free to [file a bug report](#filing-a-bug-report).
13
+
14
+ ## Running pre-release Celluloid
15
+
16
+ If you encounter a bug, it's entirely possible that it has already been fixed but not yet included in a released version. You can establish this by trying to run your application with a pre-release version of Celluloid direct from source control. You can do this by modifying your application's Gemfile as follows:
17
+
18
+ ```ruby
19
+ gem 'celluloid', github: 'celluloid', submodules: true
20
+ ```
21
+
22
+ If it is suggested to you that you try a different branch, add `branch: 'somebranch'`.
23
+
24
+ If the problem is resolved, feel free to voice your desire for a new release of Celluloid on IRC (`irc.freenode.net/#celluloid`).
25
+
26
+ If it persists, you should consider [filing a bug report](#filing-a-bug-report).
27
+
28
+ ## Filing a bug report
29
+
30
+ * Bug reports should be filed on the [GitHub issue tracker](https://github.com/celluloid/celluloid/issues). Bug reports should contain the following things:
31
+ * A sensible subject that helps quickly identify the issue.
32
+ * Full steps to reproduce the issue, including minimal reproduction code. A minimal reproduction means only what is necessary to display the problem and nothing more. This is perhaps the most important thing, don't skip it!
33
+ * Output from a reproduction.
34
+ * Full references for version numbers (of Celluloid, dependencies, Ruby, Operating System, etc). One easy way to do this is to post your Gemfile.lock, though you will still need to tell us what version of Ruby is in use.
35
+ * See: [Triage Process](https://github.com/celluloid/celluloid/wiki/Triage-Process)
36
+ * Some more guidelines on filing good bug reports:
37
+ * http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
38
+ * http://itscommonsensestupid.blogspot.com/2008/07/tips-to-write-good-bug-report.html
39
+ * http://timheuer.com/blog/archive/2011/10/12/anatomy-of-a-good-bug-report.aspx
data/README.md CHANGED
@@ -1,9 +1,24 @@
1
- ![Celluloid](https://raw.github.com/celluloid/celluloid-logos/master/celluloid/celluloid.png)
2
- =========
3
- [![Gem Version](https://badge.fury.io/rb/celluloid.svg)](http://rubygems.org/gems/celluloid)
4
- [![Build Status](https://secure.travis-ci.org/celluloid/celluloid.svg?branch=master)](http://travis-ci.org/celluloid/celluloid)
5
- [![Code Climate](https://codeclimate.com/github/celluloid/celluloid.svg)](https://codeclimate.com/github/celluloid/celluloid)
6
- [![Coverage Status](https://coveralls.io/repos/celluloid/celluloid/badge.svg?branch=master)](https://coveralls.io/r/celluloid/celluloid)
1
+ # ![Celluloid][celluloid-logo-image-raw]
2
+
3
+ [![Gem Version][gem-image]][gem-link]
4
+ [![MIT licensed][license-image]][license-link]
5
+ [![Build Status][build-image]][build-link]
6
+ [![Maintained: no][maintained-image]][maintained-link]
7
+
8
+ [celluloid-logo-image-raw]: https://raw.github.com/celluloid/celluloid-logos/master/celluloid/celluloid.png
9
+ [gem-image]: https://badge.fury.io/rb/celluloid.svg
10
+ [gem-link]: http://rubygems.org/gems/celluloid
11
+ [build-image]: https://secure.travis-ci.org/celluloid/celluloid.svg?branch=master
12
+ [build-link]: http://travis-ci.org/celluloid/celluloid
13
+ [license-image]: https://img.shields.io/badge/license-MIT-blue.svg
14
+ [license-link]: https://github.com/celluloid/celluloid/blob/master/LICENSE.txt
15
+ [maintained-image]: https://img.shields.io/maintenance/no/2016.svg
16
+ [maintained-link]: https://github.com/celluloid/celluloid/issues/779
17
+
18
+ _NOTE: This is the 0.18.x **development** branch of Celluloid. For the 0.17.x
19
+ **stable** branch, please see:_
20
+
21
+ https://github.com/celluloid/celluloid/tree/0-17-stable
7
22
 
8
23
  > "I thought of objects being like biological cells and/or individual
9
24
  > computers on a network, only able to communicate with messages"
@@ -15,6 +30,8 @@ objects just as easily as you build sequential programs out of regular objects.
15
30
  Recommended for any developer, including novices, Celluloid should help ease
16
31
  your worries about building multithreaded Ruby programs.
17
32
 
33
+ ## Motivation
34
+
18
35
  Much of the difficulty with building concurrent programs in Ruby arises because
19
36
  the object-oriented mechanisms for structuring code, such as classes and
20
37
  inheritance, are separate from the concurrency mechanisms, such as threads and
@@ -69,9 +86,6 @@ to EventMachine (with a synchronous API instead of callback/deferrable soup)
69
86
  is available through the [Celluloid::IO](https://github.com/celluloid/celluloid-io)
70
87
  library.
71
88
 
72
- Like Celluloid? [Join the mailing list/Google Group](http://groups.google.com/group/celluloid-ruby)
73
- or visit us on IRC at #celluloid on freenode
74
-
75
89
  ### Is it any good?
76
90
 
77
91
  [Yes](http://news.ycombinator.com/item?id=3067434)
@@ -82,8 +96,12 @@ Yes, many users are now running Celluloid in production.
82
96
 
83
97
  * **See:** [Projects Using Celluloid](https://github.com/celluloid/celluloid/wiki/Projects-Using-Celluloid)
84
98
 
85
- Documentation
86
- -------------
99
+ ## Discussion
100
+
101
+ Like Celluloid? [Join the mailing list/Google Group](http://groups.google.com/group/celluloid-ruby)
102
+ or visit us on IRC at #celluloid on freenode
103
+
104
+ ## Documentation
87
105
 
88
106
  [Please see the Celluloid Wiki](https://github.com/celluloid/celluloid/wiki)
89
107
  for more detailed documentation and usage notes.
@@ -95,8 +113,7 @@ The following API documentation is also available:
95
113
  * [Celluloid class methods](http://rubydoc.info/gems/celluloid/Celluloid/ClassMethods)
96
114
  * [All Celluloid classes](http://rubydoc.info/gems/celluloid/index)
97
115
 
98
- Related Projects
99
- ----------------
116
+ ## Related Projects
100
117
 
101
118
  Celluloid is the parent project of a related ecosystem of other projects. If you
102
119
  like Celluloid we definitely recommend you check them out:
@@ -123,14 +140,11 @@ like Celluloid we definitely recommend you check them out:
123
140
  [nio4r]: https://github.com/celluloid/nio4r/
124
141
  [timers]: https://github.com/celluloid/timers/
125
142
 
126
- Installation
127
- ------------
143
+ ## Installation
128
144
 
129
145
  Add this line to your application's Gemfile:
130
146
 
131
- ```ruby
132
- gem 'celluloid'
133
- ```
147
+ gem 'celluloid'
134
148
 
135
149
  And then execute:
136
150
 
@@ -140,61 +154,51 @@ Or install it yourself as:
140
154
 
141
155
  $ gem install celluloid
142
156
 
143
- Inside of your Ruby program, require Celluloid with [newest API](https://github.com/celluloid/celluloid/wiki/DEPRECATION-WARNING):
144
-
145
- ```ruby
146
- require 'celluloid/current'
147
- ```
148
-
149
- Or to support the old API, use:
157
+ Require Celluloid with:
150
158
 
151
- ```ruby
152
- require 'celluloid/backported'
153
- ```
159
+ require 'celluloid'
154
160
 
155
- ###Cloning via GitHub
161
+ ## Supported Platforms
156
162
 
157
- Right now `Celluloid` has a [submodule](https://github.com/celluloid/culture). To install the framework via GitHub, you need to clone the submodules as well.
163
+ This library aims to support and is [tested against][travis] the following Ruby
164
+ versions:
158
165
 
159
- __Clone from scratch:__
166
+ * Ruby 2.2.6+
167
+ * Ruby 2.3.0+
168
+ * JRuby 9.1.6.0+
160
169
 
161
- $ git clone --recursive https://github.com/celluloid/celluloid
162
-
163
- __If you already cloned `Celluloid` without submodules:__
170
+ If something doesn't work on one of these versions, it's a bug.
164
171
 
165
- Run the following command in the directory containing `Celluloid`:
172
+ This library may inadvertently work (or seem to work) on other Ruby versions,
173
+ however support will only be provided for the versions listed above.
166
174
 
167
- git submodule update --init --recursive
175
+ If you would like this library to support another Ruby version or
176
+ implementation, you may volunteer to be a maintainer. Being a maintainer
177
+ entails making sure all tests run and pass on that implementation. When
178
+ something breaks on your implementation, you will be responsible for providing
179
+ patches in a timely fashion. If critical issues for a particular implementation
180
+ exist at the time of a major release, support for that Ruby version may be
181
+ dropped.
168
182
 
169
- Supported Platforms
170
- -------------------
183
+ [travis]: http://travis-ci.org/celluloid/celluloid/
171
184
 
172
- Celluloid works on Ruby 2.0+, JRuby 1.7+, and Rubinius 2.0.
185
+ ## Additional Reading
173
186
 
174
- JRuby or Rubinius are the preferred platforms as they support true thread-level
175
- parallelism when executing Ruby code, whereas MRI/YARV is constrained by a global
176
- interpreter lock (GIL) and can only execute one thread at a time.
177
-
178
- Celluloid requires Ruby 1.9 mode or higher on all interpreters.
179
-
180
- Additional Reading
181
- ------------------
182
-
183
- * [Concurrent Object-Oriented Programming in Python with
184
- ATOM](http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=11A3EACE78AAFF6D6D62A64118AFCA7C?doi=10.1.1.47.5074&rep=rep1&type=pdf):
187
+ * [Concurrent Object-Oriented Programming in Python with ATOM][ATOM]
185
188
  a similar system to Celluloid written in Python
186
189
 
187
- Contributing to Celluloid
188
- -------------------------
190
+ [ATOM]: http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=11A3EACE78AAFF6D6D62A64118AFCA7C?doi=10.1.1.47.5074&rep=rep1&type=pdf
191
+
192
+ ## Contributing to Celluloid
189
193
 
190
194
  * Fork this repository on github
191
195
  * Make your changes and send us a pull request
192
196
  * If we like them we'll merge them
193
197
  * If we've accepted a patch, feel free to ask for commit access
194
198
 
195
- License
196
- -------
199
+ ## License
197
200
 
198
201
  Copyright (c) 2011-2016 Tony Arcieri, Donovan Keme.
199
202
 
200
- Distributed under the MIT License. See [LICENSE.txt](https://github.com/celluloid/celluloid/blob/master/LICENSE.txt) for further details.
203
+ Distributed under the MIT License. See [LICENSE.txt](https://github.com/celluloid/celluloid/blob/master/LICENSE.txt)
204
+ for further details.