ractorize 0.0.12 → 0.0.13

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: 3042e08702fb4a92c9d7f0fadf6f037c5ae271652ab0315450f4b659619a7670
4
- data.tar.gz: ddae0a3a1f517f0ea88062e5e1ae01f6c6387b1906d6a7ff52334b95e86a9229
3
+ metadata.gz: 2a50584e35561d9cbd2a8bb56ba1839714564eb44ebe7316d9395820f97b0eac
4
+ data.tar.gz: 821e4e5b1d2f6deed16320193d0066a7a51774fd29e9c7472320434b4143e986
5
5
  SHA512:
6
- metadata.gz: 3b24356eaf34b3cd555b7915004a75b6c2f19da4b91f27dec2bdf6d9d3f694c418f1c6b3ed8b98b316b71afd678c3b73e19999ed00779203b45f5f17a8fd366f
7
- data.tar.gz: 5e7267529748509b06b58394544696eac1a7600cb33d1971d299e842ee4b1c58b96a8b239b467c2e661cb3499e0894888fc1bef302d62c099b269803a021e27b
6
+ metadata.gz: 7d7fed909bba6d096618c20202c3421485e9de912c504546c70b27f4811e087c78eac25287aaeea4a867a95374b264cc69e922654b13afdbaa1f909a5c9b643e
7
+ data.tar.gz: 68c8f491a4b246b2078103ee815ef0f4dc18c9b84b3d428d46df62bc9f4361ff1ea9a82df6ab0d5706a054241756439e831ed745e9c0d0ea8e3767d8e1ffd206
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [0.1.13] - 2026-08-13
2
+
3
+ - Calling methods with blocks no longer pre-emptively resolve thunks, avoiding potential deadlocks
4
+
1
5
  ## [0.0.12] - 2026-08-10
2
6
 
3
7
  - Add ractor state to RactorizedObject#inspect
@@ -24,12 +24,7 @@ module Ractorize
24
24
  @__target_object_id__ = ::Object.instance_method(:object_id).bind_call(outside_object)
25
25
  @__target_class__ = outside_object.class
26
26
 
27
- if ::Ractor.shareable?(outside_object)
28
- @__ractor__ << outside_object
29
- else
30
- ::Ractorize.resolve_all_thunks(outside_object)
31
- @__ractor__.send(outside_object, move: true)
32
- end
27
+ @__ractor__.send(outside_object, move: true)
33
28
  when :class
34
29
  klass, *args = args
35
30
 
@@ -139,14 +134,11 @@ module Ractorize
139
134
  in :yield, [yielded_args, yielded_opts, yielded_block], block_result_port
140
135
  # TODO: yielded_block likely won't work when actually used
141
136
  # so we should probably instead just raise an exception
142
- # TODO: handle break and also raise in the block
143
137
  begin
144
138
  broke = true
145
139
  block_result = block.call(*yielded_args.freeze, **yielded_opts.freeze, &yielded_block)
146
140
  broke = false
147
141
  ensure
148
- block_result = block_result.__value__ while ::Ractorize::Thunk === block_result
149
-
150
142
  block_result_port << if broke
151
143
  # TODO: handle error situation
152
144
  :break
@@ -4,8 +4,8 @@ module Ractorize
4
4
 
5
5
  attr_accessor :__thunk_ractor__, :__object_id__
6
6
 
7
- def initialize(return_value_portlike)
8
- self.__thunk_ractor__ = return_value_portlike
7
+ def initialize(return_value_ractor)
8
+ self.__thunk_ractor__ = return_value_ractor
9
9
  self.__object_id__ = ::Object.instance_method(:object_id).bind_call(self)
10
10
  ::Ractorize::GarbageCollection.track_thunk(self)
11
11
  end
data/src/ractorize.rb CHANGED
@@ -157,8 +157,6 @@ module Ractorize
157
157
 
158
158
  args.each { apply_auto_freeze(target_class, it) }
159
159
 
160
- ::Ractorize.resolve_all_thunks(args)
161
-
162
160
  return nil if skip_move
163
161
 
164
162
  to_move(target_class, args)
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.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi