You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+90-40Lines changed: 90 additions & 40 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,10 +37,8 @@
37
37
38
38
### Supported Ruby versions
39
39
40
-
MRI 1.9.3, 2.0, 2.1, JRuby (1.9 mode), and Rubinius 2.x are supported.
41
-
Although native code is used for performance optimizations on some platforms, all functionality
42
-
is available in pure Ruby. This gem should be fully compatible with any interpreter that is
43
-
compliant with Ruby 1.9.3 or newer.
40
+
MRI 1.9.3, 2.0, 2.1, 2.2, JRuby (1.9 mode), and Rubinius 2.x are supported.
41
+
This gem should be fully compatible with any interpreter that is compliant with Ruby 1.9.3 or newer.
44
42
45
43
## Features & Documentation
46
44
@@ -62,6 +60,7 @@ This library contains a variety of concurrency abstractions at high and low leve
62
60
*[Promise](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promise.html): Similar to Futures, with more features.
63
61
*[ScheduledTask](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/ScheduledTask.html): Like a Future scheduled for a specific future time.
64
62
*[TimerTask](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/TimerTask.html): A Thread that periodically wakes up to perform work at regular intervals.
Because we provide pre-compiled gem builds, users should never need to build the gem manually.
139
-
The build process for this gem is completely automated using open source tools. All of
140
-
the automation components are available in the [ruby-concurrency/rake-compiler-dev-box](https://github.com/ruby-concurrency/rake-compiler-dev-box)
141
-
GitHub repository.
154
+
Potential performance improvements may be achieved under MRI by installing optional C extensions.
155
+
To minimize installation errors the C extensions are available in the `concurrent-ruby-ext` extension
156
+
gem. The extension gem lists `concurrent-ruby` as a dependency so it is not necessary to install both.
157
+
Simply install the extension gen:
142
158
143
-
This gem will compile native C code under MRI and native Java code under JRuby. It is
144
-
also possible to build a pure-Ruby version. All builds have identical functionality.
145
-
The only difference is performance. Additionally, pure-Ruby classes are always available,
146
-
even when using the native optimizations. Please see the [documentation](http://ruby-concurrency.github.io/concurrent-ruby/)
147
-
for more details.
159
+
```ruby
160
+
gem install concurrent-ruby-ext
161
+
```
148
162
149
-
To build and package the gem using MRI or JRuby, install the necessary build dependencies and run:
163
+
or add the following line to Gemfile:
150
164
151
-
```shell
152
-
bundle exec rake compile
153
-
bundle exec rake build
165
+
```ruby
166
+
gem 'concurrent-ruby-ext'
167
+
```
168
+
169
+
and run `bundle install` from your shell.
170
+
171
+
In code it is only necessary to
172
+
173
+
```ruby
174
+
require'concurrent'
154
175
```
155
176
156
-
To build and package a pure-Ruby gem, on *any* platform and interpreter
157
-
(including MRI and JRuby), run:
177
+
The `concurrent-ruby` gem will automatically detect the presence of the `concurrent-ruby-ext` gem
178
+
and load the appropriate C extensions.
158
179
159
-
```shell
160
-
BUILD_PURE_RUBY='true' bundle exec rake build
180
+
#### Note For gem developers
181
+
182
+
No gems should depend on `concurrent-ruby-ext`. Doing so will force C extensions on your users.
183
+
The best practice is to depend on `concurrent-ruby` and let users to decide if they want C extensions.
184
+
185
+
### Building
186
+
187
+
All published versions of this gem (core, extension, and several platform-specific packages) are compiled,
188
+
packaged, tested, and published using an open, [automated process](https://github.com/ruby-concurrency/rake-compiler-dev-box).
189
+
This process can also be used to create pre-compiled binaries of the extension gem for virtally
190
+
any platform. *Documentation is forthcoming...*
191
+
192
+
```
193
+
*MRI only*
194
+
rake build:native # Build concurrent-ruby-ext-<version>-<platform>.gem into the pkg directory
195
+
rake compile:extension # Compile extension
196
+
197
+
*JRuby only*
198
+
rake build # Build JRuby-specific core gem (alias for `build:core`)
199
+
rake build:core # Build concurrent-ruby-<version>-java.gem into the pkg directory
200
+
201
+
*All except JRuby*
202
+
rake build # Build core and extension gems
203
+
rake build:core # Build concurrent-ruby-<version>.gem into the pkg directory
204
+
rake build:ext # Build concurrent-ruby-ext-<version>.gem into the pkg directory
0 commit comments