concurrent-ruby 1.3.7 → 1.3.8

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: 0d094624e5f9f2dffc45b80892987f339d8b8c09ff2f01cf923e3825dd6409f7
4
- data.tar.gz: 02adb496e81a3adb7e3c6042f72ec421677851033d57eb77b0e1b3641ef70684
3
+ metadata.gz: fc9a00957279663f7ffba5a76366149711a267206a813160a278717d376a480a
4
+ data.tar.gz: f64af44fd395b43592f225d3695f4245e0db293bd1a4d1ffa5265b0bccb86b53
5
5
  SHA512:
6
- metadata.gz: 43a4af037c64d4ee8e128963db7a3f40213a45898289bb9143aa222e5664982b8c0fa08d2dae8e629fa7766be6a528b74b5ba17fbbb5cb741a9b5c08020eea15
7
- data.tar.gz: 0203e085d78340af99c8d8cbf2f0aa8793db6bfdbe4c25cd2ff622816581004c2871851c621d23bcfd653be30fd3aca682e98a3117b64e5735d23bb2a3bfb4c0
6
+ metadata.gz: 2b81fa0a0c9a7f71689ec81c2b1336c4e1bacf2e7410a5788ef2c621499bb694b7750b3c179304859ff2fb771b80d618f384cd594481bd28b6008b3d68cac487
7
+ data.tar.gz: 54599518ae1867102286c158051bcc803420acf6c6345683e9c57ac7eccd60145f8c37dee3a38f66aa35b8bd9c359ff940fcfd9ba420b53aaa2b1bf60090b4af
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## Current
2
2
 
3
+ ## Release v1.3.8 (19 July 2026)
4
+
5
+ concurrent-ruby:
6
+
7
+ * See the [release notes on GitHub](https://github.com/ruby-concurrency/concurrent-ruby/releases/tag/v1.3.8).
8
+
3
9
  ## Release v1.3.7 (16 June 2026)
4
10
 
5
11
  concurrent-ruby:
@@ -3,6 +3,6 @@ module Concurrent
3
3
  # Various classes within allows for +nil+ values to be stored,
4
4
  # so a special +NULL+ token is required to indicate the "nil-ness".
5
5
  # @!visibility private
6
- NULL = ::Object.new
6
+ NULL = ::Object.new.freeze
7
7
 
8
8
  end
@@ -915,6 +915,7 @@ module Concurrent
915
915
  # Represents a value which will become available in future. May reject with a reason instead,
916
916
  # e.g. when the tasks raises an exception.
917
917
  class Future < AbstractEventFuture
918
+ SET_BACKTRACE_LOCATIONS_SUPPORTED = RUBY_VERSION >= '3.4'
918
919
 
919
920
  # Is it in fulfilled state?
920
921
  # @return [Boolean]
@@ -1014,9 +1015,10 @@ module Concurrent
1014
1015
  raise Concurrent::Error, 'it is not rejected' unless rejected?
1015
1016
  raise ArgumentError unless args.size <= 1
1016
1017
  reason = Array(internal_state.reason).flatten.compact
1018
+ callsites = SET_BACKTRACE_LOCATIONS_SUPPORTED ? caller_locations : caller
1017
1019
  if reason.size > 1
1018
1020
  ex = Concurrent::MultipleErrors.new reason
1019
- ex.set_backtrace(caller)
1021
+ ex.set_backtrace(callsites)
1020
1022
  ex
1021
1023
  else
1022
1024
  ex = if reason[0].respond_to? :exception
@@ -1024,7 +1026,11 @@ module Concurrent
1024
1026
  else
1025
1027
  RuntimeError.new(reason[0]).exception(*args)
1026
1028
  end
1027
- ex.set_backtrace Array(ex.backtrace) + caller
1029
+ if SET_BACKTRACE_LOCATIONS_SUPPORTED && (locations = ex.backtrace_locations)
1030
+ ex.set_backtrace locations + callsites
1031
+ else
1032
+ ex.set_backtrace Array(ex.backtrace) + callsites.map(&:to_s)
1033
+ end
1028
1034
  ex
1029
1035
  end
1030
1036
  end
@@ -1,3 +1,3 @@
1
1
  module Concurrent
2
- VERSION = '1.3.7'
2
+ VERSION = '1.3.8'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concurrent-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.7
4
+ version: 1.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jerry D'Antonio
@@ -9,7 +9,7 @@ authors:
9
9
  - The Ruby Concurrency Team
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2026-06-16 00:00:00.000000000 Z
12
+ date: 2026-07-19 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: |
15
15
  Modern concurrency tools including agents, futures, promises, thread pools, actors, supervisors, and more.