Skip to content

Commit 0d54e91

Browse files
authored
Update README
1 parent 343923d commit 0d54e91

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

README.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ The design goals of this gem are:
3232
* Exclude features that don't make sense in Ruby
3333
* Be small, lean, and loosely coupled
3434

35+
## Contributing
36+
37+
**This gem depends on contributions and we appreciate your help. Would you like to contribute? Great!
38+
Have a look at [issues with `looking-for-contributor` label](https://github.com/ruby-concurrency/concurrent-ruby/issues?q=is%3Aissue+is%3Aopen+label%3Alooking-for-contributor).**
39+
3540
### Supported Ruby versions
3641

3742
MRI 1.9.3, 2.0 and above, JRuby 1.7x in 1.9 mode, JRuby 9000, and Rubinius 2.x are supported.
@@ -40,9 +45,9 @@ Java 8 is preferred for JRuby but every Java version on which JRuby 9000 runs is
4045

4146
## Thread Safety
4247

43-
*Concurrent Ruby makes the strongest thread safety guarantees of any Ruby concurrency library. We are the only library with a published [memory model](https://github.com/ruby-concurrency/concurrent-ruby/blob/master/doc/synchronization.md) which provides consistent behavior and guarantees on all three of the main Ruby interpreters (MRI/CRuby, JRuby, and Rubinius).*
48+
*Concurrent Ruby makes one of the strongest thread safety guarantees of any Ruby concurrency library, providing consistent behavior and guarantees on all three of the main Ruby interpreters (MRI/CRuby, JRuby, and Rubinius).*
4449

45-
Every abstraction in this library is thread safe. Similarly, all are deadlock free and many are fully lock free. Specific thread safety guarantees are documented with each abstraction.
50+
Every abstraction in this library is thread safe. Specific thread safety guarantees are documented with each abstraction.
4651

4752
It is critical to remember, however, that Ruby is a language of mutable references. *No* concurrency library for Ruby can ever prevent the user from making thread safety mistakes (such as sharing a mutable object between threads and modifying it on both threads) or from creating deadlocks through incorrect use of locks. All the library can do is provide safe abstractions which encourage safe practices. Concurrent Ruby provides more safe concurrency abstractions than any other Ruby library, many of which support the mantra of ["Do not communicate by sharing memory; instead, share memory by communicating"](https://blog.golang.org/share-memory-by-communicating). Concurrent Ruby is also the only Ruby library which provides a full suite of thread safe and immutable variable types and data structures.
4853

@@ -121,28 +126,23 @@ be obeyed though. Features developed in `concurrent-ruby-edge` are expected to m
121126
* [Promises Framework](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promises.html):
122127
Unified implementation of futures and promises which combines features of previous `Future`,
123128
`Promise`, `IVar`, `Event`, `dataflow`, `Delay`, and `TimerTask` into a single framework. It extensively uses the
124-
new synchronization layer to make all the features **non-blocking** and **lock-free**, with the exception of obviously blocking
125-
operations like `#wait`, `#value`. It also offers better performance.
129+
new synchronization layer to make all the features **non-blocking** and **lock-free**, with the exception of
130+
obviously blocking operations like `#wait`, `#value`. It also offers better performance.
131+
Status: The framework is being finalized so it can be moved to core. It will eventually replace old implementations
132+
it replaces.
126133
* [Actor](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Actor.html):
127134
Implements the Actor Model, where concurrent actors exchange messages.
135+
Status: Partial documentation and tests; depends on new future/promise framework; stability is good.
128136
* [Channel](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Edge/Channel.html):
129137
Communicating Sequential Processes ([CSP](https://en.wikipedia.org/wiki/Communicating_sequential_processes)).
130138
Functionally equivalent to Go [channels](https://tour.golang.org/concurrency/2) with additional
131139
inspiration from Clojure [core.async](https://clojure.github.io/core.async/).
140+
Status: Partial documentation and tests.
132141
* [LazyRegister](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/LazyRegister.html)
133142
* [LockFreeLinkedSet](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Edge/LockFreeLinkedSet.html)
143+
Status: will be moved to core soon.
134144
* [LockFreeStack](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/LockFreeStack.html)
135-
136-
#### Statuses:
137-
138-
*Why are these not in core?*
139-
140-
- **Promises Framework** - They are being finalized to be able to be moved to core. They'll deprecate old
141-
implementation.
142-
- **Actor** - Partial documentation and tests; depends on new future/promise framework; stability is good.
143-
- **Channel** - Brand new implementation; partial documentation and tests; stability is good.
144-
- **LazyRegister** - Missing documentation and tests.
145-
- **AtomicMarkableReference, LockFreeLinkedSet, LockFreeStack** - Need real world battle testing.
145+
Status: missing documentation and tests.
146146

147147
## Usage
148148

0 commit comments

Comments
 (0)