Feature #18894
openObject#make_shareable
Description
I'm proposing a callback method for when one calls Ractor.make_shareable(obj), the same way Marshal.dump(obj) calls obj.marshal_dump.
A lot of use cases in the wild involve a quick initialization of an object, only for some more heavy initializattion to be lazily called the first time an operation is called. An example in stdlib is Resolv::Hosts, which calls lazy_initialize on certains calls to resolve a name. Given that Resolv has a default resolver, this is unusable in ractors, due this "lazy" thing. Having a callback would allow to eager-load such an object, thereby making the default resolver usable with ractors.
Updated by AMomchilov (Alexander Momchilov) over 2 years ago
#make_shareable sounds like it's an alias for Ractor.make_shareable. Callbacks tend to be past tense, how about #made_shareable?