concurrent-ruby 1.1.0.pre1 → 1.1.0.pre2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d6eb2db0edac5d0395420728ee688411a53edff0cba15e1b24097c13d0940ec
4
- data.tar.gz: 7423e9b23afcd78dfa230709c6008315d7b0bd6f95f49cf2d9fbca92b2daef70
3
+ metadata.gz: a9eff851dc1c1194d74471f51e804151e6523be1af22c681393518897d8723e7
4
+ data.tar.gz: 97aea57e3c31de3e0a927b07b5bbae7a5b2859537fe959f08d045fadc86d818a
5
5
  SHA512:
6
- metadata.gz: 893800b7dca99c4ca43aa1402826b24a04523cb28c0a3101d0f3b1a3aa7cdd639a7bac807a4267cc0dfcee99bd420358b2ed96e667e0ff6ec16a19296cb9cada
7
- data.tar.gz: 2b3768fb194468af27ac7985a84697398f9c13bc1c922d959abe655bace5ba4b1dd1eca8fb3350f77f942d3185ea11d2f911ed547db15b32f814b51603812491
6
+ metadata.gz: ee74332b245d576afd75179edf7d37e2d815e0f24afe157e9b76189c7275e60a8edc348646d659c5d631e73fa5382a57a94ec82c6b4bb909a993f86b45677192
7
+ data.tar.gz: d21e2f11e2c3f9090cbb4e7dada48cd64d3eb3a9c7588417b6e52975ebe0a0f8fafc612695c46cd58f94389c7597800c038a57f89fa70db936493b007890d1e7
@@ -1,5 +1,7 @@
1
1
  ## Current
2
2
 
3
+ ## Release v1.1.0.pre1, edge v0.4.0.pre1 (15 Aug 2018)
4
+
3
5
  concurrent-ruby:
4
6
 
5
7
  * [Promises](http://ruby-concurrency.github.io/concurrent-ruby/1.1.0/Concurrent/Promises.html)
data/README.md CHANGED
@@ -144,7 +144,7 @@ Thread-safe variables:
144
144
  A boolean value that can be updated atomically.
145
145
  * [AtomicFixnum](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/AtomicFixnum.html)
146
146
  A numeric value that can be updated atomically.
147
- * [AtomicReference](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/MutexAtomic.html)
147
+ * [AtomicReference](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/AtomicReference.html)
148
148
  An object reference that may be updated atomically.
149
149
  * [Exchanger](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Exchanger.html)
150
150
  A synchronization point at which threads can pair and swap elements within pairs. Based on
@@ -178,7 +178,7 @@ Thread-safe variables:
178
178
  A read/write lock with reentrant and upgrade features.
179
179
  * [Semaphore](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Semaphore.html)
180
180
  A counting-based locking mechanism that uses permits.
181
- * [AtomicMarkableReference](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Atomic/AtomicMarkableReference.html)
181
+ * [AtomicMarkableReference](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/AtomicMarkableReference.html)
182
182
 
183
183
  #### Deprecated
184
184
 
data/Rakefile CHANGED
@@ -33,6 +33,7 @@ namespace :repackage do
33
33
  task :all do
34
34
  Dir.chdir(__dir__) do
35
35
  sh 'bundle package'
36
+ # needed only if the jar is built outside of docker
36
37
  Rake::Task['lib/concurrent/concurrent_ruby.jar'].invoke
37
38
  RakeCompilerDock.exec 'support/cross_building.sh'
38
39
  end
@@ -192,7 +193,7 @@ rescue LoadError => e
192
193
  end
193
194
 
194
195
  desc 'build, test, and publish the gem'
195
- task :release => ['release:checks', 'release:build', 'release:test']
196
+ task :release => ['release:checks', 'release:build', 'release:test', 'release:publish']
196
197
 
197
198
  namespace :release do
198
199
  # Depends on environment of @pitr-ch
@@ -1,6 +1,6 @@
1
1
  module Concurrent
2
2
 
3
- # @!visibility private
3
+ # @!macro warn.edge
4
4
  class LockFreeStack < Synchronization::Object
5
5
 
6
6
  safe_initialization!
@@ -8,7 +8,13 @@ module Concurrent
8
8
  class Node
9
9
  # TODO (pitr-ch 20-Dec-2016): Could be unified with Stack class?
10
10
 
11
- attr_reader :value, :next_node
11
+ # @return [Node]
12
+ attr_reader :next_node
13
+
14
+ # @return [Object]
15
+ attr_reader :value
16
+
17
+ # @!visibility private
12
18
  # allow to nil-ify to free GC when the entry is no longer relevant, not synchronised
13
19
  attr_writer :value
14
20
 
@@ -20,38 +26,46 @@ module Concurrent
20
26
  singleton_class.send :alias_method, :[], :new
21
27
  end
22
28
 
23
- class Empty < Node
24
- def next_node
25
- self
26
- end
29
+ # The singleton for empty node
30
+ EMPTY = Node[nil, nil]
31
+ def EMPTY.next_node
32
+ self
27
33
  end
28
34
 
29
- EMPTY = Empty[nil, nil]
30
-
31
35
  attr_atomic(:head)
32
36
  private :head, :head=, :swap_head, :compare_and_set_head, :update_head
33
37
 
38
+ # @!visibility private
34
39
  def self.of1(value)
35
40
  new Node[value, EMPTY]
36
41
  end
37
42
 
43
+ # @!visibility private
38
44
  def self.of2(value1, value2)
39
45
  new Node[value1, Node[value2, EMPTY]]
40
46
  end
41
47
 
48
+ # @param [Node] head
42
49
  def initialize(head = EMPTY)
43
50
  super()
44
51
  self.head = head
45
52
  end
46
53
 
54
+ # @param [Node] head
55
+ # @return [true, false]
47
56
  def empty?(head = self.head)
48
57
  head.equal? EMPTY
49
58
  end
50
59
 
60
+ # @param [Node] head
61
+ # @param [Object] value
62
+ # @return [true, false]
51
63
  def compare_and_push(head, value)
52
64
  compare_and_set_head head, Node[value, head]
53
65
  end
54
66
 
67
+ # @param [Object] value
68
+ # @return [self]
55
69
  def push(value)
56
70
  while true
57
71
  current_head = head
@@ -59,14 +73,18 @@ module Concurrent
59
73
  end
60
74
  end
61
75
 
76
+ # @return [Node]
62
77
  def peek
63
78
  head
64
79
  end
65
80
 
81
+ # @param [Node] head
82
+ # @return [true, false]
66
83
  def compare_and_pop(head)
67
84
  compare_and_set_head head, head.next_node
68
85
  end
69
86
 
87
+ # @return [Object]
70
88
  def pop
71
89
  while true
72
90
  current_head = head
@@ -74,12 +92,16 @@ module Concurrent
74
92
  end
75
93
  end
76
94
 
95
+ # @param [Node] head
96
+ # @return [true, false]
77
97
  def compare_and_clear(head)
78
98
  compare_and_set_head head, EMPTY
79
99
  end
80
100
 
81
101
  include Enumerable
82
102
 
103
+ # @param [Node] head
104
+ # @return [self]
83
105
  def each(head = nil)
84
106
  return to_enum(:each, head) unless block_given?
85
107
  it = head || peek
@@ -90,6 +112,7 @@ module Concurrent
90
112
  self
91
113
  end
92
114
 
115
+ # @return [true, false]
93
116
  def clear
94
117
  while true
95
118
  current_head = head
@@ -98,14 +121,22 @@ module Concurrent
98
121
  end
99
122
  end
100
123
 
124
+ # @param [Node] head
125
+ # @return [true, false]
101
126
  def clear_if(head)
102
127
  compare_and_set_head head, EMPTY
103
128
  end
104
129
 
130
+ # @param [Node] head
131
+ # @param [Node] new_head
132
+ # @return [true, false]
105
133
  def replace_if(head, new_head)
106
134
  compare_and_set_head head, new_head
107
135
  end
108
136
 
137
+ # @return [self]
138
+ # @yield over the cleared stack
139
+ # @yieldparam [Object] value
109
140
  def clear_each(&block)
110
141
  while true
111
142
  current_head = head
@@ -495,7 +495,6 @@ module Concurrent
495
495
  @Promise = promise
496
496
  @DefaultExecutor = default_executor
497
497
  @Callbacks = LockFreeStack.new
498
- # noinspection RubyArgCount
499
498
  @Waiters = AtomicFixnum.new 0
500
499
  self.internal_state = PENDING
501
500
  end
@@ -1420,7 +1419,6 @@ module Concurrent
1420
1419
  def initialize(delayed, blockers_count, future)
1421
1420
  super(future)
1422
1421
  @Delayed = delayed
1423
- # noinspection RubyArgCount
1424
1422
  @Countdown = AtomicFixnum.new blockers_count
1425
1423
  end
1426
1424
 
@@ -41,7 +41,7 @@ module Concurrent
41
41
 
42
42
  class RbxSet < ::Set
43
43
  end
44
- ThreadSafe::Util.make_synchronized_on_rbx Concurrent::Set
44
+ ThreadSafe::Util.make_synchronized_on_rbx Concurrent::RbxSet
45
45
  RbxSet
46
46
 
47
47
  when Concurrent.on_truffleruby?
@@ -50,7 +50,7 @@ module Concurrent
50
50
  class TruffleRubySet < ::Set
51
51
  end
52
52
 
53
- ThreadSafe::Util.make_synchronized_on_truffleruby Concurrent::Set
53
+ ThreadSafe::Util.make_synchronized_on_truffleruby Concurrent::TruffleRubySet
54
54
  TruffleRubySet
55
55
 
56
56
  else
@@ -1,4 +1,4 @@
1
1
  module Concurrent
2
- VERSION = '1.1.0.pre1'
3
- EDGE_VERSION = '0.4.0.pre1'
2
+ VERSION = '1.1.0.pre2'
3
+ EDGE_VERSION = '0.4.0.pre2'
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.1.0.pre1
4
+ version: 1.1.0.pre2
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: 2018-08-15 00:00:00.000000000 Z
13
+ date: 2018-09-18 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.