ractorize 0.0.13 → 0.0.14

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: 2a50584e35561d9cbd2a8bb56ba1839714564eb44ebe7316d9395820f97b0eac
4
- data.tar.gz: 821e4e5b1d2f6deed16320193d0066a7a51774fd29e9c7472320434b4143e986
3
+ metadata.gz: f251a64914d48582cef7e7de71c90217876aa54ee9cd5cf8aa0996c66eab3227
4
+ data.tar.gz: bf79ddf44caef84da4c0875982b4bee2ad32b0f9ee94e84e3cadb89fa98bab08
5
5
  SHA512:
6
- metadata.gz: 7d7fed909bba6d096618c20202c3421485e9de912c504546c70b27f4811e087c78eac25287aaeea4a867a95374b264cc69e922654b13afdbaa1f909a5c9b643e
7
- data.tar.gz: 68c8f491a4b246b2078103ee815ef0f4dc18c9b84b3d428d46df62bc9f4361ff1ea9a82df6ab0d5706a054241756439e831ed745e9c0d0ea8e3767d8e1ffd206
6
+ metadata.gz: b0efea3eeca4d2cc3c0e24c750c421a916d4f8d6540f9927f7d0ccbeef12ca4527aab0ec613f6412cd2ad131f30c19e7c6a5626d80ddbb4df1e3ba6839b7acfd
7
+ data.tar.gz: 807689cc00cc2e2186f2b094d0a1dd6f4f8d436599bfd46d0de08e08193ace7400502dd9e358f39b146e53593e93198cac31614bbc79fb30b131915bd3b31690
data/CHANGELOG.md CHANGED
@@ -1,4 +1,8 @@
1
- ## [0.1.13] - 2026-08-13
1
+ ## [0.0.14] - 2026-08-14
2
+
3
+ - Make sure thunks are dethunked in predicate contexts involving blocks or chains of thunks
4
+
5
+ ## [0.0.13] - 2026-08-13
2
6
 
3
7
  - Calling methods with blocks no longer pre-emptively resolve thunks, avoiding potential deadlocks
4
8
 
@@ -89,7 +89,6 @@ module Ractorize
89
89
  return_port << [:return, value].freeze
90
90
  else
91
91
  value = object.__send__(method_name, *method_args, **opts)
92
- value = value.__value__ while Ractorize::Thunk === value
93
92
 
94
93
  begin
95
94
  if thunk_ractor
@@ -88,7 +88,10 @@ module Ractorize
88
88
  end
89
89
 
90
90
  return_port = ::Ractorize::RactorizedObject::RactorizedRactor::Port.new
91
- thunk_ractor = if !block && RactorizedObject.method_should_use_thunk?(method_name)
91
+
92
+ can_use_thunk = RactorizedObject.method_should_use_thunk?(method_name)
93
+
94
+ thunk_ractor = if !block && can_use_thunk
92
95
  ::Ractorize::Thunk::ThunkRactor.new
93
96
  end
94
97
 
@@ -149,6 +152,11 @@ module Ractorize
149
152
  end
150
153
  end
151
154
 
155
+ unless can_use_thunk
156
+ # It's important we don't accidentally return a thunk (truthy) instead of nil/false (falsey)
157
+ value = value.__value__ while ::Ractorize::Thunk === value
158
+ end
159
+
152
160
  value
153
161
  # Let's assume the user would rather block on all predicate methods than
154
162
  # incorrectly get a non-truthy value (thunk is always truthy even if it evaluates as nil/false)
@@ -159,9 +167,8 @@ module Ractorize
159
167
  value = return_port.receive
160
168
  return_port.close
161
169
 
162
- # simplecov:disable
163
- ::Kernel.raise ::Ractorize::Thunk::EscapingRactorError if ::Ractorize::Thunk === value
164
- # simplecov:enable
170
+ # It's important we don't accidentally return a thunk (truthy) instead of nil/false (falsey)
171
+ value = value.__value__ while ::Ractorize::Thunk === value
165
172
 
166
173
  value
167
174
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ractorize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi