concurrent-ruby 1.1.0.pre1 → 1.1.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
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.