concurrent-ruby-ext 1.1.9 → 1.2.0

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: ae9d59fa8d2b02ebf853cf39070c6fadbd1a7acd63c69ea4e8a0c60ba4e9f5c1
4
- data.tar.gz: 6b6fa9d57fdca9d4c24602ce0d3ea15c6e25cb8230939953f3c0649376d91647
3
+ metadata.gz: 95608e3775b254331092b8063e0179250bb984dc1aa37b479587e9bf059cfe55
4
+ data.tar.gz: f552001cd3ab972ae8599596ac281c5ff9fbf0c7c12ce175e12edbdcb8000301
5
5
  SHA512:
6
- metadata.gz: c5472ddd6b9fbcc2f69ce83b3de1ebd78901bbbb7c957cbb1d7a73053ac32cc05a54a7564bfccf437259e643c6075c31b07a2c089f14d34c72e1b9284d89df42
7
- data.tar.gz: 3e71350023358bbd5c9e275edbef5585d8a1e8d58b69d1b0c6fb9bd09aec93aa5954d161e5e69295a5b6ada67e4be5988e8b621b37472fd58480c0fa25757c2b
6
+ metadata.gz: 571fa415dc2421f27d844e816f0f2f704c96c76e9a1fd89e4102acfd530b7bea02f594ffb78faab107ca8eb81dbafd8ddf6736ce2564f9182a64bba77ff342e2
7
+ data.tar.gz: 620b83979408db1743ff783a3882c9e2e48a886ae9e341dc282827ca1cd0ba2bcfafc94a92df0a4cac872a0edeffc8355eb20da3f457758c2fa6e8097860f838
data/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  ## Current
2
2
 
3
+ ## Release v1.2.0 (23 Jan 2023)
4
+
5
+ * (#962) Fix ReentrantReadWriteLock to use the same granularity for locals as for Mutex it uses.
6
+ * (#983) Add FiberLocalVar
7
+ * (#934) concurrent-ruby now supports requiring individual classes (public classes listed in the docs), e.g., `require 'concurrent/map'`
8
+ * (#976) Let `Promises.any_fulfilled_future` take an `Event`
9
+ * Improve documentation of various classes
10
+ * (#975) Set the Ruby compatibility version at 2.3
11
+ * (#972) Remove Rubinius-related code
12
+
13
+ ## Release v1.1.10 (22 Mar 2022)
14
+
15
+ concurrent-ruby:
16
+
17
+ * (#951) Set the Ruby compatibility version at 2.2
18
+ * (#939, #933) The `caller_runs` fallback policy no longer blocks reads from the job queue by worker threads
19
+ * (#938, #761, #652) You can now explicitly `prune_pool` a thread pool (Sylvain Joyeux)
20
+ * (#937, #757, #670) We switched the Yahoo stock API for demos to Alpha Vantage (Gustavo Caso)
21
+ * (#932, #931) We changed how `SafeTaskExecutor` handles local jump errors (Aaron Jensen)
22
+ * (#927) You can use keyword arguments in your initialize when using `Async` (Matt Larraz)
23
+ * (#926, #639) We removed timeout from `TimerTask` because it wasn't sound, and now it's a no-op with a warning (Jacob Atzen)
24
+ * (#919) If you double-lock a re-entrant read-write lock, we promote to locked for writing (zp yuan)
25
+ * (#915) `monotonic_time` now accepts an optional unit parameter, as Ruby's `clock_gettime` (Jean Boussier)
26
+
3
27
  ## Release v1.1.9 (5 Jun 2021)
4
28
 
5
29
  concurrent-ruby:
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # Concurrent Ruby
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/concurrent-ruby.svg)](http://badge.fury.io/rb/concurrent-ruby)
4
- [![Build Status](https://travis-ci.org/ruby-concurrency/concurrent-ruby.svg?branch=master)](https://travis-ci.org/ruby-concurrency/concurrent-ruby)
5
- [![Build status](https://ci.appveyor.com/api/projects/status/iq8aboyuu3etad4w?svg=true)](https://ci.appveyor.com/project/rubyconcurrency/concurrent-ruby)
6
4
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](http://opensource.org/licenses/MIT)
7
5
  [![Gitter chat](https://img.shields.io/badge/IRC%20(gitter)-devs%20%26%20users-brightgreen.svg)](https://gitter.im/ruby-concurrency/concurrent-ruby)
8
6
 
@@ -39,11 +37,13 @@ The design goals of this gem are:
39
37
  appreciate your help. Would you like to contribute? Great! Have a look at
40
38
  [issues with `looking-for-contributor` label](https://github.com/ruby-concurrency/concurrent-ruby/issues?q=is%3Aissue+is%3Aopen+label%3Alooking-for-contributor).** And if you pick something up let us know on the issue.
41
39
 
40
+ You can also get started by triaging issues which may include reproducing bug reports or asking for vital information, such as version numbers or reproduction instructions. If you would like to start triaging issues, one easy way to get started is to [subscribe to concurrent-ruby on CodeTriage](https://www.codetriage.com/ruby-concurrency/concurrent-ruby). [![Open Source Helpers](https://www.codetriage.com/ruby-concurrency/concurrent-ruby/badges/users.svg)](https://www.codetriage.com/ruby-concurrency/concurrent-ruby)
41
+
42
42
  ## Thread Safety
43
43
 
44
44
  *Concurrent Ruby makes one of the strongest thread safety guarantees of any Ruby concurrency
45
- library, providing consistent behavior and guarantees on all four of the main Ruby interpreters
46
- (MRI/CRuby, JRuby, Rubinius, TruffleRuby).*
45
+ library, providing consistent behavior and guarantees on all three main Ruby interpreters
46
+ (MRI/CRuby, JRuby, TruffleRuby).*
47
47
 
48
48
  Every abstraction in this library is thread safe. Specific thread safety guarantees are documented
49
49
  with each abstraction.
@@ -58,9 +58,9 @@ other Ruby library, many of which support the mantra of
58
58
  Concurrent Ruby is also the only Ruby library which provides a full suite of thread safe and
59
59
  immutable variable types and data structures.
60
60
 
61
- We've also initiated discussion to document [memory model](docs-source/synchronization.md) of Ruby which
62
- would provide consistent behaviour and guarantees on all four of the main Ruby interpreters
63
- (MRI/CRuby, JRuby, Rubinius, TruffleRuby).
61
+ We've also initiated discussion to document the [memory model](docs-source/synchronization.md) of Ruby which
62
+ would provide consistent behaviour and guarantees on all three main Ruby interpreters
63
+ (MRI/CRuby, JRuby, TruffleRuby).
64
64
 
65
65
  ## Features & Documentation
66
66
 
@@ -259,16 +259,9 @@ be obeyed though. Features developed in `concurrent-ruby-edge` are expected to m
259
259
 
260
260
  ## Supported Ruby versions
261
261
 
262
- * MRI 2.0 and above
263
- * JRuby 9000
264
- * TruffleRuby are supported.
265
- * Any Ruby interpreter that is compliant with Ruby 2.0 or newer.
266
-
267
- Actually we still support mri 1.9.3 and jruby 1.7.27 but we are looking at ways how to drop the support.
268
- Java 8 is preferred for JRuby but every Java version on which JRuby 9000 runs is supported.
269
-
270
- The legacy support for Rubinius is kept but it is no longer maintained, if you would like to help
271
- please respond to [#739](https://github.com/ruby-concurrency/concurrent-ruby/issues/739).
262
+ * MRI 2.3 and above
263
+ * Latest JRuby 9000
264
+ * Latest TruffleRuby
272
265
 
273
266
  ## Usage
274
267
 
@@ -278,7 +271,12 @@ Everything within this gem can be loaded simply by requiring it:
278
271
  require 'concurrent'
279
272
  ```
280
273
 
281
- *Requiring only specific abstractions from Concurrent Ruby is not yet supported.*
274
+ You can also require a specific abstraction [part of the public documentation](https://ruby-concurrency.github.io/concurrent-ruby/master/index.html) since concurrent-ruby 1.2.0, for example:
275
+ ```ruby
276
+ require 'concurrent/map'
277
+ require 'concurrent/atomic/atomic_reference'
278
+ require 'concurrent/executor/fixed_thread_pool'
279
+ ```
282
280
 
283
281
  To use the tools in the Edge gem it must be required separately:
284
282
 
@@ -364,36 +362,35 @@ best practice is to depend on `concurrent-ruby` and let users to decide if they
364
362
 
365
363
  ### Publishing the Gem
366
364
 
367
- * Update`version.rb`
365
+ * Update `version.rb`
368
366
  * Update the CHANGELOG
369
- * Update the Yard documentation
370
- - Add the new version to `docs-source/signpost.md`. Needs to be done only if there are visible changes in the
371
- documentation.
372
- - Run `bundle exec rake yard` to update the master documentation and signpost.
373
- - Run `bundle exec rake yard:<new-version>` to add or update the documentation of the new version.
367
+ * Add the new version to `docs-source/signpost.md`. Needs to be done only if there are visible changes in the documentation.
374
368
  * Commit (and push) the changes.
375
- * Use `be rake release` to release the gem. It consists
376
- of `['release:checks', 'release:build', 'release:test', 'release:publish']` steps. It will ask at the end before
377
- publishing anything. Steps can also be executed individually.
369
+ * Use `bundle exec rake release` to release the gem.
370
+ It consists of `['release:checks', 'release:build', 'release:test', 'release:publish']` steps.
371
+ It will ask at the end before publishing anything. Steps can also be executed individually.
378
372
 
379
373
  ## Maintainers
380
374
 
381
- * [Petr Chalupa](https://github.com/pitr-ch) — Lead maintainer, point-of-contact.
382
- * [Chris Seaton](https://github.com/chrisseaton)
383
- If Petr is not available Chris can help or poke Petr to pay attention where it is needed.
375
+ * [Benoit Daloze](https://github.com/eregon)
376
+ * [Matthew Draper](https://github.com/matthewd)
377
+ * [Rafael França](https://github.com/rafaelfranca)
378
+ * [Samuel Williams](https://github.com/ioquatix)
384
379
 
385
380
  ### Special Thanks to
386
381
 
387
- * [Jerry D'Antonio](https://github.com/jdantonio) for creating the gem
388
- * [Brian Durand](https://github.com/bdurand) for the `ref` gem
389
- * [Charles Oliver Nutter](https://github.com/headius) for the `atomic` and `thread_safe` gems
390
- * [thedarkone](https://github.com/thedarkone) for the `thread_safe` gem
382
+ * [Jerry D'Antonio](https://github.com/jdantonio) for creating the gem
383
+ * [Brian Durand](https://github.com/bdurand) for the `ref` gem
384
+ * [Charles Oliver Nutter](https://github.com/headius) for the `atomic` and `thread_safe` gems
385
+ * [thedarkone](https://github.com/thedarkone) for the `thread_safe` gem
391
386
 
392
387
  to the past maintainers
393
388
 
394
- * [Michele Della Torre](https://github.com/mighe)
395
- * [Paweł Obrok](https://github.com/obrok)
396
- * [Lucas Allan](https://github.com/lucasallan)
389
+ * [Chris Seaton](https://github.com/chrisseaton)
390
+ * [Petr Chalupa](https://github.com/pitr-ch)
391
+ * [Michele Della Torre](https://github.com/mighe)
392
+ * [Paweł Obrok](https://github.com/obrok)
393
+ * [Lucas Allan](https://github.com/lucasallan)
397
394
 
398
395
  and to [Ruby Association](https://www.ruby.or.jp/en/) for sponsoring a project
399
396
  ["Enhancing Ruby’s concurrency tooling"](https://www.ruby.or.jp/en/news/20181106) in 2018.
@@ -2,14 +2,13 @@
2
2
 
3
3
  #include "atomic_boolean.h"
4
4
  #include "atomic_reference.h"
5
- #include "ruby_193_compatible.h"
6
5
 
7
6
  void atomic_boolean_mark(void *value) {
8
7
  rb_gc_mark_maybe((VALUE) value);
9
8
  }
10
9
 
11
10
  VALUE atomic_boolean_allocate(VALUE klass) {
12
- return rb_data_object_alloc(klass, (void *) Qfalse, atomic_boolean_mark, NULL);
11
+ return rb_data_object_wrap(klass, (void *) Qfalse, atomic_boolean_mark, NULL);
13
12
  }
14
13
 
15
14
  VALUE method_atomic_boolean_initialize(int argc, VALUE* argv, VALUE self) {
@@ -2,14 +2,13 @@
2
2
 
3
3
  #include "atomic_fixnum.h"
4
4
  #include "atomic_reference.h"
5
- #include "ruby_193_compatible.h"
6
5
 
7
6
  void atomic_fixnum_mark(void *value) {
8
7
  rb_gc_mark_maybe((VALUE) value);
9
8
  }
10
9
 
11
10
  VALUE atomic_fixnum_allocate(VALUE klass) {
12
- return rb_data_object_alloc(klass, (void *) Qnil, atomic_fixnum_mark, NULL);
11
+ return rb_data_object_wrap(klass, (void *) Qnil, atomic_fixnum_mark, NULL);
13
12
  }
14
13
 
15
14
  VALUE method_atomic_fixnum_initialize(int argc, VALUE* argv, VALUE self) {
@@ -44,7 +44,7 @@ void ir_mark(void *value) {
44
44
  }
45
45
 
46
46
  VALUE ir_alloc(VALUE klass) {
47
- return rb_data_object_alloc(klass, (void *) Qnil, ir_mark, NULL);
47
+ return rb_data_object_wrap(klass, (void *) Qnil, ir_mark, NULL);
48
48
  }
49
49
 
50
50
  VALUE ir_initialize(int argc, VALUE* argv, VALUE self) {
@@ -78,7 +78,7 @@ VALUE ir_get_and_set(VALUE self, VALUE new_value) {
78
78
  }
79
79
 
80
80
  VALUE ir_compare_and_set(volatile VALUE self, VALUE expect_value, VALUE new_value) {
81
- #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
81
+ #if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
82
82
  if (OSAtomicCompareAndSwap64(expect_value, new_value, &DATA_PTR(self))) {
83
83
  return Qtrue;
84
84
  }
@@ -1,8 +1,13 @@
1
1
  require 'fileutils'
2
+ require 'mkmf'
3
+
4
+ unless RUBY_ENGINE == "ruby"
5
+ File.write("Makefile", dummy_makefile($srcdir).join(""))
6
+ exit
7
+ end
2
8
 
3
9
  extension_name = 'concurrent_ruby_ext'
4
10
 
5
- require 'mkmf'
6
11
  dir_config(extension_name)
7
12
  have_header "libkern/OSAtomic.h"
8
13
 
@@ -13,7 +13,7 @@ static VALUE rb_cAtomicFixnum;
13
13
 
14
14
  // Init_extension
15
15
 
16
- void Init_concurrent_ruby_ext() {
16
+ void Init_concurrent_ruby_ext(void) {
17
17
 
18
18
  // define modules and classes
19
19
  rb_mConcurrent = rb_define_module("Concurrent");
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.1.9
4
+ version: 1.2.0
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: 2021-06-05 00:00:00.000000000 Z
12
+ date: 2023-01-23 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.1.9
20
+ version: 1.2.0
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.1.9
27
+ version: 1.2.0
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.
@@ -48,7 +48,6 @@ files:
48
48
  - ext/concurrent-ruby-ext/atomic_reference.h
49
49
  - ext/concurrent-ruby-ext/extconf.rb
50
50
  - ext/concurrent-ruby-ext/rb_concurrent.c
51
- - ext/concurrent-ruby-ext/ruby_193_compatible.h
52
51
  homepage: http://www.concurrent-ruby.com
53
52
  licenses:
54
53
  - MIT
@@ -61,14 +60,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
61
60
  requirements:
62
61
  - - ">="
63
62
  - !ruby/object:Gem::Version
64
- version: 1.9.3
63
+ version: '2.3'
65
64
  required_rubygems_version: !ruby/object:Gem::Requirement
66
65
  requirements:
67
66
  - - ">="
68
67
  - !ruby/object:Gem::Version
69
68
  version: '0'
70
69
  requirements: []
71
- rubygems_version: 3.2.3
70
+ rubygems_version: 3.3.26
72
71
  signing_key:
73
72
  specification_version: 4
74
73
  summary: C extensions to optimize concurrent-ruby under MRI.
@@ -1,28 +0,0 @@
1
- #ifndef rb_check_arity
2
-
3
- // https://github.com/ruby/ruby/blob/ruby_2_0_0/include/ruby/intern.h
4
- // rb_check_arity was added in Ruby 2.0
5
-
6
- #define UNLIMITED_ARGUMENTS (-1)
7
-
8
- static inline VALUE rb_error_arity(int argc, int min, int max)
9
- {
10
- VALUE err_mess = 0;
11
- if (min == max) {
12
- err_mess = rb_sprintf("wrong number of arguments (%d for %d)", argc, min);
13
- }
14
- else if (max == UNLIMITED_ARGUMENTS) {
15
- err_mess = rb_sprintf("wrong number of arguments (%d for %d+)", argc, min);
16
- }
17
- else {
18
- err_mess = rb_sprintf("wrong number of arguments (%d for %d..%d)", argc, min, max);
19
- }
20
- return rb_exc_new3(rb_eTypeError, err_mess);
21
- }
22
-
23
- #define rb_check_arity(argc, min, max) do { \
24
- if (((argc) < (min)) || ((argc) > (max) && (max) != UNLIMITED_ARGUMENTS)) \
25
- rb_exc_raise(rb_error_arity(argc, min, max)); \
26
- } while(0)
27
-
28
- #endif