concurrent-ruby-ext 1.3.5 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 96bbc12850067971d8699f3aff12e2fee3a4fa54d7417314d67d74bd8305fe03
4
- data.tar.gz: a9877bcd468f3ad14e5d65b7b1a6aa9220b7ecbb1dddfe10b201c2534f39c1f1
3
+ metadata.gz: ba65ce838cb29319b0e81c8f788147deeadf7e8ce6af3197a969f763a6fac1ab
4
+ data.tar.gz: b60a861fcb5a35731f392471a1397c1f2b78baf27a8bc7f8004e2826e650c3f0
5
5
  SHA512:
6
- metadata.gz: 8952be329416bf6df8fddc4a3f9a6302343a1bbebf9e5e01cb20fcf18faef90675a38182c49d55916f1774eb549cba2b2754452f4c1abb8cffb1be9bf1975911
7
- data.tar.gz: ae2ba5c5711a5f7da16ccb20da475970797f90e77a5f36c734ef8fcfaf875291854368a7ff92d574831c5eb1d34e598c882affd1f01d9a90cb9ba89173f8f9a9
6
+ metadata.gz: 3f6899c9f9098e6c90933bffa37465ee04bdae25e08844641e2c871ca10787eba5a074f013989bef1e87aba989c26c0e06350074ae56f47b71c4d6c41bc2968e
7
+ data.tar.gz: 27d322cab1cfedeb4025292f6f78e57d9989efd3c0f1ad1793ae0642d269fd6ca5d77b176536c5bbb1538d416d0af2c6cddcacc10c294e6c86f07790a1df50cc
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## Current
2
2
 
3
+ ## Release v1.3.6 (13 December 2025)
4
+
5
+ concurrent-ruby:
6
+
7
+ * See the [release notes on GitHub](https://github.com/ruby-concurrency/concurrent-ruby/releases/tag/v1.3.6).
8
+
3
9
  ## Release v1.3.5, edge v0.7.2 (15 January 2025)
4
10
 
5
11
  concurrent-ruby:
data/README.md CHANGED
@@ -207,7 +207,7 @@ Deprecated features are still available and bugs are being fixed, but new featur
207
207
  These are available in the `concurrent-ruby-edge` companion gem.
208
208
 
209
209
  These features are under active development and may change frequently. They are expected not to
210
- keep backward compatibility (there may also lack tests and documentation). Semantic versions will
210
+ keep backward compatibility (they may also lack tests and documentation). Semantic versions will
211
211
  be obeyed though. Features developed in `concurrent-ruby-edge` are expected to move to
212
212
  `concurrent-ruby` when final.
213
213
 
@@ -358,7 +358,8 @@ best practice is to depend on `concurrent-ruby` and let users to decide if they
358
358
  * Recent CRuby
359
359
  * JRuby, `rbenv install jruby-9.2.17.0`
360
360
  * Set env variable `CONCURRENT_JRUBY_HOME` to point to it, e.g. `/usr/local/opt/rbenv/versions/jruby-9.2.17.0`
361
- * Install Docker, required for Windows builds
361
+ * Install Docker or Podman, required for Windows builds
362
+ * If `bundle config get path` is set, use `bundle config set --local path.system true` otherwise the `gem name, path: '.'` gems won't be found (Bundler limitation).
362
363
 
363
364
  ### Publishing the Gem
364
365
 
@@ -378,6 +379,7 @@ best practice is to depend on `concurrent-ruby` and let users to decide if they
378
379
  * [Charles Oliver Nutter](https://github.com/headius)
379
380
  * [Ben Sheldon](https://github.com/bensheldon)
380
381
  * [Samuel Williams](https://github.com/ioquatix)
382
+ * [Joshua Young](https://github.com/joshuay03)
381
383
 
382
384
  ### Special Thanks to
383
385
 
@@ -7,8 +7,16 @@ void atomic_boolean_mark(void *value) {
7
7
  rb_gc_mark_maybe((VALUE) value);
8
8
  }
9
9
 
10
+ const rb_data_type_t atomic_boolean_type = {
11
+ "Concurrent::CAtomicBoolean",
12
+ {
13
+ atomic_boolean_mark,
14
+ RUBY_NEVER_FREE,
15
+ },
16
+ };
17
+
10
18
  VALUE atomic_boolean_allocate(VALUE klass) {
11
- return rb_data_object_wrap(klass, (void *) Qfalse, atomic_boolean_mark, NULL);
19
+ return rb_data_typed_object_wrap(klass, (void *) Qfalse, &atomic_boolean_type);
12
20
  }
13
21
 
14
22
  VALUE method_atomic_boolean_initialize(int argc, VALUE* argv, VALUE self) {
@@ -7,8 +7,16 @@ void atomic_fixnum_mark(void *value) {
7
7
  rb_gc_mark_maybe((VALUE) value);
8
8
  }
9
9
 
10
+ const rb_data_type_t atomic_fixnum_type = {
11
+ "Concurrent::CAtomicFixnum",
12
+ {
13
+ atomic_fixnum_mark,
14
+ RUBY_NEVER_FREE,
15
+ },
16
+ };
17
+
10
18
  VALUE atomic_fixnum_allocate(VALUE klass) {
11
- return rb_data_object_wrap(klass, (void *) Qnil, atomic_fixnum_mark, NULL);
19
+ return rb_data_typed_object_wrap(klass, (void *) Qnil, &atomic_fixnum_type);
12
20
  }
13
21
 
14
22
  VALUE method_atomic_fixnum_initialize(int argc, VALUE* argv, VALUE self) {
@@ -43,8 +43,16 @@ void ir_mark(void *value) {
43
43
  rb_gc_mark_maybe((VALUE) value);
44
44
  }
45
45
 
46
+ const rb_data_type_t ir_type = {
47
+ "Concurrent::CAtomicReference",
48
+ {
49
+ ir_mark,
50
+ RUBY_NEVER_FREE,
51
+ },
52
+ };
53
+
46
54
  VALUE ir_alloc(VALUE klass) {
47
- return rb_data_object_wrap(klass, (void *) Qnil, ir_mark, NULL);
55
+ return rb_data_typed_object_wrap(klass, (void *) Qnil, &ir_type);
48
56
  }
49
57
 
50
58
  VALUE ir_initialize(int argc, VALUE* argv, VALUE self) {
@@ -78,7 +86,11 @@ VALUE ir_get_and_set(VALUE self, VALUE new_value) {
78
86
  }
79
87
 
80
88
  VALUE ir_compare_and_set(volatile VALUE self, VALUE expect_value, VALUE new_value) {
81
- #if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
89
+ #if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101200
90
+ if (atomic_compare_exchange_strong_explicit((_Atomic uintptr_t *)&DATA_PTR(self), &expect_value, new_value, memory_order_seq_cst, memory_order_seq_cst)) {
91
+ return Qtrue;
92
+ }
93
+ #elif defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
82
94
  if (OSAtomicCompareAndSwap64(expect_value, new_value, &DATA_PTR(self))) {
83
95
  return Qtrue;
84
96
  }
@@ -5,6 +5,9 @@
5
5
  #include <atomic.h>
6
6
  #endif
7
7
 
8
+ #if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101200
9
+ #include <stdatomic.h>
10
+ #endif
8
11
  #ifdef HAVE_LIBKERN_OSATOMIC_H
9
12
  #include <libkern/OSAtomic.h>
10
13
  #endif
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.3.5
4
+ version: 1.3.6
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: 2025-01-15 00:00:00.000000000 Z
12
+ date: 2025-12-13 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.3.5
20
+ version: 1.3.6
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.3.5
27
+ version: 1.3.6
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.
@@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  requirements: []
70
- rubygems_version: 3.3.26
70
+ rubygems_version: 3.3.27
71
71
  signing_key:
72
72
  specification_version: 4
73
73
  summary: C extensions to optimize concurrent-ruby under MRI.