concurrent-ruby-ext 1.0.0.pre1 → 1.0.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -1
- data/README.md +16 -18
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d6be8e85065d685bf7042c30283a4cfa73f8641
|
4
|
+
data.tar.gz: a2be66760d1bc25898e5f7ded1537b461d086054
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ef7a33699d61a1cc849235287a3fdf820cfde78dd7d54661e887c8e8442b241d4819eaf8c2abf66f222c5b48190b6b130d949660041563eea4cd3df3817c455
|
7
|
+
data.tar.gz: 342cacece9ba9eb29534007a138b54ece465215d4b8896bf1b88814c1790eb8a98c4b91f3c4d96d1e72f4dfe80fd682641535b800723bfc51c8a8235c3f39d07
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,17 @@
|
|
1
|
-
## Current Release v1.0.0.
|
1
|
+
## Current Release v1.0.0.pre2 (19 September 2015)
|
2
|
+
|
3
|
+
* Simplification of `RubySingleThreadExecutor`
|
4
|
+
* `Async` improvements
|
5
|
+
- Each object uses its own `SingleThreadExecutor` instead of the global thread pool.
|
6
|
+
- No longers supports executor injection
|
7
|
+
- Much better documentation
|
8
|
+
* `Atom` updates
|
9
|
+
- No longer `Dereferenceable`
|
10
|
+
- Now `Observable`
|
11
|
+
- Added a `#reset` method
|
12
|
+
* Brand new `Agent` API and implementation. Now functionally equivalent to Clojure.
|
13
|
+
|
14
|
+
### Current Release v1.0.0.pre1 (19 August 2015)
|
2
15
|
|
3
16
|
* Merged in the `thread_safe` gem
|
4
17
|
- `Concurrent::Array`
|
data/README.md
CHANGED
@@ -61,7 +61,7 @@ This library contains a variety of concurrency abstractions at high and low leve
|
|
61
61
|
|
62
62
|
#### General-purpose Concurrency Abstractions
|
63
63
|
|
64
|
-
* [Async](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Async.html): A mixin module that provides simple asynchronous behavior to
|
64
|
+
* [Async](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Async.html): A mixin module that provides simple asynchronous behavior to a class. Loosely based on Erlang's [gen_server](http://www.erlang.org/doc/man/gen_server.html).
|
65
65
|
* [Future](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Future.html): An asynchronous operation that produces a value.
|
66
66
|
* [Dataflow](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent.html#dataflow-class_method): Built on Futures, Dataflow allows you to create a task that will be scheduled when all of its data dependencies are available.
|
67
67
|
* [Promise](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promise.html): Similar to Futures, with more features.
|
@@ -79,11 +79,9 @@ Collection classes that were originally part of the (deprecated) `thread_safe` g
|
|
79
79
|
|
80
80
|
Value objects inspired by other languages:
|
81
81
|
|
82
|
-
* [Atom](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Atom.html): A way to manage shared, synchronous, independent state.
|
83
82
|
* [Maybe](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Maybe.html) A thread-safe, immutable object representing an optional value, based on
|
84
83
|
[Haskell Data.Maybe](https://hackage.haskell.org/package/base-4.2.0.1/docs/Data-Maybe.html).
|
85
|
-
* [Delay](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Delay.html) Lazy evaluation of a block yielding an immutable result. Based on Clojure's
|
86
|
-
[delay](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Delay.html).
|
84
|
+
* [Delay](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Delay.html) Lazy evaluation of a block yielding an immutable result. Based on Clojure's [delay](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Delay.html).
|
87
85
|
|
88
86
|
Structure classes derived from Ruby's [Struct](http://ruby-doc.org/core-2.2.0/Struct.html):
|
89
87
|
|
@@ -93,10 +91,15 @@ Structure classes derived from Ruby's [Struct](http://ruby-doc.org/core-2.2.0/St
|
|
93
91
|
|
94
92
|
Thread-safe variables:
|
95
93
|
|
94
|
+
* [Agent](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Agent.html): A way to manage shared, mutable, *asynchronous*, independent, state. Based on Clojure's [Agent](http://clojure.org/agents).
|
95
|
+
* [Atom](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Atom.html): A way to manage shared, mutable, *synchronous*, independent state. Based on Clojure's [Atom](http://clojure.org/atoms).
|
96
96
|
* [AtomicBoolean](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/AtomicBoolean.html) A boolean value that can be updated atomically.
|
97
97
|
* [AtomicFixnum](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/AtomicFixnum.html) A numeric value that can be updated atomically.
|
98
98
|
* [AtomicReference](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/MutexAtomic.html) An object reference that may be updated atomically.
|
99
|
+
* [Exchanger](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Exchanger.html) A synchronization point at which threads can pair and swap elements within pairs. Based on Java's [Exchanger](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Exchanger.html).
|
100
|
+
* [MVar](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/MVar.html) A synchronized single element container. Based on Haskell's [MVar](https://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Concurrent-MVar.html) and Scala's [MVar](http://docs.typelevel.org/api/scalaz/nightly/index.html#scalaz.concurrent.MVar$).
|
99
101
|
* [ThreadLocalVar](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/ThreadLocalVar.html) A variable where the value is different for each thread.
|
102
|
+
* [TVar](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/TVar.html) A transactional variable implementing software transactional memory (STM). Based on Clojure's [Ref](http://clojure.org/refs).
|
100
103
|
|
101
104
|
#### Java-inspired ThreadPools and Other Executors
|
102
105
|
|
@@ -104,16 +107,13 @@ Thread-safe variables:
|
|
104
107
|
|
105
108
|
#### Thread Synchronization Classes and Algorithms
|
106
109
|
|
107
|
-
* [
|
110
|
+
* [CountDownLatch](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/CountDownLatch.html) A synchronization object that allows one thread to wait on multiple other threads.
|
108
111
|
* [CyclicBarrier](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/CyclicBarrier.html) A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point.
|
109
112
|
* [Event](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Event.html) Old school kernel-style event.
|
110
|
-
* [
|
111
|
-
* [I-Structure](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/IVar.html) (IVar) Similar to a "future" but can be manually assigned once, after which it becomes immutable.
|
112
|
-
* [M-Structure](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/MVar.html) (MVar) A synchronized single element container.
|
113
|
+
* [IVar](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/IVar.html) Similar to a "future" but can be manually assigned once, after which it becomes immutable.
|
113
114
|
* [ReadWriteLock](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/ReadWriteLock.html) A lock that supports multiple readers but only one writer.
|
114
115
|
* [ReentrantReadWriteLock](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/ReentrantReadWriteLock.html) A read/write lock with reentrant and upgrade features.
|
115
116
|
* [Semaphore](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Semaphore.html) A counting-based locking mechanism that uses permits.
|
116
|
-
* [Software transactional memory](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/TVar.html) (TVar) A transactional variable - a single-element container that is used as part of a transaction.
|
117
117
|
|
118
118
|
### Edge Features
|
119
119
|
|
@@ -125,12 +125,11 @@ be obeyed though. Features developed in `concurrent-ruby-edge` are expected to m
|
|
125
125
|
|
126
126
|
* [Actor](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Actor.html):
|
127
127
|
Implements the Actor Model, where concurrent actors exchange messages.
|
128
|
-
* [
|
129
|
-
|
130
|
-
`Promise`, `IVar`, `Event`, `
|
131
|
-
new synchronization layer to make all the features **non-blocking** and **lock-free
|
128
|
+
* [New Future Framework](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Edge/FutureShortcuts.html):
|
129
|
+
Unified implementation of futures and promises which combines features of previous `Future`,
|
130
|
+
`Promise`, `IVar`, `Event`, `dataflow`, `Delay`, and `TimerTask` into a single framework. It extensively uses the
|
131
|
+
new synchronization layer to make all the features **non-blocking** and **lock-free**, with the exception of obviously blocking
|
132
132
|
operations like `#wait`, `#value`. It also offers better performance.
|
133
|
-
* [Agent](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Agent.html): A single atomic value that represents an identity.
|
134
133
|
* [Channel](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Channel.html):
|
135
134
|
Communicating Sequential Processes (CSP).
|
136
135
|
* [LazyRegister](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/LazyRegister.html)
|
@@ -142,12 +141,11 @@ be obeyed though. Features developed in `concurrent-ruby-edge` are expected to m
|
|
142
141
|
|
143
142
|
*Why are these not in core?*
|
144
143
|
|
145
|
-
- **Actor** - Partial documentation and tests; stability is good.
|
144
|
+
- **Actor** - Partial documentation and tests; depends on new future/promise framework; stability is good.
|
146
145
|
- **Future/Promise Framework** - API changes; partial documentation and tests; stability good.
|
147
|
-
- **
|
148
|
-
- **Channel** - Missing documentation; limted features; stability good.
|
146
|
+
- **Channel** - Missing documentation; limited features; stability good.
|
149
147
|
- **LazyRegister** - Missing documentation and tests.
|
150
|
-
- **AtomicMarkableReference, LockFreeLinkedSet, LockFreeStack** -
|
148
|
+
- **AtomicMarkableReference, LockFreeLinkedSet, LockFreeStack** - Need real world battle testing
|
151
149
|
|
152
150
|
## Usage
|
153
151
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: concurrent-ruby-ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jerry D'Antonio
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-09-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: concurrent-ruby
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 1.0.0.
|
20
|
+
version: 1.0.0.pre2
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 1.0.0.
|
27
|
+
version: 1.0.0.pre2
|
28
28
|
description: |2
|
29
29
|
C extensions to optimize the concurrent-ruby gem when running under MRI.
|
30
30
|
Please see http://concurrent-ruby.com for more information.
|
@@ -75,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
75
|
version: 1.3.1
|
76
76
|
requirements: []
|
77
77
|
rubyforge_project:
|
78
|
-
rubygems_version: 2.4.
|
78
|
+
rubygems_version: 2.4.5.1
|
79
79
|
signing_key:
|
80
80
|
specification_version: 4
|
81
81
|
summary: C extensions to optimize concurrent-ruby under MRI.
|