From: ko1@... Date: 2020-12-01T18:44:21+00:00 Subject: [ruby-core:101191] [Ruby master Bug#17359] Ractor copy mode is not Ractor-safe Issue #17359 has been updated by ko1 (Koichi Sasada). > Nobody commented on my idea: make the deep copy as currently (in the current Ractor), then move it to the new Ractor (like send(new_copy, move: true)) same as https://bugs.ruby-lang.org/issues/17359#note-7 ? ---------------------------------------- Bug #17359: Ractor copy mode is not Ractor-safe https://bugs.ruby-lang.org/issues/17359#change-88872 * Author: marcandre (Marc-Andre Lafortune) * Status: Open * Priority: Normal * Assignee: ko1 (Koichi Sasada) * ruby -v: ruby 3.0.0dev (2020-11-30T10:06:25Z master 89774a938a) [x86_64-darwin18] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- It should not be possible to mutate an object across Ractors, but the copy mode allows it currently: ```ruby class Foo attr_accessor :x def initialize_copy(*) $last = self super end end o = Foo.new o.x = 42 r = Ractor.new(o) do |copy| puts copy.x # => 42 Ractor.yield :sync Ractor.yield :sync puts copy.x # => 666 end r.take # => :sync $last.x = 666 r.take # => :sync r.take ``` Maybe the `copy` object should be marked as moved? -- https://bugs.ruby-lang.org/ Unsubscribe: