Skip to content

Commit 292cc93

Browse files
committed
Readme update
1 parent 7247700 commit 292cc93

File tree

1 file changed

+28
-42
lines changed

1 file changed

+28
-42
lines changed

README.md

Lines changed: 28 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -9,39 +9,28 @@
99
[![License](https://img.shields.io/badge/license-MIT-green.svg)](http://opensource.org/licenses/MIT)
1010
[![Gitter chat](https://img.shields.io/badge/IRC%20(gitter)-devs%20%26%20users-brightgreen.svg)](https://gitter.im/ruby-concurrency/concurrent-ruby)
1111

12-
<table>
13-
<tr>
14-
<td align="left" valign="top">
15-
<p>
16-
Modern concurrency tools for Ruby. Inspired by
17-
<a href="http://www.erlang.org/doc/reference_manual/processes.html">Erlang</a>,
18-
<a href="http://clojure.org/concurrent_programming">Clojure</a>,
19-
<a href="http://akka.io/">Scala</a>,
20-
<a href="http://www.haskell.org/haskellwiki/Applications_and_libraries/Concurrency_and_parallelism#Concurrent_Haskell">Haskell</a>,
21-
<a href="http://blogs.msdn.com/b/dsyme/archive/2010/02/15/async-and-parallel-design-patterns-in-f-part-3-agents.aspx">F#</a>,
22-
<a href="http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx">C#</a>,
23-
<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html">Java</a>,
24-
and classic concurrency patterns.
25-
</p>
26-
<p>
27-
The design goals of this gem are:
28-
<ul>
29-
<li>Be an 'unopinionated' toolbox that provides useful utilities without debating which is better or why</li>
30-
<li>Remain free of external gem dependencies</li>
31-
<li>Stay true to the spirit of the languages providing inspiration</li>
32-
<li>But implement in a way that makes sense for Ruby</li>
33-
<li>Keep the semantics as idiomatic Ruby as possible</li>
34-
<li>Support features that make sense in Ruby</li>
35-
<li>Exclude features that don't make sense in Ruby</li>
36-
<li>Be small, lean, and loosely coupled</li>
37-
</ul>
38-
</p>
39-
</td>
40-
<td align="right" valign="top">
41-
<img src="https://raw.githubusercontent.com/ruby-concurrency/concurrent-ruby/master/doc/logo/concurrent-ruby-logo-300x300.png"/>
42-
</td>
43-
</tr>
44-
</table>
12+
Modern concurrency tools for Ruby. Inspired by
13+
[Erlang](http://www.erlang.org/doc/reference_manual/processes.html),
14+
[Clojure](http://clojure.org/concurrent_programming),
15+
[Scala](http://akka.io/),
16+
[Haskell](http://www.haskell.org/haskellwiki/Applications_and_libraries/Concurrency_and_parallelism#Concurrent_Haskell),
17+
[F#](http://blogs.msdn.com/b/dsyme/archive/2010/02/15/async-and-parallel-design-patterns-in-f-part-3-agents.aspx),
18+
[C#](http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx),
19+
[Java](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html),
20+
and classic concurrency patterns.
21+
22+
<img src="https://raw.githubusercontent.com/ruby-concurrency/concurrent-ruby/master/doc/logo/concurrent-ruby-logo-300x300.png" align="right" style="margin-left: 20px;" />
23+
24+
The design goals of this gem are:
25+
26+
* Be an 'unopinionated' toolbox that provides useful utilities without debating which is better or why
27+
* Remain free of external gem dependencies
28+
* Stay true to the spirit of the languages providing inspiration
29+
* But implement in a way that makes sense for Ruby
30+
* Keep the semantics as idiomatic Ruby as possible
31+
* Support features that make sense in Ruby
32+
* Exclude features that don't make sense in Ruby
33+
* Be small, lean, and loosely coupled
4534

4635
### Supported Ruby versions
4736

@@ -66,11 +55,6 @@ We also have a [mailing list](http://groups.google.com/group/concurrent-ruby) an
6655
#### General-purpose Concurrency Abstractions
6756

6857
* [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).
69-
* [Promises Framework](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promises.html):
70-
Unified implementation of futures and promises which combines features of previous `Future`,
71-
`Promise`, `IVar`, `Event`, `dataflow`, `Delay`, and `TimerTask` into a single framework. It extensively uses the
72-
new synchronization layer to make all the features **non-blocking** and **lock-free**, with the exception of obviously blocking
73-
operations like `#wait`, `#value`. It also offers better performance.
7458
* [Future](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Future.html): An asynchronous operation that produces a value.
7559
* [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.
7660
* [Promise](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promise.html): Similar to Futures, with more features.
@@ -86,10 +70,6 @@ Collection classes that were originally part of the (deprecated) `thread_safe` g
8670
* [Map](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Map.html) A hash-like object that should have much better performance characteristics, especially under high concurrency, than `Concurrent::Hash`.
8771
* [Tuple](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Tuple.html) A fixed size array with volatile (synchronized, thread safe) getters/setters.
8872

89-
and other collections:
90-
91-
* [LockFreeStack](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/LockFreeStack.html)
92-
9373
Value objects inspired by other languages:
9474

9575
* [Maybe](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Maybe.html) A thread-safe, immutable object representing an optional value, based on
@@ -136,6 +116,11 @@ These features are under active development and may change frequently. They are
136116
keep backward compatibility (there may also lack tests and documentation). Semantic versions will
137117
be obeyed though. Features developed in `concurrent-ruby-edge` are expected to move to `concurrent-ruby` when final.
138118

119+
* [Promises Framework](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promises.html):
120+
Unified implementation of futures and promises which combines features of previous `Future`,
121+
`Promise`, `IVar`, `Event`, `dataflow`, `Delay`, and `TimerTask` into a single framework. It extensively uses the
122+
new synchronization layer to make all the features **non-blocking** and **lock-free**, with the exception of obviously blocking
123+
operations like `#wait`, `#value`. It also offers better performance.
139124
* [Actor](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Actor.html):
140125
Implements the Actor Model, where concurrent actors exchange messages.
141126
* [Channel](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Edge/Channel.html):
@@ -145,6 +130,7 @@ be obeyed though. Features developed in `concurrent-ruby-edge` are expected to m
145130
* [LazyRegister](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/LazyRegister.html)
146131
* [AtomicMarkableReference](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Edge/AtomicMarkableReference.html)
147132
* [LockFreeLinkedSet](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Edge/LockFreeLinkedSet.html)
133+
* [LockFreeStack](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/LockFreeStack.html)
148134

149135
#### Statuses:
150136

0 commit comments

Comments
 (0)