concurrent-ruby 0.6.1 → 0.7.0.rc0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/concurrent.rb +3 -4
  4. data/lib/concurrent/atomic.rb +46 -0
  5. data/lib/concurrent/atomic_reference/concurrent_update_error.rb +7 -0
  6. data/lib/concurrent/atomic_reference/delegated_update.rb +28 -0
  7. data/lib/concurrent/atomic_reference/direct_update.rb +28 -0
  8. data/lib/concurrent/atomic_reference/jruby.rb +8 -0
  9. data/lib/concurrent/atomic_reference/mutex_atomic.rb +47 -0
  10. data/lib/concurrent/atomic_reference/numeric_cas_wrapper.rb +24 -0
  11. data/lib/concurrent/atomic_reference/rbx.rb +16 -0
  12. data/lib/concurrent/atomic_reference/ruby.rb +16 -0
  13. data/lib/concurrent/atomics.rb +1 -1
  14. data/lib/concurrent/configuration.rb +1 -1
  15. data/lib/concurrent/supervisor.rb +1 -1
  16. data/lib/concurrent/timer_task.rb +0 -36
  17. data/lib/concurrent/version.rb +1 -1
  18. data/lib/concurrent_ruby_ext.so +0 -0
  19. data/lib/extension_helper.rb +9 -0
  20. metadata +16 -148
  21. data/lib/concurrent/actor/actor.rb +0 -270
  22. data/lib/concurrent/actor/postable.rb +0 -102
  23. data/lib/concurrent/actors.rb +0 -2
  24. data/lib/concurrent/atomic/atomic.rb +0 -48
  25. data/lib/concurrent/runnable.rb +0 -90
  26. data/lib/concurrent/stoppable.rb +0 -20
  27. data/spec/concurrent/actor/actor_spec.rb +0 -376
  28. data/spec/concurrent/actor/postable_shared.rb +0 -218
  29. data/spec/concurrent/actress_spec.rb +0 -211
  30. data/spec/concurrent/agent_spec.rb +0 -500
  31. data/spec/concurrent/async_spec.rb +0 -352
  32. data/spec/concurrent/atomic/atomic_boolean_spec.rb +0 -172
  33. data/spec/concurrent/atomic/atomic_fixnum_spec.rb +0 -186
  34. data/spec/concurrent/atomic/atomic_spec.rb +0 -133
  35. data/spec/concurrent/atomic/condition_spec.rb +0 -171
  36. data/spec/concurrent/atomic/copy_on_notify_observer_set_spec.rb +0 -10
  37. data/spec/concurrent/atomic/copy_on_write_observer_set_spec.rb +0 -10
  38. data/spec/concurrent/atomic/count_down_latch_spec.rb +0 -151
  39. data/spec/concurrent/atomic/cyclic_barrier_spec.rb +0 -248
  40. data/spec/concurrent/atomic/event_spec.rb +0 -200
  41. data/spec/concurrent/atomic/observer_set_shared.rb +0 -242
  42. data/spec/concurrent/atomic/thread_local_var_spec.rb +0 -113
  43. data/spec/concurrent/channel/buffered_channel_spec.rb +0 -151
  44. data/spec/concurrent/channel/channel_spec.rb +0 -39
  45. data/spec/concurrent/channel/probe_spec.rb +0 -77
  46. data/spec/concurrent/channel/unbuffered_channel_spec.rb +0 -132
  47. data/spec/concurrent/collection/blocking_ring_buffer_spec.rb +0 -149
  48. data/spec/concurrent/collection/priority_queue_spec.rb +0 -317
  49. data/spec/concurrent/collection/ring_buffer_spec.rb +0 -126
  50. data/spec/concurrent/configuration_spec.rb +0 -69
  51. data/spec/concurrent/dataflow_spec.rb +0 -242
  52. data/spec/concurrent/delay_spec.rb +0 -91
  53. data/spec/concurrent/dereferenceable_shared.rb +0 -146
  54. data/spec/concurrent/exchanger_spec.rb +0 -66
  55. data/spec/concurrent/executor/cached_thread_pool_shared.rb +0 -115
  56. data/spec/concurrent/executor/fixed_thread_pool_shared.rb +0 -136
  57. data/spec/concurrent/executor/global_thread_pool_shared.rb +0 -35
  58. data/spec/concurrent/executor/immediate_executor_spec.rb +0 -12
  59. data/spec/concurrent/executor/java_cached_thread_pool_spec.rb +0 -44
  60. data/spec/concurrent/executor/java_fixed_thread_pool_spec.rb +0 -64
  61. data/spec/concurrent/executor/java_single_thread_executor_spec.rb +0 -21
  62. data/spec/concurrent/executor/java_thread_pool_executor_spec.rb +0 -71
  63. data/spec/concurrent/executor/per_thread_executor_spec.rb +0 -57
  64. data/spec/concurrent/executor/ruby_cached_thread_pool_spec.rb +0 -69
  65. data/spec/concurrent/executor/ruby_fixed_thread_pool_spec.rb +0 -39
  66. data/spec/concurrent/executor/ruby_single_thread_executor_spec.rb +0 -18
  67. data/spec/concurrent/executor/ruby_thread_pool_executor_spec.rb +0 -171
  68. data/spec/concurrent/executor/safe_task_executor_spec.rb +0 -103
  69. data/spec/concurrent/executor/thread_pool_class_cast_spec.rb +0 -52
  70. data/spec/concurrent/executor/thread_pool_executor_shared.rb +0 -155
  71. data/spec/concurrent/executor/thread_pool_shared.rb +0 -269
  72. data/spec/concurrent/executor/timer_set_spec.rb +0 -183
  73. data/spec/concurrent/future_spec.rb +0 -329
  74. data/spec/concurrent/ivar_spec.rb +0 -215
  75. data/spec/concurrent/mvar_spec.rb +0 -380
  76. data/spec/concurrent/obligation_shared.rb +0 -102
  77. data/spec/concurrent/obligation_spec.rb +0 -282
  78. data/spec/concurrent/observable_shared.rb +0 -177
  79. data/spec/concurrent/observable_spec.rb +0 -56
  80. data/spec/concurrent/options_parser_spec.rb +0 -71
  81. data/spec/concurrent/promise_spec.rb +0 -367
  82. data/spec/concurrent/runnable_shared.rb +0 -68
  83. data/spec/concurrent/runnable_spec.rb +0 -235
  84. data/spec/concurrent/scheduled_task_spec.rb +0 -340
  85. data/spec/concurrent/stoppable_shared.rb +0 -37
  86. data/spec/concurrent/supervisor_spec.rb +0 -1149
  87. data/spec/concurrent/timer_task_spec.rb +0 -256
  88. data/spec/concurrent/tvar_spec.rb +0 -137
  89. data/spec/concurrent/utility/processor_count_spec.rb +0 -20
  90. data/spec/concurrent/utility/timeout_spec.rb +0 -50
  91. data/spec/concurrent/utility/timer_spec.rb +0 -52
  92. data/spec/spec_helper.rb +0 -41
  93. data/spec/support/example_group_extensions.rb +0 -52
  94. data/spec/support/less_than_or_equal_to_matcher.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: edceac6c210ab7ac152c72f134a44e0b853d3dc8
4
- data.tar.gz: f65c0a53c67c4cfbd9d4d9f1a170a2f5af2c2cb8
3
+ metadata.gz: a37030c113bbaf5da04499b31efd48b49c8244e6
4
+ data.tar.gz: 794a39695eadb43c80668f28f8c9eb367fbd8dc3
5
5
  SHA512:
6
- metadata.gz: f256b59fa79c66e7e275b314b7e8b666350b1e79a00c81b0d9609e78920dc88c89053596cdd487d6fe375368332d8a6884b6c53112a3d8d2909eb6ea43b628d5
7
- data.tar.gz: 68b74563a9db63470d244bb63a7ee21056aad2a08fb4a37a65bac1d088d0f06ec26bfcaeaeb5be00ed3ad6ce71665eab69267255a71295b39bafbb2ca61a86f0
6
+ metadata.gz: c99611c6311e743524a1769f6c1a663be7cee748813d772c5a5b5e7f9bdcd344c58d696e7d74dcae1c7e285fb7caa2d3e0cef0150a125e546e12474d9d1a3184
7
+ data.tar.gz: 3678784b9161c7b0f59ff608950fc2eb17887281be9ffbb842f4bde178303b0ab347d2e1b82111fd43604d4a4419354277524abe55c20222370464ad5735c85b
data/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  Modern concurrency tools for Ruby. Inspired by
9
9
  <a href="http://www.erlang.org/doc/reference_manual/processes.html">Erlang</a>,
10
10
  <a href="http://clojure.org/concurrent_programming">Clojure</a>,
11
- <a href="http://www.scala-lang.org/api/current/index.html#scala.actors.Actor">Scala</a>,
11
+ <a href="http://akka.io/">Scala</a>,
12
12
  <a href="http://www.haskell.org/haskellwiki/Applications_and_libraries/Concurrency_and_parallelism#Concurrent_Haskell">Haskell</a>,
13
13
  <a href="http://blogs.msdn.com/b/dsyme/archive/2010/02/15/async-and-parallel-design-patterns-in-f-part-3-agents.aspx">F#</a>,
14
14
  <a href="http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx">C#</a>,
@@ -1,13 +1,15 @@
1
1
  require 'concurrent/version'
2
+
2
3
  require 'concurrent/configuration'
3
4
 
4
5
  require 'concurrent/atomics'
5
- require 'concurrent/actors'
6
6
  require 'concurrent/channels'
7
7
  require 'concurrent/collections'
8
8
  require 'concurrent/executors'
9
9
  require 'concurrent/utilities'
10
10
 
11
+ require 'concurrent/actress'
12
+ require 'concurrent/atomic'
11
13
  require 'concurrent/agent'
12
14
  require 'concurrent/async'
13
15
  require 'concurrent/dataflow'
@@ -22,13 +24,10 @@ require 'concurrent/obligation'
22
24
  require 'concurrent/observable'
23
25
  require 'concurrent/options_parser'
24
26
  require 'concurrent/promise'
25
- require 'concurrent/runnable'
26
27
  require 'concurrent/scheduled_task'
27
- require 'concurrent/stoppable'
28
28
  require 'concurrent/supervisor'
29
29
  require 'concurrent/timer_task'
30
30
  require 'concurrent/tvar'
31
- require 'concurrent/actress'
32
31
 
33
32
  # Modern concurrency tools for Ruby. Inspired by Erlang, Clojure, Scala, Haskell,
34
33
  # F#, C#, Java, and classic concurrency patterns.
@@ -0,0 +1,46 @@
1
+ require 'concurrent/atomic_reference/concurrent_update_error'
2
+ require 'concurrent/atomic_reference/mutex_atomic'
3
+
4
+ begin
5
+ # force fallback impl with FORCE_ATOMIC_FALLBACK=1
6
+ if /[^0fF]/ =~ ENV['FORCE_ATOMIC_FALLBACK']
7
+ ruby_engine = 'mutex_atomic'
8
+ else
9
+ ruby_engine = defined?(RUBY_ENGINE)? RUBY_ENGINE : 'ruby'
10
+ end
11
+
12
+ require "concurrent/atomic_reference/#{ruby_engine}"
13
+ rescue LoadError
14
+ warn 'Compiled extensions not installed, pure Ruby Atomic will be used.'
15
+ end
16
+
17
+ if defined? Concurrent::JavaAtomic
18
+
19
+ class Concurrent::Atomic < Concurrent::JavaAtomic
20
+ end
21
+
22
+ elsif defined? Concurrent::CAtomic
23
+
24
+ class Concurrent::Atomic < Concurrent::CAtomic
25
+ end
26
+
27
+ elsif defined? Concurrent::RbxAtomic
28
+
29
+ class Concurrent::Atomic < Concurrent::RbxAtomic
30
+ end
31
+
32
+ else
33
+
34
+ class Concurrent::Atomic < Concurrent::MutexAtomic
35
+ end
36
+ end
37
+
38
+ class Atomic < Concurrent::Atomic
39
+
40
+ ConcurrentUpdateError = Class.new(Concurrent::ConcurrentUpdateError)
41
+
42
+ def initialize(*args)
43
+ warn "[DEPRECATED] Please use Concurrent::Atomic instead."
44
+ super
45
+ end
46
+ end
@@ -0,0 +1,7 @@
1
+ module Concurrent
2
+
3
+ class ConcurrentUpdateError < ThreadError
4
+ # frozen pre-allocated backtrace to speed ConcurrentUpdateError
5
+ CONC_UP_ERR_BACKTRACE = ['backtrace elided; set verbose to enable'].freeze
6
+ end
7
+ end
@@ -0,0 +1,28 @@
1
+ require 'concurrent/atomic_reference/concurrent_update_error'
2
+
3
+ module Concurrent
4
+
5
+ # Define update methods that delegate to @ref field
6
+ class Atomic
7
+ # Pass the current value to the given block, replacing it
8
+ # with the block's result. May retry if the value changes
9
+ # during the block's execution.
10
+ def update
11
+ true until @ref.compare_and_set(old_value = @ref.get, new_value = yield(old_value))
12
+ new_value
13
+ end
14
+
15
+ def try_update
16
+ old_value = @ref.get
17
+ new_value = yield old_value
18
+ unless @ref.compare_and_set(old_value, new_value)
19
+ if $VERBOSE
20
+ raise ConcurrentUpdateError, "Update failed"
21
+ else
22
+ raise ConcurrentUpdateError, "Update failed", ConcurrentUpdateError::CONC_UP_ERR_BACKTRACE
23
+ end
24
+ end
25
+ new_value
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ require 'concurrent/atomic_reference/concurrent_update_error'
2
+
3
+ module Concurrent
4
+
5
+ # Define update methods that use direct paths
6
+ module AtomicDirectUpdate
7
+ # Pass the current value to the given block, replacing it
8
+ # with the block's result. May retry if the value changes
9
+ # during the block's execution.
10
+ def update
11
+ true until compare_and_set(old_value = get, new_value = yield(old_value))
12
+ new_value
13
+ end
14
+
15
+ def try_update
16
+ old_value = get
17
+ new_value = yield old_value
18
+ unless compare_and_set(old_value, new_value)
19
+ if $VERBOSE
20
+ raise ConcurrentUpdateError, "Update failed"
21
+ else
22
+ raise ConcurrentUpdateError, "Update failed", ConcurrentUpdateError::CONC_UP_ERR_BACKTRACE
23
+ end
24
+ end
25
+ new_value
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,8 @@
1
+ require 'concurrent_ruby_ext'
2
+ require 'concurrent/atomic_reference/direct_update'
3
+
4
+ module Concurrent
5
+ class JavaAtomic
6
+ include Concurrent::AtomicDirectUpdate
7
+ end
8
+ end
@@ -0,0 +1,47 @@
1
+ require 'thread'
2
+ require 'concurrent/atomic_reference/direct_update'
3
+ require 'concurrent/atomic_reference/numeric_cas_wrapper'
4
+
5
+ module Concurrent
6
+
7
+ # Portable/generic (but not very memory or scheduling-efficient) fallback
8
+ class MutexAtomic #:nodoc: all
9
+ include Concurrent::AtomicDirectUpdate
10
+ include Concurrent::AtomicNumericCompareAndSetWrapper
11
+
12
+ def initialize(value = nil)
13
+ @mutex = Mutex.new
14
+ @value = value
15
+ end
16
+
17
+ def get
18
+ @mutex.synchronize { @value }
19
+ end
20
+ alias value get
21
+
22
+ def set(new_value)
23
+ @mutex.synchronize { @value = new_value }
24
+ end
25
+ alias value= set
26
+
27
+ def get_and_set(new_value)
28
+ @mutex.synchronize do
29
+ old_value = @value
30
+ @value = new_value
31
+ old_value
32
+ end
33
+ end
34
+ alias swap get_and_set
35
+
36
+ def _compare_and_set(old_value, new_value)
37
+ return false unless @mutex.try_lock
38
+ begin
39
+ return false unless @value.equal? old_value
40
+ @value = new_value
41
+ ensure
42
+ @mutex.unlock
43
+ end
44
+ true
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,24 @@
1
+ module Concurrent
2
+
3
+ module AtomicNumericCompareAndSetWrapper
4
+ #alias _compare_and_set compare_and_set
5
+
6
+ def compare_and_set(expected, new)
7
+ if expected.kind_of? Numeric
8
+ while true
9
+ old = get
10
+
11
+ return false unless old.kind_of? Numeric
12
+
13
+ return false unless old == expected
14
+
15
+ result = _compare_and_set(old, new)
16
+ return result if result
17
+ end
18
+ else
19
+ _compare_and_set(expected, new)
20
+ end
21
+ end
22
+ alias compare_and_swap compare_and_set
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ require 'concurrent/atomic_reference/direct_update'
2
+ require 'concurrent/atomic_reference/numeric_cas_wrapper'
3
+
4
+ module Concurrent
5
+
6
+ # extend Rubinius's version adding aliases and numeric logic
7
+ class RbxAtomic < Rubinius::AtomicReference
8
+ alias _compare_and_set compare_and_set
9
+ include Concurrent::AtomicDirectUpdate
10
+ include Concurrent::AtomicNumericCompareAndSetWrapper
11
+
12
+ alias value get
13
+ alias value= set
14
+ alias swap get_and_set
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ begin
2
+ require 'concurrent_ruby_ext'
3
+ rescue LoadError
4
+ # may be a Windows cross-compiled native gem
5
+ require "#{RUBY_VERSION[0..2]}/concurrent_ruby_ext"
6
+ end
7
+
8
+ require 'concurrent/atomic_reference/direct_update'
9
+ require 'concurrent/atomic_reference/numeric_cas_wrapper'
10
+
11
+ module Concurrent
12
+ class CAtomic
13
+ include Concurrent::AtomicDirectUpdate
14
+ include Concurrent::AtomicNumericCompareAndSetWrapper
15
+ end
16
+ end
@@ -1,4 +1,4 @@
1
- require 'concurrent/atomic/atomic'
1
+ require 'concurrent/atomic'
2
2
  require 'concurrent/atomic/atomic_boolean'
3
3
  require 'concurrent/atomic/atomic_fixnum'
4
4
  require 'concurrent/atomic/condition'
@@ -1,7 +1,7 @@
1
1
  require 'thread'
2
2
  require 'concurrent/delay'
3
3
  require 'concurrent/errors'
4
- require 'concurrent/atomic/atomic'
4
+ require 'concurrent/atomic'
5
5
  require 'concurrent/executor/thread_pool_executor'
6
6
  require 'concurrent/executor/timer_set'
7
7
  require 'concurrent/utility/processor_count'
@@ -1,7 +1,6 @@
1
1
  require 'thread'
2
2
 
3
3
  require 'concurrent/errors'
4
- require 'concurrent/runnable'
5
4
 
6
5
  module Concurrent
7
6
 
@@ -61,6 +60,7 @@ module Concurrent
61
60
  alias_method :max_t, :max_time
62
61
 
63
62
  def initialize(opts = {})
63
+ warn '[EXPERIMENTAL] Supervisor is being completely rewritten and will change soon.'
64
64
  @restart_strategy = opts[:restart_strategy] || opts[:strategy] || :one_for_one
65
65
  @monitor_interval = (opts[:monitor_interval] || DEFAULT_MONITOR_INTERVAL).to_f
66
66
  @max_restart = (opts[:max_restart] || opts[:max_r] || DEFAULT_MAX_RESTART).to_i
@@ -4,9 +4,6 @@ require 'concurrent/atomic/atomic_boolean'
4
4
  require 'concurrent/executor/executor'
5
5
  require 'concurrent/executor/safe_task_executor'
6
6
 
7
- # deprecated Updated to use `Executor` instead of `Runnable`
8
- require 'concurrent/runnable'
9
-
10
7
  module Concurrent
11
8
 
12
9
  # A very common currency pattern is to run a thread that performs a task at regular
@@ -295,32 +292,6 @@ module Concurrent
295
292
  end
296
293
  end
297
294
 
298
- # @deprecated Updated to use `Executor` instead of `Runnable`
299
- def terminate(*args) deprecated(:terminate, :kill, *args); end
300
-
301
- # @deprecated Updated to use `Executor` instead of `Runnable`
302
- def stop(*args) deprecated(:stop, :shutdown, *args); end
303
-
304
- # @deprecated Updated to use `Executor` instead of `Runnable`
305
- def cancel(*args) deprecated(:cancel, :shutdown, *args); end
306
-
307
- # @deprecated Updated to use `Executor` instead of `Runnable`
308
- def run!(*args) deprecated(:run!, :execute); end
309
-
310
- # @deprecated Updated to use `Executor` instead of `Runnable`
311
- def self.run!(*args, &block)
312
- warn "[DEPRECATED] `run!` is deprecated, please use `execute` instead."
313
- Concurrent::Runnable::Context.new(TimerTask.new(*args, &block))
314
- end
315
-
316
- # @deprecated Updated to use `Executor` instead of `Runnable`
317
- def run
318
- raise Concurrent::Runnable::LifecycleError.new('already running') if @running.true?
319
- self.execute
320
- self.wait_for_termination
321
- true
322
- end
323
-
324
295
  private :post, :<<
325
296
 
326
297
  protected
@@ -366,12 +337,5 @@ module Concurrent
366
337
  observers.notify_observers(Time.now, nil, Concurrent::TimeoutError.new)
367
338
  end
368
339
  end
369
-
370
- # @deprecated Updated to use `Executor` instead of `Runnable`
371
- # @!visibility private
372
- def deprecated(old, new, *args)
373
- warn "[DEPRECATED] `#{old}` is deprecated, please use `#{new}` instead."
374
- self.send(new, *args)
375
- end
376
340
  end
377
341
  end
@@ -1,3 +1,3 @@
1
1
  module Concurrent
2
- VERSION = '0.6.1'
2
+ VERSION = '0.7.0.rc0'
3
3
  end
@@ -0,0 +1,9 @@
1
+ require 'rbconfig'
2
+
3
+ module Concurrent
4
+ def self.use_c_extensions?
5
+ host_os = RbConfig::CONFIG['host_os']
6
+ ruby_name = RbConfig::CONFIG['ruby_install_name']
7
+ (ruby_name =~ /^ruby$/i || host_os =~ /mswin32/i || host_os =~ /mingw32/i)
8
+ end
9
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concurrent-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0.rc0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jerry D'Antonio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-14 00:00:00.000000000 Z
11
+ date: 2014-06-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |2
14
14
  Modern concurrency tools including agents, futures, promises, thread pools, actors, supervisors, and more.
@@ -23,9 +23,6 @@ files:
23
23
  - LICENSE.txt
24
24
  - README.md
25
25
  - lib/concurrent.rb
26
- - lib/concurrent/actor/actor.rb
27
- - lib/concurrent/actor/postable.rb
28
- - lib/concurrent/actors.rb
29
26
  - lib/concurrent/actress.rb
30
27
  - lib/concurrent/actress/ad_hoc.rb
31
28
  - lib/concurrent/actress/context.rb
@@ -37,7 +34,7 @@ files:
37
34
  - lib/concurrent/actress/type_check.rb
38
35
  - lib/concurrent/agent.rb
39
36
  - lib/concurrent/async.rb
40
- - lib/concurrent/atomic/atomic.rb
37
+ - lib/concurrent/atomic.rb
41
38
  - lib/concurrent/atomic/atomic_boolean.rb
42
39
  - lib/concurrent/atomic/atomic_fixnum.rb
43
40
  - lib/concurrent/atomic/condition.rb
@@ -47,6 +44,14 @@ files:
47
44
  - lib/concurrent/atomic/cyclic_barrier.rb
48
45
  - lib/concurrent/atomic/event.rb
49
46
  - lib/concurrent/atomic/thread_local_var.rb
47
+ - lib/concurrent/atomic_reference/concurrent_update_error.rb
48
+ - lib/concurrent/atomic_reference/delegated_update.rb
49
+ - lib/concurrent/atomic_reference/direct_update.rb
50
+ - lib/concurrent/atomic_reference/jruby.rb
51
+ - lib/concurrent/atomic_reference/mutex_atomic.rb
52
+ - lib/concurrent/atomic_reference/numeric_cas_wrapper.rb
53
+ - lib/concurrent/atomic_reference/rbx.rb
54
+ - lib/concurrent/atomic_reference/ruby.rb
50
55
  - lib/concurrent/atomics.rb
51
56
  - lib/concurrent/channel/buffered_channel.rb
52
57
  - lib/concurrent/channel/channel.rb
@@ -91,9 +96,7 @@ files:
91
96
  - lib/concurrent/observable.rb
92
97
  - lib/concurrent/options_parser.rb
93
98
  - lib/concurrent/promise.rb
94
- - lib/concurrent/runnable.rb
95
99
  - lib/concurrent/scheduled_task.rb
96
- - lib/concurrent/stoppable.rb
97
100
  - lib/concurrent/supervisor.rb
98
101
  - lib/concurrent/timer_task.rb
99
102
  - lib/concurrent/tvar.rb
@@ -103,74 +106,8 @@ files:
103
106
  - lib/concurrent/utility/timer.rb
104
107
  - lib/concurrent/version.rb
105
108
  - lib/concurrent_ruby.rb
106
- - spec/concurrent/actor/actor_spec.rb
107
- - spec/concurrent/actor/postable_shared.rb
108
- - spec/concurrent/actress_spec.rb
109
- - spec/concurrent/agent_spec.rb
110
- - spec/concurrent/async_spec.rb
111
- - spec/concurrent/atomic/atomic_boolean_spec.rb
112
- - spec/concurrent/atomic/atomic_fixnum_spec.rb
113
- - spec/concurrent/atomic/atomic_spec.rb
114
- - spec/concurrent/atomic/condition_spec.rb
115
- - spec/concurrent/atomic/copy_on_notify_observer_set_spec.rb
116
- - spec/concurrent/atomic/copy_on_write_observer_set_spec.rb
117
- - spec/concurrent/atomic/count_down_latch_spec.rb
118
- - spec/concurrent/atomic/cyclic_barrier_spec.rb
119
- - spec/concurrent/atomic/event_spec.rb
120
- - spec/concurrent/atomic/observer_set_shared.rb
121
- - spec/concurrent/atomic/thread_local_var_spec.rb
122
- - spec/concurrent/channel/buffered_channel_spec.rb
123
- - spec/concurrent/channel/channel_spec.rb
124
- - spec/concurrent/channel/probe_spec.rb
125
- - spec/concurrent/channel/unbuffered_channel_spec.rb
126
- - spec/concurrent/collection/blocking_ring_buffer_spec.rb
127
- - spec/concurrent/collection/priority_queue_spec.rb
128
- - spec/concurrent/collection/ring_buffer_spec.rb
129
- - spec/concurrent/configuration_spec.rb
130
- - spec/concurrent/dataflow_spec.rb
131
- - spec/concurrent/delay_spec.rb
132
- - spec/concurrent/dereferenceable_shared.rb
133
- - spec/concurrent/exchanger_spec.rb
134
- - spec/concurrent/executor/cached_thread_pool_shared.rb
135
- - spec/concurrent/executor/fixed_thread_pool_shared.rb
136
- - spec/concurrent/executor/global_thread_pool_shared.rb
137
- - spec/concurrent/executor/immediate_executor_spec.rb
138
- - spec/concurrent/executor/java_cached_thread_pool_spec.rb
139
- - spec/concurrent/executor/java_fixed_thread_pool_spec.rb
140
- - spec/concurrent/executor/java_single_thread_executor_spec.rb
141
- - spec/concurrent/executor/java_thread_pool_executor_spec.rb
142
- - spec/concurrent/executor/per_thread_executor_spec.rb
143
- - spec/concurrent/executor/ruby_cached_thread_pool_spec.rb
144
- - spec/concurrent/executor/ruby_fixed_thread_pool_spec.rb
145
- - spec/concurrent/executor/ruby_single_thread_executor_spec.rb
146
- - spec/concurrent/executor/ruby_thread_pool_executor_spec.rb
147
- - spec/concurrent/executor/safe_task_executor_spec.rb
148
- - spec/concurrent/executor/thread_pool_class_cast_spec.rb
149
- - spec/concurrent/executor/thread_pool_executor_shared.rb
150
- - spec/concurrent/executor/thread_pool_shared.rb
151
- - spec/concurrent/executor/timer_set_spec.rb
152
- - spec/concurrent/future_spec.rb
153
- - spec/concurrent/ivar_spec.rb
154
- - spec/concurrent/mvar_spec.rb
155
- - spec/concurrent/obligation_shared.rb
156
- - spec/concurrent/obligation_spec.rb
157
- - spec/concurrent/observable_shared.rb
158
- - spec/concurrent/observable_spec.rb
159
- - spec/concurrent/options_parser_spec.rb
160
- - spec/concurrent/promise_spec.rb
161
- - spec/concurrent/runnable_shared.rb
162
- - spec/concurrent/runnable_spec.rb
163
- - spec/concurrent/scheduled_task_spec.rb
164
- - spec/concurrent/stoppable_shared.rb
165
- - spec/concurrent/supervisor_spec.rb
166
- - spec/concurrent/timer_task_spec.rb
167
- - spec/concurrent/tvar_spec.rb
168
- - spec/concurrent/utility/processor_count_spec.rb
169
- - spec/concurrent/utility/timeout_spec.rb
170
- - spec/concurrent/utility/timer_spec.rb
171
- - spec/spec_helper.rb
172
- - spec/support/example_group_extensions.rb
173
- - spec/support/less_than_or_equal_to_matcher.rb
109
+ - lib/concurrent_ruby_ext.so
110
+ - lib/extension_helper.rb
174
111
  homepage: http://www.concurrent-ruby.com
175
112
  licenses:
176
113
  - MIT
@@ -186,9 +123,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
123
  version: 1.9.3
187
124
  required_rubygems_version: !ruby/object:Gem::Requirement
188
125
  requirements:
189
- - - ">="
126
+ - - ">"
190
127
  - !ruby/object:Gem::Version
191
- version: '0'
128
+ version: 1.3.1
192
129
  requirements: []
193
130
  rubyforge_project:
194
131
  rubygems_version: 2.2.2
@@ -196,73 +133,4 @@ signing_key:
196
133
  specification_version: 4
197
134
  summary: Modern concurrency tools for Ruby. Inspired by Erlang, Clojure, Scala, Haskell,
198
135
  F#, C#, Java, and classic concurrency patterns.
199
- test_files:
200
- - spec/concurrent/actor/actor_spec.rb
201
- - spec/concurrent/actor/postable_shared.rb
202
- - spec/concurrent/actress_spec.rb
203
- - spec/concurrent/agent_spec.rb
204
- - spec/concurrent/async_spec.rb
205
- - spec/concurrent/atomic/atomic_boolean_spec.rb
206
- - spec/concurrent/atomic/atomic_fixnum_spec.rb
207
- - spec/concurrent/atomic/atomic_spec.rb
208
- - spec/concurrent/atomic/condition_spec.rb
209
- - spec/concurrent/atomic/copy_on_notify_observer_set_spec.rb
210
- - spec/concurrent/atomic/copy_on_write_observer_set_spec.rb
211
- - spec/concurrent/atomic/count_down_latch_spec.rb
212
- - spec/concurrent/atomic/cyclic_barrier_spec.rb
213
- - spec/concurrent/atomic/event_spec.rb
214
- - spec/concurrent/atomic/observer_set_shared.rb
215
- - spec/concurrent/atomic/thread_local_var_spec.rb
216
- - spec/concurrent/channel/buffered_channel_spec.rb
217
- - spec/concurrent/channel/channel_spec.rb
218
- - spec/concurrent/channel/probe_spec.rb
219
- - spec/concurrent/channel/unbuffered_channel_spec.rb
220
- - spec/concurrent/collection/blocking_ring_buffer_spec.rb
221
- - spec/concurrent/collection/priority_queue_spec.rb
222
- - spec/concurrent/collection/ring_buffer_spec.rb
223
- - spec/concurrent/configuration_spec.rb
224
- - spec/concurrent/dataflow_spec.rb
225
- - spec/concurrent/delay_spec.rb
226
- - spec/concurrent/dereferenceable_shared.rb
227
- - spec/concurrent/exchanger_spec.rb
228
- - spec/concurrent/executor/cached_thread_pool_shared.rb
229
- - spec/concurrent/executor/fixed_thread_pool_shared.rb
230
- - spec/concurrent/executor/global_thread_pool_shared.rb
231
- - spec/concurrent/executor/immediate_executor_spec.rb
232
- - spec/concurrent/executor/java_cached_thread_pool_spec.rb
233
- - spec/concurrent/executor/java_fixed_thread_pool_spec.rb
234
- - spec/concurrent/executor/java_single_thread_executor_spec.rb
235
- - spec/concurrent/executor/java_thread_pool_executor_spec.rb
236
- - spec/concurrent/executor/per_thread_executor_spec.rb
237
- - spec/concurrent/executor/ruby_cached_thread_pool_spec.rb
238
- - spec/concurrent/executor/ruby_fixed_thread_pool_spec.rb
239
- - spec/concurrent/executor/ruby_single_thread_executor_spec.rb
240
- - spec/concurrent/executor/ruby_thread_pool_executor_spec.rb
241
- - spec/concurrent/executor/safe_task_executor_spec.rb
242
- - spec/concurrent/executor/thread_pool_class_cast_spec.rb
243
- - spec/concurrent/executor/thread_pool_executor_shared.rb
244
- - spec/concurrent/executor/thread_pool_shared.rb
245
- - spec/concurrent/executor/timer_set_spec.rb
246
- - spec/concurrent/future_spec.rb
247
- - spec/concurrent/ivar_spec.rb
248
- - spec/concurrent/mvar_spec.rb
249
- - spec/concurrent/obligation_shared.rb
250
- - spec/concurrent/obligation_spec.rb
251
- - spec/concurrent/observable_shared.rb
252
- - spec/concurrent/observable_spec.rb
253
- - spec/concurrent/options_parser_spec.rb
254
- - spec/concurrent/promise_spec.rb
255
- - spec/concurrent/runnable_shared.rb
256
- - spec/concurrent/runnable_spec.rb
257
- - spec/concurrent/scheduled_task_spec.rb
258
- - spec/concurrent/stoppable_shared.rb
259
- - spec/concurrent/supervisor_spec.rb
260
- - spec/concurrent/timer_task_spec.rb
261
- - spec/concurrent/tvar_spec.rb
262
- - spec/concurrent/utility/processor_count_spec.rb
263
- - spec/concurrent/utility/timeout_spec.rb
264
- - spec/concurrent/utility/timer_spec.rb
265
- - spec/spec_helper.rb
266
- - spec/support/example_group_extensions.rb
267
- - spec/support/less_than_or_equal_to_matcher.rb
268
- has_rdoc:
136
+ test_files: []