celluloid 0.16.0 → 0.17.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +394 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +28 -15
  5. data/culture/CONDUCT.md +28 -0
  6. data/culture/Gemfile +9 -0
  7. data/culture/LICENSE.txt +22 -0
  8. data/culture/README.md +22 -0
  9. data/culture/Rakefile +5 -0
  10. data/culture/SYNC.md +70 -0
  11. data/culture/celluloid-culture.gemspec +18 -0
  12. data/culture/gems/README.md +39 -0
  13. data/culture/gems/dependencies.yml +85 -0
  14. data/culture/gems/loader.rb +101 -0
  15. data/culture/rubocop/README.md +38 -0
  16. data/culture/rubocop/lint.yml +8 -0
  17. data/culture/rubocop/metrics.yml +15 -0
  18. data/culture/rubocop/perf.yml +0 -0
  19. data/culture/rubocop/rubocop.yml +5 -0
  20. data/culture/rubocop/style.yml +57 -0
  21. data/culture/spec/gems_spec.rb +2 -0
  22. data/culture/spec/spec_helper.rb +0 -0
  23. data/culture/spec/sync_spec.rb +2 -0
  24. data/culture/sync.rb +56 -0
  25. data/culture/tasks/rspec.rake +5 -0
  26. data/culture/tasks/rubocop.rake +2 -0
  27. data/examples/basic_usage.rb +49 -0
  28. data/examples/futures.rb +38 -0
  29. data/examples/ring.rb +61 -0
  30. data/examples/simple_pmap.rb +14 -0
  31. data/examples/stack.rb +47 -0
  32. data/examples/timers.rb +72 -0
  33. data/lib/celluloid/actor/manager.rb +7 -0
  34. data/lib/celluloid/actor/system.rb +163 -0
  35. data/lib/celluloid/actor.rb +53 -71
  36. data/lib/celluloid/autostart.rb +1 -1
  37. data/lib/celluloid/backported.rb +2 -0
  38. data/lib/celluloid/call/async.rb +16 -0
  39. data/lib/celluloid/call/block.rb +22 -0
  40. data/lib/celluloid/call/sync.rb +70 -0
  41. data/lib/celluloid/calls.rb +24 -114
  42. data/lib/celluloid/cell.rb +32 -20
  43. data/lib/celluloid/condition.rb +5 -6
  44. data/lib/celluloid/core_ext.rb +1 -1
  45. data/lib/celluloid/current.rb +2 -0
  46. data/lib/celluloid/debug.rb +1 -0
  47. data/lib/celluloid/deprecate.rb +21 -0
  48. data/lib/celluloid/exceptions.rb +22 -16
  49. data/lib/celluloid/fiber.rb +3 -3
  50. data/lib/celluloid/future.rb +46 -8
  51. data/lib/celluloid/group/pool.rb +125 -0
  52. data/lib/celluloid/group/spawner.rb +68 -0
  53. data/lib/celluloid/group.rb +61 -0
  54. data/lib/celluloid/logging.rb +5 -5
  55. data/lib/celluloid/mailbox/evented.rb +74 -0
  56. data/lib/celluloid/mailbox.rb +15 -14
  57. data/lib/celluloid/managed.rb +3 -0
  58. data/lib/celluloid/notices.rb +15 -0
  59. data/lib/celluloid/proxies.rb +11 -0
  60. data/lib/celluloid/proxy/abstract.rb +50 -0
  61. data/lib/celluloid/proxy/actor.rb +37 -0
  62. data/lib/celluloid/proxy/async.rb +15 -0
  63. data/lib/celluloid/proxy/block.rb +28 -0
  64. data/lib/celluloid/proxy/cell.rb +66 -0
  65. data/lib/celluloid/proxy/future.rb +20 -0
  66. data/lib/celluloid/proxy/sync.rb +24 -0
  67. data/lib/celluloid/rspec.rb +67 -9
  68. data/lib/celluloid/system_events.rb +69 -14
  69. data/lib/celluloid/task/fibered.rb +45 -0
  70. data/lib/celluloid/task/threaded.rb +59 -0
  71. data/lib/celluloid/{tasks.rb → task.rb} +30 -38
  72. data/lib/celluloid/test.rb +1 -1
  73. data/lib/celluloid/thread.rb +6 -1
  74. data/lib/celluloid/version.rb +3 -0
  75. data/lib/celluloid.rb +151 -130
  76. data/spec/celluloid/actor/system_spec.rb +83 -0
  77. data/spec/celluloid/actor_spec.rb +2 -2
  78. data/spec/celluloid/block_spec.rb +67 -8
  79. data/spec/celluloid/calls_spec.rb +28 -23
  80. data/spec/celluloid/condition_spec.rb +23 -14
  81. data/spec/celluloid/evented_mailbox_spec.rb +1 -31
  82. data/spec/celluloid/future_spec.rb +15 -12
  83. data/spec/celluloid/group/elastic_spec.rb +0 -0
  84. data/spec/celluloid/group/pool_spec.rb +8 -0
  85. data/spec/celluloid/group/spawner_spec.rb +17 -0
  86. data/spec/celluloid/mailbox/evented_spec.rb +40 -0
  87. data/spec/celluloid/mailbox_spec.rb +1 -3
  88. data/spec/celluloid/misc/leak_spec.rb +73 -0
  89. data/spec/celluloid/proxy_spec.rb +33 -0
  90. data/spec/celluloid/task/fibered_spec.rb +5 -0
  91. data/spec/celluloid/task/threaded_spec.rb +5 -0
  92. data/spec/celluloid/timer_spec.rb +14 -16
  93. data/spec/deprecate/actor_system_spec.rb +72 -0
  94. data/spec/deprecate/block_spec.rb +52 -0
  95. data/spec/deprecate/calls_spec.rb +39 -0
  96. data/spec/deprecate/evented_mailbox_spec.rb +34 -0
  97. data/spec/deprecate/future_spec.rb +32 -0
  98. data/spec/deprecate/internal_pool_spec.rb +4 -0
  99. data/spec/shared/actor_examples.rb +1259 -0
  100. data/spec/shared/group_examples.rb +121 -0
  101. data/spec/shared/mailbox_examples.rb +87 -0
  102. data/{lib/celluloid/rspec → spec/shared}/task_examples.rb +9 -8
  103. data/spec/spec_helper.rb +5 -42
  104. data/spec/support/configure_rspec.rb +77 -0
  105. data/spec/support/coverage.rb +4 -0
  106. data/spec/support/crash_checking.rb +68 -0
  107. data/spec/support/debugging.rb +31 -0
  108. data/spec/support/env.rb +21 -0
  109. data/{lib/celluloid/rspec/example_actor_class.rb → spec/support/examples/actor_class.rb} +21 -2
  110. data/spec/support/examples/call_class.rb +37 -0
  111. data/spec/support/examples/evented_mailbox_class.rb +27 -0
  112. data/spec/support/includer.rb +6 -0
  113. data/spec/support/logging.rb +55 -0
  114. data/spec/support/loose_threads.rb +68 -0
  115. data/spec/support/reset_class_variables.rb +27 -0
  116. data/spec/support/sleep_and_wait.rb +14 -0
  117. data/spec/support/stubbing.rb +14 -0
  118. metadata +276 -78
  119. data/lib/celluloid/actor_system.rb +0 -107
  120. data/lib/celluloid/call_chain.rb +0 -13
  121. data/lib/celluloid/cpu_counter.rb +0 -34
  122. data/lib/celluloid/evented_mailbox.rb +0 -73
  123. data/lib/celluloid/fsm.rb +0 -186
  124. data/lib/celluloid/handlers.rb +0 -41
  125. data/lib/celluloid/internal_pool.rb +0 -159
  126. data/lib/celluloid/legacy.rb +0 -9
  127. data/lib/celluloid/links.rb +0 -36
  128. data/lib/celluloid/logger.rb +0 -93
  129. data/lib/celluloid/logging/incident.rb +0 -21
  130. data/lib/celluloid/logging/incident_logger.rb +0 -129
  131. data/lib/celluloid/logging/incident_reporter.rb +0 -48
  132. data/lib/celluloid/logging/log_event.rb +0 -20
  133. data/lib/celluloid/logging/ring_buffer.rb +0 -65
  134. data/lib/celluloid/method.rb +0 -32
  135. data/lib/celluloid/notifications.rb +0 -83
  136. data/lib/celluloid/pool_manager.rb +0 -146
  137. data/lib/celluloid/probe.rb +0 -73
  138. data/lib/celluloid/properties.rb +0 -24
  139. data/lib/celluloid/proxies/abstract_proxy.rb +0 -20
  140. data/lib/celluloid/proxies/actor_proxy.rb +0 -38
  141. data/lib/celluloid/proxies/async_proxy.rb +0 -31
  142. data/lib/celluloid/proxies/block_proxy.rb +0 -29
  143. data/lib/celluloid/proxies/cell_proxy.rb +0 -68
  144. data/lib/celluloid/proxies/future_proxy.rb +0 -35
  145. data/lib/celluloid/proxies/sync_proxy.rb +0 -36
  146. data/lib/celluloid/receivers.rb +0 -63
  147. data/lib/celluloid/registry.rb +0 -57
  148. data/lib/celluloid/responses.rb +0 -44
  149. data/lib/celluloid/rspec/actor_examples.rb +0 -1054
  150. data/lib/celluloid/rspec/mailbox_examples.rb +0 -84
  151. data/lib/celluloid/signals.rb +0 -23
  152. data/lib/celluloid/stack_dump.rb +0 -133
  153. data/lib/celluloid/supervision_group.rb +0 -169
  154. data/lib/celluloid/supervisor.rb +0 -22
  155. data/lib/celluloid/task_set.rb +0 -49
  156. data/lib/celluloid/tasks/task_fiber.rb +0 -43
  157. data/lib/celluloid/tasks/task_thread.rb +0 -53
  158. data/lib/celluloid/thread_handle.rb +0 -50
  159. data/lib/celluloid/uuid.rb +0 -38
  160. data/spec/celluloid/actor_system_spec.rb +0 -69
  161. data/spec/celluloid/cpu_counter_spec.rb +0 -82
  162. data/spec/celluloid/fsm_spec.rb +0 -107
  163. data/spec/celluloid/internal_pool_spec.rb +0 -52
  164. data/spec/celluloid/links_spec.rb +0 -45
  165. data/spec/celluloid/logging/ring_buffer_spec.rb +0 -38
  166. data/spec/celluloid/notifications_spec.rb +0 -120
  167. data/spec/celluloid/pool_spec.rb +0 -92
  168. data/spec/celluloid/probe_spec.rb +0 -121
  169. data/spec/celluloid/properties_spec.rb +0 -42
  170. data/spec/celluloid/registry_spec.rb +0 -64
  171. data/spec/celluloid/stack_dump_spec.rb +0 -64
  172. data/spec/celluloid/supervision_group_spec.rb +0 -65
  173. data/spec/celluloid/supervisor_spec.rb +0 -103
  174. data/spec/celluloid/tasks/task_fiber_spec.rb +0 -5
  175. data/spec/celluloid/tasks/task_thread_spec.rb +0 -5
  176. data/spec/celluloid/thread_handle_spec.rb +0 -26
  177. data/spec/celluloid/uuid_spec.rb +0 -11
@@ -0,0 +1,68 @@
1
+ module Specs
2
+ class << self
3
+ def loose_threads
4
+ Thread.list.map do |thread|
5
+ next unless thread
6
+ next if thread == Thread.current
7
+
8
+ if RUBY_PLATFORM == "java"
9
+ # Avoid disrupting jRuby's "fiber" threads.
10
+ name = thread.to_java.getNativeThread.get_name
11
+ next if /Fiber/ =~ name
12
+ next unless /^Ruby-/ =~ name
13
+ backtrace = thread.backtrace # avoid race maybe
14
+ next unless backtrace
15
+ next if backtrace.empty? # possibly a timer thread
16
+ end
17
+
18
+ if RUBY_ENGINE == "rbx"
19
+ # Avoid disrupting Rubinious thread
20
+ next if thread.backtrace.first =~ %r{rubysl/timeout/timeout\.rb}
21
+
22
+ if Specs::ALLOW_SLOW_MAILBOXES
23
+ if thread.backtrace.first =~ /wait/
24
+ next if thread.backtrace[1] =~ /mailbox\.rb/ && thread.backtrace[1] =~ /check/
25
+ end
26
+ end
27
+ end
28
+
29
+ if RUBY_ENGINE == "ruby"
30
+ # Sometimes stays
31
+ next if thread.backtrace.nil?
32
+ next unless thread.backtrace.is_a?(Array)
33
+ next if thread.backtrace.empty?
34
+ next if thread.backtrace.first =~ /timeout\.rb/
35
+ end
36
+
37
+ thread
38
+ end.compact
39
+ end
40
+
41
+ def thread_name(thread)
42
+ (RUBY_PLATFORM == "java") ? thread.to_java.getNativeThread.get_name : ""
43
+ end
44
+
45
+ def assert_no_loose_threads!(location)
46
+ loose = Specs.loose_threads
47
+ backtraces = loose.map do |thread|
48
+ name = thread_name(thread)
49
+ description = "#{thread.inspect}#{name.empty? ? '' : "(#{name})"}"
50
+ "Runaway thread: ================ #{description}\n" \
51
+ "Backtrace: \n ** #{thread.backtrace * "\n ** "}\n"
52
+ end
53
+
54
+ return if loose.empty?
55
+
56
+ if RUBY_PLATFORM == "java" && !Nenv.ci?
57
+ STDERR.puts "Aborted due to runaway threads (#{location})\n"\
58
+ "List: (#{loose.map(&:inspect)})\n:#{backtraces.join("\n")}"
59
+
60
+ STDERR.puts "Sleeping so you can investigate on the Java side...."
61
+ sleep
62
+ end
63
+
64
+ fail Celluloid::ThreadLeak, "Aborted due to runaway threads (#{location})\n"\
65
+ "List: (#{loose.map(&:inspect)})\n:#{backtraces.join("\n")}"
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,27 @@
1
+ module Specs
2
+ class << self
3
+ def reset_class_variables(description)
4
+ # build uuid from example ending (most unique)
5
+ uuid_prefix = description[-([description.size, 20].min)..-1]
6
+ reset_uuid(uuid_prefix)
7
+
8
+ reset_probe(Queue.new)
9
+ yield
10
+ reset_probe(nil)
11
+ end
12
+
13
+ def reset_probe(value)
14
+ $CELLULOID_MONITORING = !value.nil?
15
+ replace_const(Celluloid::Probe, :EVENTS_BUFFER, value)
16
+ end
17
+
18
+ def reset_uuid(uuid_prefix)
19
+ replace_const(Celluloid::Internals::UUID, :PREFIX, uuid_prefix)
20
+ end
21
+
22
+ def replace_const(klass, const, value)
23
+ klass.send(:remove_const, const) if klass.const_defined?(const)
24
+ klass.const_set(const, value)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,14 @@
1
+ module Specs
2
+ def self.sleep_and_wait_until(timeout = 10)
3
+ t1 = Time.now.to_f
4
+ ::Timeout.timeout(timeout) do
5
+ loop until yield
6
+ end
7
+
8
+ diff = Time.now.to_f - t1
9
+ STDERR.puts "wait took a bit long: #{diff} seconds" if diff > Specs::TIMER_QUANTUM
10
+ rescue Timeout::Error
11
+ t2 = Time.now.to_f
12
+ raise "Timeout after: #{t2 - t1} seconds"
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Specs
2
+ def self.stub_out_class_method(mod, meth)
3
+ meta = (class << mod; self; end)
4
+ original_meth = "original_#{meth}".to_sym
5
+
6
+ fail "ALREADY TRACED: #{mod}.#{meth}" if mod.respond_to?(original_meth)
7
+
8
+ meta.send(:alias_method, original_meth, meth)
9
+ meta.send(:define_method, meth) do |*args, &block|
10
+ yield(*args) if block_given?
11
+ mod.send original_meth, *args, &block
12
+ end
13
+ end
14
+ end
metadata CHANGED
@@ -1,29 +1,114 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: celluloid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.0
4
+ version: 0.17.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Arcieri
8
+ - Donovan Keme
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-09-05 00:00:00.000000000 Z
12
+ date: 2016-01-18 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: timers
15
+ name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - "~>"
18
+ - - ">="
18
19
  - !ruby/object:Gem::Version
19
- version: 4.0.0
20
- type: :runtime
20
+ version: '0'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: nenv
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: dotenv
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: benchmark_suite
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rubocop
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: transpec
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: pry
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
21
106
  prerelease: false
22
107
  version_requirements: !ruby/object:Gem::Requirement
23
108
  requirements:
24
- - - "~>"
109
+ - - ">="
25
110
  - !ruby/object:Gem::Version
26
- version: 4.0.0
111
+ version: '0'
27
112
  - !ruby/object:Gem::Dependency
28
113
  name: rake
29
114
  requirement: !ruby/object:Gem::Requirement
@@ -42,16 +127,16 @@ dependencies:
42
127
  name: rspec
43
128
  requirement: !ruby/object:Gem::Requirement
44
129
  requirements:
45
- - - "~>"
130
+ - - ">="
46
131
  - !ruby/object:Gem::Version
47
- version: 2.14.1
132
+ version: '0'
48
133
  type: :development
49
134
  prerelease: false
50
135
  version_requirements: !ruby/object:Gem::Requirement
51
136
  requirements:
52
- - - "~>"
137
+ - - ">="
53
138
  - !ruby/object:Gem::Version
54
- version: 2.14.1
139
+ version: '0'
55
140
  - !ruby/object:Gem::Dependency
56
141
  name: guard-rspec
57
142
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +152,7 @@ dependencies:
67
152
  - !ruby/object:Gem::Version
68
153
  version: '0'
69
154
  - !ruby/object:Gem::Dependency
70
- name: benchmark_suite
155
+ name: rspec-retry
71
156
  requirement: !ruby/object:Gem::Requirement
72
157
  requirements:
73
158
  - - ">="
@@ -81,7 +166,7 @@ dependencies:
81
166
  - !ruby/object:Gem::Version
82
167
  version: '0'
83
168
  - !ruby/object:Gem::Dependency
84
- name: rubocop
169
+ name: coveralls
85
170
  requirement: !ruby/object:Gem::Requirement
86
171
  requirements:
87
172
  - - ">="
@@ -94,103 +179,215 @@ dependencies:
94
179
  - - ">="
95
180
  - !ruby/object:Gem::Version
96
181
  version: '0'
182
+ - !ruby/object:Gem::Dependency
183
+ name: celluloid-essentials
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ type: :runtime
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ - !ruby/object:Gem::Dependency
197
+ name: celluloid-supervision
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ type: :runtime
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ - !ruby/object:Gem::Dependency
211
+ name: celluloid-pool
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ type: :runtime
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ - !ruby/object:Gem::Dependency
225
+ name: celluloid-fsm
226
+ requirement: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ type: :runtime
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: celluloid-extras
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ type: :runtime
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ">="
250
+ - !ruby/object:Gem::Version
251
+ version: '0'
252
+ - !ruby/object:Gem::Dependency
253
+ name: timers
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: 4.1.1
259
+ type: :runtime
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ">="
264
+ - !ruby/object:Gem::Version
265
+ version: 4.1.1
97
266
  description: Celluloid enables people to build concurrent programs out of concurrent
98
267
  objects just as easily as they build sequential programs out of sequential objects
99
268
  email:
100
269
  - tony.arcieri@gmail.com
270
+ - code@extremist.digital
101
271
  executables: []
102
272
  extensions: []
103
273
  extra_rdoc_files: []
104
274
  files:
275
+ - CHANGES.md
105
276
  - LICENSE.txt
106
277
  - README.md
278
+ - culture/CONDUCT.md
279
+ - culture/Gemfile
280
+ - culture/LICENSE.txt
281
+ - culture/README.md
282
+ - culture/Rakefile
283
+ - culture/SYNC.md
284
+ - culture/celluloid-culture.gemspec
285
+ - culture/gems/README.md
286
+ - culture/gems/dependencies.yml
287
+ - culture/gems/loader.rb
288
+ - culture/rubocop/README.md
289
+ - culture/rubocop/lint.yml
290
+ - culture/rubocop/metrics.yml
291
+ - culture/rubocop/perf.yml
292
+ - culture/rubocop/rubocop.yml
293
+ - culture/rubocop/style.yml
294
+ - culture/spec/gems_spec.rb
295
+ - culture/spec/spec_helper.rb
296
+ - culture/spec/sync_spec.rb
297
+ - culture/sync.rb
298
+ - culture/tasks/rspec.rake
299
+ - culture/tasks/rubocop.rake
300
+ - examples/basic_usage.rb
301
+ - examples/futures.rb
302
+ - examples/ring.rb
303
+ - examples/simple_pmap.rb
304
+ - examples/stack.rb
305
+ - examples/timers.rb
107
306
  - lib/celluloid.rb
108
307
  - lib/celluloid/actor.rb
109
- - lib/celluloid/actor_system.rb
308
+ - lib/celluloid/actor/manager.rb
309
+ - lib/celluloid/actor/system.rb
110
310
  - lib/celluloid/autostart.rb
111
- - lib/celluloid/call_chain.rb
311
+ - lib/celluloid/backported.rb
312
+ - lib/celluloid/call/async.rb
313
+ - lib/celluloid/call/block.rb
314
+ - lib/celluloid/call/sync.rb
112
315
  - lib/celluloid/calls.rb
113
316
  - lib/celluloid/cell.rb
114
317
  - lib/celluloid/condition.rb
115
318
  - lib/celluloid/core_ext.rb
116
- - lib/celluloid/cpu_counter.rb
117
- - lib/celluloid/evented_mailbox.rb
319
+ - lib/celluloid/current.rb
320
+ - lib/celluloid/debug.rb
321
+ - lib/celluloid/deprecate.rb
118
322
  - lib/celluloid/exceptions.rb
119
323
  - lib/celluloid/fiber.rb
120
- - lib/celluloid/fsm.rb
121
324
  - lib/celluloid/future.rb
122
- - lib/celluloid/handlers.rb
123
- - lib/celluloid/internal_pool.rb
124
- - lib/celluloid/legacy.rb
125
- - lib/celluloid/links.rb
126
- - lib/celluloid/logger.rb
325
+ - lib/celluloid/group.rb
326
+ - lib/celluloid/group/pool.rb
327
+ - lib/celluloid/group/spawner.rb
127
328
  - lib/celluloid/logging.rb
128
- - lib/celluloid/logging/incident.rb
129
- - lib/celluloid/logging/incident_logger.rb
130
- - lib/celluloid/logging/incident_reporter.rb
131
- - lib/celluloid/logging/log_event.rb
132
- - lib/celluloid/logging/ring_buffer.rb
133
329
  - lib/celluloid/mailbox.rb
134
- - lib/celluloid/method.rb
135
- - lib/celluloid/notifications.rb
136
- - lib/celluloid/pool_manager.rb
137
- - lib/celluloid/probe.rb
138
- - lib/celluloid/properties.rb
139
- - lib/celluloid/proxies/abstract_proxy.rb
140
- - lib/celluloid/proxies/actor_proxy.rb
141
- - lib/celluloid/proxies/async_proxy.rb
142
- - lib/celluloid/proxies/block_proxy.rb
143
- - lib/celluloid/proxies/cell_proxy.rb
144
- - lib/celluloid/proxies/future_proxy.rb
145
- - lib/celluloid/proxies/sync_proxy.rb
146
- - lib/celluloid/receivers.rb
147
- - lib/celluloid/registry.rb
148
- - lib/celluloid/responses.rb
330
+ - lib/celluloid/mailbox/evented.rb
331
+ - lib/celluloid/managed.rb
332
+ - lib/celluloid/notices.rb
333
+ - lib/celluloid/proxies.rb
334
+ - lib/celluloid/proxy/abstract.rb
335
+ - lib/celluloid/proxy/actor.rb
336
+ - lib/celluloid/proxy/async.rb
337
+ - lib/celluloid/proxy/block.rb
338
+ - lib/celluloid/proxy/cell.rb
339
+ - lib/celluloid/proxy/future.rb
340
+ - lib/celluloid/proxy/sync.rb
149
341
  - lib/celluloid/rspec.rb
150
- - lib/celluloid/rspec/actor_examples.rb
151
- - lib/celluloid/rspec/example_actor_class.rb
152
- - lib/celluloid/rspec/mailbox_examples.rb
153
- - lib/celluloid/rspec/task_examples.rb
154
- - lib/celluloid/signals.rb
155
- - lib/celluloid/stack_dump.rb
156
- - lib/celluloid/supervision_group.rb
157
- - lib/celluloid/supervisor.rb
158
342
  - lib/celluloid/system_events.rb
159
- - lib/celluloid/task_set.rb
160
- - lib/celluloid/tasks.rb
161
- - lib/celluloid/tasks/task_fiber.rb
162
- - lib/celluloid/tasks/task_thread.rb
343
+ - lib/celluloid/task.rb
344
+ - lib/celluloid/task/fibered.rb
345
+ - lib/celluloid/task/threaded.rb
163
346
  - lib/celluloid/test.rb
164
347
  - lib/celluloid/thread.rb
165
- - lib/celluloid/thread_handle.rb
166
- - lib/celluloid/uuid.rb
348
+ - lib/celluloid/version.rb
349
+ - spec/celluloid/actor/system_spec.rb
167
350
  - spec/celluloid/actor_spec.rb
168
- - spec/celluloid/actor_system_spec.rb
169
351
  - spec/celluloid/block_spec.rb
170
352
  - spec/celluloid/calls_spec.rb
171
353
  - spec/celluloid/condition_spec.rb
172
- - spec/celluloid/cpu_counter_spec.rb
173
354
  - spec/celluloid/evented_mailbox_spec.rb
174
- - spec/celluloid/fsm_spec.rb
175
355
  - spec/celluloid/future_spec.rb
176
- - spec/celluloid/internal_pool_spec.rb
177
- - spec/celluloid/links_spec.rb
178
- - spec/celluloid/logging/ring_buffer_spec.rb
356
+ - spec/celluloid/group/elastic_spec.rb
357
+ - spec/celluloid/group/pool_spec.rb
358
+ - spec/celluloid/group/spawner_spec.rb
359
+ - spec/celluloid/mailbox/evented_spec.rb
179
360
  - spec/celluloid/mailbox_spec.rb
180
- - spec/celluloid/notifications_spec.rb
181
- - spec/celluloid/pool_spec.rb
182
- - spec/celluloid/probe_spec.rb
183
- - spec/celluloid/properties_spec.rb
184
- - spec/celluloid/registry_spec.rb
185
- - spec/celluloid/stack_dump_spec.rb
186
- - spec/celluloid/supervision_group_spec.rb
187
- - spec/celluloid/supervisor_spec.rb
188
- - spec/celluloid/tasks/task_fiber_spec.rb
189
- - spec/celluloid/tasks/task_thread_spec.rb
190
- - spec/celluloid/thread_handle_spec.rb
361
+ - spec/celluloid/misc/leak_spec.rb
362
+ - spec/celluloid/proxy_spec.rb
363
+ - spec/celluloid/task/fibered_spec.rb
364
+ - spec/celluloid/task/threaded_spec.rb
191
365
  - spec/celluloid/timer_spec.rb
192
- - spec/celluloid/uuid_spec.rb
366
+ - spec/deprecate/actor_system_spec.rb
367
+ - spec/deprecate/block_spec.rb
368
+ - spec/deprecate/calls_spec.rb
369
+ - spec/deprecate/evented_mailbox_spec.rb
370
+ - spec/deprecate/future_spec.rb
371
+ - spec/deprecate/internal_pool_spec.rb
372
+ - spec/shared/actor_examples.rb
373
+ - spec/shared/group_examples.rb
374
+ - spec/shared/mailbox_examples.rb
375
+ - spec/shared/task_examples.rb
193
376
  - spec/spec_helper.rb
377
+ - spec/support/configure_rspec.rb
378
+ - spec/support/coverage.rb
379
+ - spec/support/crash_checking.rb
380
+ - spec/support/debugging.rb
381
+ - spec/support/env.rb
382
+ - spec/support/examples/actor_class.rb
383
+ - spec/support/examples/call_class.rb
384
+ - spec/support/examples/evented_mailbox_class.rb
385
+ - spec/support/includer.rb
386
+ - spec/support/logging.rb
387
+ - spec/support/loose_threads.rb
388
+ - spec/support/reset_class_variables.rb
389
+ - spec/support/sleep_and_wait.rb
390
+ - spec/support/stubbing.rb
194
391
  homepage: https://github.com/celluloid/celluloid
195
392
  licenses:
196
393
  - MIT
@@ -203,7 +400,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
203
400
  requirements:
204
401
  - - ">="
205
402
  - !ruby/object:Gem::Version
206
- version: 1.9.2
403
+ version: 1.9.3
207
404
  required_rubygems_version: !ruby/object:Gem::Requirement
208
405
  requirements:
209
406
  - - ">="
@@ -211,8 +408,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
408
  version: 1.3.6
212
409
  requirements: []
213
410
  rubyforge_project:
214
- rubygems_version: 2.2.2
411
+ rubygems_version: 2.5.1
215
412
  signing_key:
216
413
  specification_version: 4
217
414
  summary: Actor-based concurrent object framework for Ruby
218
415
  test_files: []
416
+ has_rdoc:
@@ -1,107 +0,0 @@
1
- module Celluloid
2
- class ActorSystem
3
- extend Forwardable
4
-
5
- def initialize
6
- @internal_pool = InternalPool.new
7
- @registry = Registry.new
8
- end
9
- attr_reader :registry
10
-
11
- # Launch default services
12
- # FIXME: We should set up the supervision hierarchy here
13
- def start
14
- within do
15
- Celluloid::Notifications::Fanout.supervise_as :notifications_fanout
16
- Celluloid::IncidentReporter.supervise_as :default_incident_reporter, STDERR
17
- end
18
- true
19
- end
20
-
21
- def within
22
- old = Thread.current[:celluloid_actor_system]
23
- Thread.current[:celluloid_actor_system] = self
24
- yield
25
- ensure
26
- Thread.current[:celluloid_actor_system] = old
27
- end
28
-
29
- def get_thread
30
- @internal_pool.get do
31
- Thread.current[:celluloid_actor_system] = self
32
- yield
33
- end
34
- end
35
-
36
- def stack_dump
37
- Celluloid::StackDump.new(@internal_pool)
38
- end
39
-
40
- def_delegators "@registry", :[], :get, :[]=, :set, :delete
41
-
42
- def registered
43
- @registry.names
44
- end
45
-
46
- def clear_registry
47
- @registry.clear
48
- end
49
-
50
- def running
51
- actors = []
52
- @internal_pool.each do |t|
53
- next unless t.role == :actor
54
- actors << t.actor.behavior_proxy if t.actor && t.actor.respond_to?(:behavior_proxy)
55
- end
56
- actors
57
- end
58
-
59
- def running?
60
- @internal_pool.running?
61
- end
62
-
63
- # Shut down all running actors
64
- def shutdown
65
- actors = running
66
- Timeout.timeout(shutdown_timeout) do
67
- Logger.debug "Terminating #{actors.size} #{(actors.size > 1) ? 'actors' : 'actor'}..." if actors.size > 0
68
-
69
- # Actors cannot self-terminate, you must do it for them
70
- actors.each do |actor|
71
- begin
72
- actor.terminate!
73
- rescue DeadActorError
74
- end
75
- end
76
-
77
- actors.each do |actor|
78
- begin
79
- Actor.join(actor)
80
- rescue DeadActorError
81
- end
82
- end
83
-
84
- @internal_pool.shutdown
85
- end
86
- rescue Timeout::Error
87
- Logger.error("Couldn't cleanly terminate all actors in #{shutdown_timeout} seconds!")
88
- actors.each do |actor|
89
- begin
90
- Actor.kill(actor)
91
- rescue DeadActorError, MailboxDead
92
- end
93
- end
94
- ensure
95
- @internal_pool.kill
96
- clear_registry
97
- end
98
-
99
- def assert_inactive
100
- @internal_pool.assert_inactive
101
- end
102
-
103
- def shutdown_timeout
104
- Celluloid.shutdown_timeout
105
- end
106
- end
107
- end