concurrent-ruby 1.0.5 → 1.1.0.pre1

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 (107) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +42 -0
  3. data/Gemfile +39 -0
  4. data/{LICENSE.txt → LICENSE.md} +2 -0
  5. data/README.md +203 -105
  6. data/Rakefile +278 -0
  7. data/ext/concurrent-ruby/ConcurrentRubyService.java +17 -0
  8. data/ext/concurrent-ruby/com/concurrent_ruby/ext/AtomicReferenceLibrary.java +175 -0
  9. data/ext/concurrent-ruby/com/concurrent_ruby/ext/JRubyMapBackendLibrary.java +248 -0
  10. data/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicBooleanLibrary.java +93 -0
  11. data/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicFixnumLibrary.java +113 -0
  12. data/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaSemaphoreLibrary.java +159 -0
  13. data/ext/concurrent-ruby/com/concurrent_ruby/ext/SynchronizationLibrary.java +304 -0
  14. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMap.java +31 -0
  15. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMapV8.java +3863 -0
  16. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/LongAdder.java +203 -0
  17. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/Striped64.java +342 -0
  18. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/ConcurrentHashMapV8.java +3800 -0
  19. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/LongAdder.java +204 -0
  20. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/Striped64.java +291 -0
  21. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166y/ThreadLocalRandom.java +199 -0
  22. data/lib/concurrent-ruby.rb +1 -0
  23. data/lib/concurrent.rb +24 -20
  24. data/lib/concurrent/agent.rb +7 -7
  25. data/lib/concurrent/array.rb +59 -32
  26. data/lib/concurrent/async.rb +4 -4
  27. data/lib/concurrent/atom.rb +9 -9
  28. data/lib/concurrent/atomic/atomic_boolean.rb +24 -20
  29. data/lib/concurrent/atomic/atomic_fixnum.rb +27 -23
  30. data/lib/concurrent/atomic/atomic_markable_reference.rb +164 -0
  31. data/lib/concurrent/atomic/atomic_reference.rb +176 -33
  32. data/lib/concurrent/atomic/count_down_latch.rb +6 -6
  33. data/lib/concurrent/atomic/cyclic_barrier.rb +1 -1
  34. data/lib/concurrent/atomic/event.rb +1 -1
  35. data/lib/concurrent/atomic/java_count_down_latch.rb +6 -5
  36. data/lib/concurrent/atomic/mutex_count_down_latch.rb +1 -0
  37. data/lib/concurrent/atomic/read_write_lock.rb +2 -1
  38. data/lib/concurrent/atomic/reentrant_read_write_lock.rb +3 -1
  39. data/lib/concurrent/atomic/semaphore.rb +8 -8
  40. data/lib/concurrent/atomic/thread_local_var.rb +7 -7
  41. data/lib/concurrent/atomic_reference/mutex_atomic.rb +3 -8
  42. data/lib/concurrent/atomic_reference/numeric_cas_wrapper.rb +1 -1
  43. data/lib/concurrent/atomics.rb +0 -43
  44. data/lib/concurrent/collection/lock_free_stack.rb +127 -0
  45. data/lib/concurrent/collection/map/atomic_reference_map_backend.rb +3 -3
  46. data/lib/concurrent/collection/map/non_concurrent_map_backend.rb +1 -2
  47. data/lib/concurrent/collection/non_concurrent_priority_queue.rb +29 -29
  48. data/lib/concurrent/concern/dereferenceable.rb +1 -1
  49. data/lib/concurrent/concern/logging.rb +6 -1
  50. data/lib/concurrent/concern/observable.rb +7 -7
  51. data/lib/concurrent/concurrent_ruby.jar +0 -0
  52. data/lib/concurrent/configuration.rb +1 -6
  53. data/lib/concurrent/constants.rb +1 -1
  54. data/lib/concurrent/dataflow.rb +2 -1
  55. data/lib/concurrent/delay.rb +9 -7
  56. data/lib/concurrent/exchanger.rb +13 -21
  57. data/lib/concurrent/executor/abstract_executor_service.rb +2 -2
  58. data/lib/concurrent/executor/cached_thread_pool.rb +1 -1
  59. data/lib/concurrent/executor/executor_service.rb +15 -15
  60. data/lib/concurrent/executor/fixed_thread_pool.rb +18 -18
  61. data/lib/concurrent/executor/java_thread_pool_executor.rb +10 -7
  62. data/lib/concurrent/executor/single_thread_executor.rb +2 -2
  63. data/lib/concurrent/executor/thread_pool_executor.rb +6 -6
  64. data/lib/concurrent/executor/timer_set.rb +1 -1
  65. data/lib/concurrent/future.rb +4 -1
  66. data/lib/concurrent/hash.rb +53 -30
  67. data/lib/concurrent/ivar.rb +5 -6
  68. data/lib/concurrent/map.rb +20 -25
  69. data/lib/concurrent/maybe.rb +1 -1
  70. data/lib/concurrent/mutable_struct.rb +15 -14
  71. data/lib/concurrent/mvar.rb +2 -2
  72. data/lib/concurrent/promise.rb +53 -21
  73. data/lib/concurrent/promises.rb +1938 -0
  74. data/lib/concurrent/re_include.rb +58 -0
  75. data/lib/concurrent/set.rb +66 -0
  76. data/lib/concurrent/settable_struct.rb +1 -0
  77. data/lib/concurrent/synchronization.rb +4 -5
  78. data/lib/concurrent/synchronization/abstract_lockable_object.rb +5 -5
  79. data/lib/concurrent/synchronization/abstract_struct.rb +6 -4
  80. data/lib/concurrent/synchronization/lockable_object.rb +6 -6
  81. data/lib/concurrent/synchronization/{mri_lockable_object.rb → mutex_lockable_object.rb} +19 -14
  82. data/lib/concurrent/synchronization/object.rb +8 -4
  83. data/lib/concurrent/synchronization/truffleruby_object.rb +46 -0
  84. data/lib/concurrent/synchronization/volatile.rb +11 -9
  85. data/lib/concurrent/thread_safe/util/data_structures.rb +55 -0
  86. data/lib/concurrent/thread_safe/util/striped64.rb +9 -4
  87. data/lib/concurrent/timer_task.rb +5 -2
  88. data/lib/concurrent/tuple.rb +1 -1
  89. data/lib/concurrent/tvar.rb +2 -2
  90. data/lib/concurrent/utility/at_exit.rb +1 -1
  91. data/lib/concurrent/utility/engine.rb +2 -2
  92. data/lib/concurrent/utility/monotonic_time.rb +3 -3
  93. data/lib/concurrent/utility/native_extension_loader.rb +31 -33
  94. data/lib/concurrent/utility/processor_counter.rb +0 -2
  95. data/lib/concurrent/version.rb +2 -2
  96. metadata +35 -21
  97. data/lib/concurrent/atomic_reference/concurrent_update_error.rb +0 -8
  98. data/lib/concurrent/atomic_reference/direct_update.rb +0 -81
  99. data/lib/concurrent/atomic_reference/jruby+truffle.rb +0 -2
  100. data/lib/concurrent/atomic_reference/jruby.rb +0 -16
  101. data/lib/concurrent/atomic_reference/rbx.rb +0 -22
  102. data/lib/concurrent/atomic_reference/ruby.rb +0 -32
  103. data/lib/concurrent/edge.rb +0 -26
  104. data/lib/concurrent/lazy_register.rb +0 -81
  105. data/lib/concurrent/synchronization/truffle_lockable_object.rb +0 -9
  106. data/lib/concurrent/synchronization/truffle_object.rb +0 -31
  107. data/lib/concurrent/thread_safe/util/array_hash_rbx.rb +0 -30
@@ -0,0 +1,55 @@
1
+ require 'concurrent/thread_safe/util'
2
+
3
+ module Concurrent
4
+ module ThreadSafe
5
+ module Util
6
+ def self.make_synchronized_on_rbx(klass)
7
+ klass.class_eval do
8
+ private
9
+
10
+ def _mon_initialize
11
+ @_monitor = Monitor.new unless @_monitor # avoid double initialisation
12
+ end
13
+
14
+ def self.new(*args)
15
+ obj = super(*args)
16
+ obj.send(:_mon_initialize)
17
+ obj
18
+ end
19
+ end
20
+
21
+ klass.superclass.instance_methods(false).each do |method|
22
+ case method
23
+ when :new_range, :new_reserved
24
+ klass.class_eval <<-RUBY, __FILE__, __LINE__ + 1
25
+ def #{method}(*args)
26
+ obj = super
27
+ obj.send(:_mon_initialize)
28
+ obj
29
+ end
30
+ RUBY
31
+ else
32
+ klass.class_eval <<-RUBY, __FILE__, __LINE__ + 1
33
+ def #{method}(*args)
34
+ monitor = @_monitor
35
+ monitor or raise("BUG: Internal monitor was not properly initialized. Please report this to the concurrent-ruby developers.")
36
+ monitor.synchronize { super }
37
+ end
38
+ RUBY
39
+ end
40
+ end
41
+ end
42
+
43
+ def self.make_synchronized_on_truffleruby(klass)
44
+ klass.superclass.instance_methods(false).each do |method|
45
+ klass.class_eval <<-RUBY, __FILE__, __LINE__ + 1
46
+ def #{method}(*args, &block)
47
+ # TODO (pitr-ch 01-Jul-2018): don't use internal TruffleRuby APIs
48
+ Truffle::System.synchronized(self) { super(*args, &block) }
49
+ end
50
+ RUBY
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -86,15 +86,20 @@ module Concurrent
86
86
  # @!visibility private
87
87
  class Cell < Concurrent::AtomicReference
88
88
 
89
- # TODO: this only adds padding after the :value slot, need to find a way to add padding before the slot
90
- # @!visibility private
91
- attr_reader *(12.times.collect{ |i| "padding_#{i}".to_sym })
92
-
93
89
  alias_method :cas, :compare_and_set
94
90
 
95
91
  def cas_computed
96
92
  cas(current_value = value, yield(current_value))
97
93
  end
94
+
95
+ # @!visibility private
96
+ def self.padding
97
+ # TODO: this only adds padding after the :value slot, need to find a way to add padding before the slot
98
+ # TODO (pitr-ch 28-Jul-2018): the padding instance vars may not be created
99
+ # hide from yardoc in a method
100
+ attr_reader *(12.times.collect{ |i| "padding_#{i}".to_sym })
101
+ end
102
+ padding
98
103
  end
99
104
 
100
105
  extend Volatile
@@ -126,6 +126,7 @@ module Concurrent
126
126
  # task = Concurrent::TimerTask.new(execution_interval: 1, timeout_interval: 1){ 42 }
127
127
  # task.add_observer(TaskObserver.new)
128
128
  # task.execute
129
+ # sleep 4
129
130
  #
130
131
  # #=> (2013-10-13 19:08:58 -0400) Execution successfully returned 42
131
132
  # #=> (2013-10-13 19:08:59 -0400) Execution successfully returned 42
@@ -164,7 +165,7 @@ module Concurrent
164
165
 
165
166
  # Create a new TimerTask with the given task and configuration.
166
167
  #
167
- # @!macro [attach] timer_task_initialize
168
+ # @!macro timer_task_initialize
168
169
  # @param [Hash] opts the options defining task execution.
169
170
  # @option opts [Integer] :execution_interval number of seconds between
170
171
  # task executions (default: EXECUTION_INTERVAL)
@@ -189,6 +190,7 @@ module Concurrent
189
190
  def initialize(opts = {}, &task)
190
191
  raise ArgumentError.new('no block given') unless block_given?
191
192
  super
193
+ set_deref_options opts
192
194
  end
193
195
 
194
196
  # Is the executor running?
@@ -280,6 +282,7 @@ module Concurrent
280
282
  @run_now = opts[:now] || opts[:run_now]
281
283
  @executor = Concurrent::SafeTaskExecutor.new(task)
282
284
  @running = Concurrent::AtomicBoolean.new(false)
285
+ @value = nil
283
286
 
284
287
  self.observers = Collection::CopyOnNotifyObserverSet.new
285
288
  end
@@ -305,7 +308,7 @@ module Concurrent
305
308
  # @!visibility private
306
309
  def execute_task(completion)
307
310
  return nil unless @running.true?
308
- ScheduledTask.execute(execution_interval, args: [completion], &method(:timeout_task))
311
+ ScheduledTask.execute(timeout_interval, args: [completion], &method(:timeout_task))
309
312
  _success, value, reason = @executor.execute(self)
310
313
  if completion.try?
311
314
  self.value = value
@@ -24,7 +24,7 @@ module Concurrent
24
24
  attr_reader :size
25
25
 
26
26
  # @!visibility private
27
- Tuple = defined?(Rubinius::Tuple) ? Rubinius::Tuple : Array
27
+ Tuple = defined?(Rubinius::Tuple) ? Rubinius::Tuple : ::Array
28
28
  private_constant :Tuple
29
29
 
30
30
  # Create a new tuple of the given size.
@@ -8,7 +8,7 @@ module Concurrent
8
8
  #
9
9
  # @!macro thread_safe_variable_comparison
10
10
  #
11
- # {include:file:doc/tvar.md}
11
+ # {include:file:docs-source/tvar.md}
12
12
  class TVar < Synchronization::Object
13
13
  safe_initialization!
14
14
 
@@ -162,7 +162,7 @@ module Concurrent
162
162
 
163
163
  class Transaction
164
164
 
165
- ABORTED = Object.new
165
+ ABORTED = ::Object.new
166
166
 
167
167
  ReadLogEntry = Struct.new(:tvar, :version)
168
168
 
@@ -16,7 +16,7 @@ module Concurrent
16
16
  end
17
17
 
18
18
  # Add a handler to be run at `Kernel#at_exit`
19
- # @param [Object] handler_id optionally provide an id, if allready present, handler is replaced
19
+ # @param [Object] handler_id optionally provide an id, if already present, handler is replaced
20
20
  # @yield the handler
21
21
  # @return id of the handler
22
22
  def add(handler_id = nil, &handler)
@@ -19,8 +19,8 @@ module Concurrent
19
19
  ruby_engine == 'rbx'
20
20
  end
21
21
 
22
- def on_truffle?
23
- ruby_engine == 'jruby+truffle'
22
+ def on_truffleruby?
23
+ ruby_engine == 'truffleruby'
24
24
  end
25
25
 
26
26
  def on_windows?
@@ -42,12 +42,12 @@ module Concurrent
42
42
  GLOBAL_MONOTONIC_CLOCK = class_definition.new
43
43
  private_constant :GLOBAL_MONOTONIC_CLOCK
44
44
 
45
- # @!macro [attach] monotonic_get_time
45
+ # @!macro monotonic_get_time
46
46
  #
47
47
  # Returns the current time a tracked by the application monotonic clock.
48
48
  #
49
- # @return [Float] The current monotonic time when `since` not given else
50
- # the elapsed monotonic time between `since` and the current time
49
+ # @return [Float] The current monotonic time since some unspecified
50
+ # starting point
51
51
  #
52
52
  # @!macro monotonic_clock_warning
53
53
  def monotonic_time
@@ -12,19 +12,11 @@ module Concurrent
12
12
  end
13
13
 
14
14
  def c_extensions_loaded?
15
- @c_extensions_loaded ||= false
15
+ defined?(@c_extensions_loaded) && @c_extensions_loaded
16
16
  end
17
17
 
18
18
  def java_extensions_loaded?
19
- @java_extensions_loaded ||= false
20
- end
21
-
22
- def set_c_extensions_loaded
23
- @c_extensions_loaded = true
24
- end
25
-
26
- def set_java_extensions_loaded
27
- @java_extensions_loaded = true
19
+ defined?(@java_extensions_loaded) && @java_extensions_loaded
28
20
  end
29
21
 
30
22
  def load_native_extensions
@@ -33,37 +25,43 @@ module Concurrent
33
25
  end
34
26
 
35
27
  if Concurrent.on_cruby? && !c_extensions_loaded?
36
- tries = [
37
- lambda do
38
- require 'concurrent/extension'
39
- set_c_extensions_loaded
40
- end,
41
- lambda do
42
- # may be a Windows cross-compiled native gem
43
- require "concurrent/#{RUBY_VERSION[0..2]}/extension"
44
- set_c_extensions_loaded
45
- end]
46
-
47
- tries.each do |try|
48
- begin
49
- try.call
50
- break
51
- rescue LoadError
52
- next
53
- end
54
- end
28
+ ['concurrent/concurrent_ruby_ext',
29
+ "concurrent/#{RUBY_VERSION[0..2]}/concurrent_ruby_ext"
30
+ ].each { |p| try_load_c_extension p }
55
31
  end
56
32
 
57
33
  if Concurrent.on_jruby? && !java_extensions_loaded?
58
34
  begin
59
- require 'concurrent_ruby_ext'
35
+ require 'concurrent/concurrent_ruby.jar'
60
36
  set_java_extensions_loaded
61
- rescue LoadError
62
- # move on with pure-Ruby implementations
63
- raise 'On JRuby but Java extensions failed to load.'
37
+ rescue LoadError => e
38
+ raise e, "Java extensions are required for JRuby.\n" + e.message, e.backtrace
64
39
  end
65
40
  end
66
41
  end
42
+
43
+ private
44
+
45
+ def set_c_extensions_loaded
46
+ @c_extensions_loaded = true
47
+ end
48
+
49
+ def set_java_extensions_loaded
50
+ @java_extensions_loaded = true
51
+ end
52
+
53
+ def try_load_c_extension(path)
54
+ require path
55
+ set_c_extensions_loaded
56
+ rescue LoadError => e
57
+ if e.path == path
58
+ # move on with pure-Ruby implementations
59
+ # TODO (pitr-ch 12-Jul-2018): warning on verbose?
60
+ else
61
+ raise e
62
+ end
63
+ end
64
+
67
65
  end
68
66
  end
69
67
 
@@ -76,8 +76,6 @@ module Concurrent
76
76
  def compute_processor_count
77
77
  if Concurrent.on_jruby?
78
78
  java.lang.Runtime.getRuntime.availableProcessors
79
- elsif Concurrent.on_truffle?
80
- Truffle::Primitive.logical_processors
81
79
  else
82
80
  os_name = RbConfig::CONFIG["target_os"]
83
81
  if os_name =~ /mingw|mswin/
@@ -1,4 +1,4 @@
1
1
  module Concurrent
2
- VERSION = '1.0.5'
3
- EDGE_VERSION = '0.3.1'
2
+ VERSION = '1.1.0.pre1'
3
+ EDGE_VERSION = '0.4.0.pre1'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concurrent-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.1.0.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jerry D'Antonio
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-02-26 00:00:00.000000000 Z
13
+ date: 2018-08-15 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: |
16
16
  Modern concurrency tools including agents, futures, promises, thread pools, actors, supervisors, and more.
@@ -20,12 +20,30 @@ executables: []
20
20
  extensions: []
21
21
  extra_rdoc_files:
22
22
  - README.md
23
- - LICENSE.txt
23
+ - LICENSE.md
24
24
  - CHANGELOG.md
25
25
  files:
26
26
  - CHANGELOG.md
27
- - LICENSE.txt
27
+ - Gemfile
28
+ - LICENSE.md
28
29
  - README.md
30
+ - Rakefile
31
+ - ext/concurrent-ruby/ConcurrentRubyService.java
32
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/AtomicReferenceLibrary.java
33
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/JRubyMapBackendLibrary.java
34
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicBooleanLibrary.java
35
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicFixnumLibrary.java
36
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/JavaSemaphoreLibrary.java
37
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/SynchronizationLibrary.java
38
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMap.java
39
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMapV8.java
40
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/LongAdder.java
41
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/Striped64.java
42
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/ConcurrentHashMapV8.java
43
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/LongAdder.java
44
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/Striped64.java
45
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166y/ThreadLocalRandom.java
46
+ - lib/concurrent-ruby.rb
29
47
  - lib/concurrent.rb
30
48
  - lib/concurrent/agent.rb
31
49
  - lib/concurrent/array.rb
@@ -34,6 +52,7 @@ files:
34
52
  - lib/concurrent/atomic/abstract_thread_local_var.rb
35
53
  - lib/concurrent/atomic/atomic_boolean.rb
36
54
  - lib/concurrent/atomic/atomic_fixnum.rb
55
+ - lib/concurrent/atomic/atomic_markable_reference.rb
37
56
  - lib/concurrent/atomic/atomic_reference.rb
38
57
  - lib/concurrent/atomic/count_down_latch.rb
39
58
  - lib/concurrent/atomic/cyclic_barrier.rb
@@ -49,18 +68,13 @@ files:
49
68
  - lib/concurrent/atomic/ruby_thread_local_var.rb
50
69
  - lib/concurrent/atomic/semaphore.rb
51
70
  - lib/concurrent/atomic/thread_local_var.rb
52
- - lib/concurrent/atomic_reference/concurrent_update_error.rb
53
- - lib/concurrent/atomic_reference/direct_update.rb
54
- - lib/concurrent/atomic_reference/jruby+truffle.rb
55
- - lib/concurrent/atomic_reference/jruby.rb
56
71
  - lib/concurrent/atomic_reference/mutex_atomic.rb
57
72
  - lib/concurrent/atomic_reference/numeric_cas_wrapper.rb
58
- - lib/concurrent/atomic_reference/rbx.rb
59
- - lib/concurrent/atomic_reference/ruby.rb
60
73
  - lib/concurrent/atomics.rb
61
74
  - lib/concurrent/collection/copy_on_notify_observer_set.rb
62
75
  - lib/concurrent/collection/copy_on_write_observer_set.rb
63
76
  - lib/concurrent/collection/java_non_concurrent_priority_queue.rb
77
+ - lib/concurrent/collection/lock_free_stack.rb
64
78
  - lib/concurrent/collection/map/atomic_reference_map_backend.rb
65
79
  - lib/concurrent/collection/map/mri_map_backend.rb
66
80
  - lib/concurrent/collection/map/non_concurrent_map_backend.rb
@@ -72,11 +86,11 @@ files:
72
86
  - lib/concurrent/concern/logging.rb
73
87
  - lib/concurrent/concern/obligation.rb
74
88
  - lib/concurrent/concern/observable.rb
89
+ - lib/concurrent/concurrent_ruby.jar
75
90
  - lib/concurrent/configuration.rb
76
91
  - lib/concurrent/constants.rb
77
92
  - lib/concurrent/dataflow.rb
78
93
  - lib/concurrent/delay.rb
79
- - lib/concurrent/edge.rb
80
94
  - lib/concurrent/errors.rb
81
95
  - lib/concurrent/exchanger.rb
82
96
  - lib/concurrent/executor/abstract_executor_service.rb
@@ -104,14 +118,16 @@ files:
104
118
  - lib/concurrent/hash.rb
105
119
  - lib/concurrent/immutable_struct.rb
106
120
  - lib/concurrent/ivar.rb
107
- - lib/concurrent/lazy_register.rb
108
121
  - lib/concurrent/map.rb
109
122
  - lib/concurrent/maybe.rb
110
123
  - lib/concurrent/mutable_struct.rb
111
124
  - lib/concurrent/mvar.rb
112
125
  - lib/concurrent/options.rb
113
126
  - lib/concurrent/promise.rb
127
+ - lib/concurrent/promises.rb
128
+ - lib/concurrent/re_include.rb
114
129
  - lib/concurrent/scheduled_task.rb
130
+ - lib/concurrent/set.rb
115
131
  - lib/concurrent/settable_struct.rb
116
132
  - lib/concurrent/synchronization.rb
117
133
  - lib/concurrent/synchronization/abstract_lockable_object.rb
@@ -122,19 +138,18 @@ files:
122
138
  - lib/concurrent/synchronization/jruby_object.rb
123
139
  - lib/concurrent/synchronization/lock.rb
124
140
  - lib/concurrent/synchronization/lockable_object.rb
125
- - lib/concurrent/synchronization/mri_lockable_object.rb
126
141
  - lib/concurrent/synchronization/mri_object.rb
142
+ - lib/concurrent/synchronization/mutex_lockable_object.rb
127
143
  - lib/concurrent/synchronization/object.rb
128
144
  - lib/concurrent/synchronization/rbx_lockable_object.rb
129
145
  - lib/concurrent/synchronization/rbx_object.rb
130
- - lib/concurrent/synchronization/truffle_lockable_object.rb
131
- - lib/concurrent/synchronization/truffle_object.rb
146
+ - lib/concurrent/synchronization/truffleruby_object.rb
132
147
  - lib/concurrent/synchronization/volatile.rb
133
148
  - lib/concurrent/thread_safe/synchronized_delegator.rb
134
149
  - lib/concurrent/thread_safe/util.rb
135
150
  - lib/concurrent/thread_safe/util/adder.rb
136
- - lib/concurrent/thread_safe/util/array_hash_rbx.rb
137
151
  - lib/concurrent/thread_safe/util/cheap_lockable.rb
152
+ - lib/concurrent/thread_safe/util/data_structures.rb
138
153
  - lib/concurrent/thread_safe/util/power_of_two_tuple.rb
139
154
  - lib/concurrent/thread_safe/util/striped64.rb
140
155
  - lib/concurrent/thread_safe/util/volatile.rb
@@ -161,18 +176,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
176
  requirements:
162
177
  - - ">="
163
178
  - !ruby/object:Gem::Version
164
- version: 1.9.3
179
+ version: 2.0.0
165
180
  required_rubygems_version: !ruby/object:Gem::Requirement
166
181
  requirements:
167
- - - ">="
182
+ - - ">"
168
183
  - !ruby/object:Gem::Version
169
- version: '0'
184
+ version: 1.3.1
170
185
  requirements: []
171
186
  rubyforge_project:
172
- rubygems_version: 2.6.8
187
+ rubygems_version: 2.7.3
173
188
  signing_key:
174
189
  specification_version: 4
175
190
  summary: Modern concurrency tools for Ruby. Inspired by Erlang, Clojure, Scala, Haskell,
176
191
  F#, C#, Java, and classic concurrency patterns.
177
192
  test_files: []
178
- has_rdoc:
@@ -1,8 +0,0 @@
1
- module Concurrent
2
-
3
- # @!macro atomic_reference
4
- class ConcurrentUpdateError < ThreadError
5
- # frozen pre-allocated backtrace to speed ConcurrentUpdateError
6
- CONC_UP_ERR_BACKTRACE = ['backtrace elided; set verbose to enable'].freeze
7
- end
8
- end