NoraHoward[m] has quit [Ping timeout: 246 seconds]
NoraHoward[m] has joined #jruby
drbobbeaty has quit [Ping timeout: 252 seconds]
UweKuboschGitter has quit [Ping timeout: 246 seconds]
UweKuboschGitter has joined #jruby
Bi[m] has quit [Ping timeout: 246 seconds]
ahorek[m] has quit [Ping timeout: 250 seconds]
Bi[m] has joined #jruby
ahorek[m] has joined #jruby
Bi[m] has quit [Ping timeout: 268 seconds]
Bi[m] has joined #jruby
JesseChavezGitte has quit [Ping timeout: 264 seconds]
JesseChavezGitte has joined #jruby
RomainManni-Buca has quit [Ping timeout: 264 seconds]
RomainManni-Buca has joined #jruby
rebelwarrior[m] has quit [Ping timeout: 268 seconds]
shibz[m]1 has quit [Ping timeout: 246 seconds]
rebelwarrior[m] has joined #jruby
shibz[m]1 has joined #jruby
rebelwarrior[m] has quit [Ping timeout: 250 seconds]
rebelwarrior[m] has joined #jruby
KarolBucekGitter has quit [Ping timeout: 268 seconds]
KarolBucekGitter has joined #jruby
CharlesOliverNut has quit [Ping timeout: 264 seconds]
CharlesOliverNut has joined #jruby
lopex[m]1 has quit [Ping timeout: 264 seconds]
lopex[m]1 has joined #jruby
<enebo[m]1>
hahah
fzakaria[m] has quit [Ping timeout: 250 seconds]
fzakaria[m] has joined #jruby
BlaneDabneyGitte has quit [Ping timeout: 268 seconds]
BlaneDabneyGitte has joined #jruby
<headius>
I have started filling in the blanks for Ractor
<headius>
It is pretty much an actor API but the isolation characteristics are still not clear to me. I think the most straightforward way to handle it would be to spin up a second jruby instance and marshall or otherwise transfer values across
<headius>
I'm not exactly sure how that's supposed to work with class definitions and patches and libraries because it sounds like the classes are supposed to be visible across ractors
<headius>
Which to me says they are still a massive hole in this isolation
<enebo[m]1>
headius: my understanding is classes must be loaded similarly in each ractor. I do not think class sharing exists the last time I saw a talk on it
<enebo[m]1>
I also thought there was severe limitations on what could be shared
<enebo[m]1>
I should probably look at modern docs though
<headius>
Ok that would be far better and trivially implementable with two JRuby instances
<headius>
In that case, if this becomes a popular api, we may look into options for sharing more between runtimes to reduce their size
<enebo[m]1>
well it does claim classes/modules are shared but then says data must be immutable
<headius>
Which could include things like IR and statically optimized jitted code that would be the same everywhere
<headius>
Yeah see that is what I read
<headius>
This half-isolation will be much more tricky to implement
<enebo[m]1>
but does that means the classes must be frozen?
<enebo[m]1>
If we know it cannot change then we really need to know what state can change
<headius>
If they're not doesn't that mean one ractor could screw up the methods in a different ractor
<enebo[m]1>
yeah you would think so
<headius>
I think this is always been the big open question for us and it seems like they just punted
<headius>
If the classes were isolated then we essentially have MVM and the implementation side on jruby would be trivial
<enebo[m]1>
oh wow it supports move semantics on unshareable objects
drbobbeaty_ has joined #jruby
<enebo[m]1>
That will just be marshal at some level
<enebo[m]1>
First pass could literally be marshal
<headius>
Yeah, worst case we would marshall the frozen guts to a new object but possibly could reattach an object to a different runtime
<headius>
Reattaching the object worries me because the old container is not supposed to be able to access it anymore. I have no idea how they enforce that on the heat given that there could be thousands of references to it
<headius>
Heap not heat
<enebo[m]1>
heat
<headius>
It all seems very loosey-goosey in any case
<enebo[m]1>
yeah I feel the same way
<enebo[m]1>
and the I_CLASS stuff is just them sharing a pointer which makes me wonder how well that will work
<enebo[m]1>
I guess my first wonderment is @@ and whether method tables can change
<enebo[m]1>
fwiw I am totally ok without ractor support at release time
<headius>
They do have a lot more off heap data then we do so it may be possible for them to share class and method structures without sharing mutable class data other than that
<headius>
Yeah I wanted to poke at this mostly to see how close we can come just wrapping a second jruby instance
<headius>
Other than open questions about class sharing, I think we can get pretty far
<enebo[m]1>
"Only the main Ractor can access instance variables of shareable objects."
<enebo[m]1>
"Only the main Ractor can access class variables."
<enebo[m]1>
This one is interesting: "Only the main Ractor can read constants which refer to the unshareable object."