Project

General

Profile

Actions

Feature #17513

open

Methods of shareable objects and UnboundMethods should be shareable

Added by marcandre (Marc-Andre Lafortune) about 3 years ago. Updated 7 months ago.

Status:
Open
Target version:
-
[ruby-core:101945]

Description

class Foo
  def foo
  end
end

f = Foo.new.freeze
Ractor.shareable?(f) # => true
Ractor.make_shareable(f.method(:foo).to_proc) # => Proc, ok
Ractor.make_shareable(f.method(:foo)) # => Ractor::Error, expected Method
Ractor.make_shareable(Foo.instance_method(:foo)) # => Ractor::Error, expected UnboundMethod

Updated by Eregon (Benoit Daloze) about 3 years ago

Methods can be defined via define_method { capture_state } and so rely on mutable state, so I guess this is only OK for def methods.

Updated by marcandre (Marc-Andre Lafortune) about 3 years ago

Agreed, some methods can not be made shareable 👍.

Actions #3

Updated by jeremyevans0 (Jeremy Evans) 7 months ago

  • Tracker changed from Bug to Feature
  • ruby -v deleted (3.0.0p0)
  • Backport deleted (2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN)
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0