From: "forthoney (Seong-Heon Jung) via ruby-core" Date: 2023-12-22T14:26:49+00:00 Subject: [ruby-core:115859] [Ruby master Bug#20078] StringIO cannot be moved between Ractors Issue #20078 has been updated by forthoney (Seong-Heon Jung). Thank you for the quick response! If my understanding is correct, then there are 4 categories of Ruby objects: 1. Shareable objects (Ractors, immutable objects, etc) 2. Unshareable but sendable with copy and move 3. Unshareable but sendable with only copy (StringIO) 4. Unshareable and unsendable objects (Thread) The documentation makes a fairly clear distinction between shareable and unshareable, but the line between the three different types of unshareable objects is a bit unclear. What are the criteria for the different degrees of "sendability"? ---------------------------------------- Bug #20078: StringIO cannot be moved between Ractors https://bugs.ruby-lang.org/issues/20078#change-105817 * Author: forthoney (Seong-Heon Jung) * Status: Open * Priority: Normal * ruby -v: 3.2 * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN ---------------------------------------- The following code will raise an unusual Ractor error. ``` ruby require 'stringio' r = Ractor.new { loop { Ractor.receive } } Ractor.shareable?(StringIO.new) #=> false r.send(StringIO.new) # passing it via copy works r.send(StringIO.new, move: true) # :587:in `send': can not move StringIO object. (Ractor::Error) ``` I'm not 100% sure but I believe that this probably not the intended behavior considering * The error raised is a generic `Ractor::Error` rather than something specific like Ractor::MovedError or Ractor::IsolationError * It can be copied * [No documentation](https://docs.ruby-lang.org/en/master/ractor_md.html) exists for this error * I have yet to seen this happen on any other class instance * Typo (can not -> cannot) -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/