<headius>
yeah that wouldn't be hard to do in indy
<chrisseaton>
objects have a shape, do the lookup of name in shape to get a property in slow path, then guard identity to shape
<chrisseaton>
then property.read(object) or whatever
<headius>
how usable are the specialized objects from Java?
<headius>
like from Java I can just hand someone a RubyArray and it has all the methods you'd expect
<headius>
I assume these objects have no behavior other than shaping
rueben has quit [Ping timeout: 276 seconds]
<chrisseaton>
They're just like an implementation of Map really
<headius>
yeah ok
<headius>
that's kinda what I thought
<headius>
so it's a magic map that optimially shapes itself to the situation, and the logic for what you put in it has to live elsewhere
<headius>
in your case, as truffle nodes that work with that map
<chrisseaton>
yeah
<headius>
you never have a normal looking Java object...that's a bit of a down side
<headius>
right now I'm looking at what it would take to have some specific-size RubyArray subclasses without overloading the world
<chrisseaton>
right, our implementation is not a Java API you'd want to work with
<headius>
I suppose for any Java integration you're going to have to copy everything in and out then
<chrisseaton>
RubyArray, RubyString etc are all just DynamicObject for us
<headius>
e.g. calling a Java API with an array, you have no List impl to pass
<headius>
thanks for the pointers
<chrisseaton>
We have a system for wrapping a Truffle object up into standard Java interfaces and calling back into Ruby methods that implement them, including with caching
<headius>
so you have to wrap objects going out like we wrap them coming in
<chrisseaton>
yeah
<chrisseaton>
There's no good lambda syntax for a runnable that returns nothing, is there? () -> { ...; return null; } I seem to have to do
<headius>
tradeoffs
<headius>
we always wanted to unify the hierarchies better
<headius>
seems like the truffle approach doesn't accomplish that either, unfortunately
<chrisseaton>
It's always going to be a leaky abstraction though isn't it? We decided to embrace the problem and not try to solve it
<headius>
it's not a leaky abstraction to call a method on RubyString
<chrisseaton>
Yes I suppose so
<chrisseaton>
This is also why we can't have Java extensions
<headius>
the integration I meant was having the rest of Ruby objects get Java class representations
<headius>
yeah I realize that now
<headius>
how's the caching for your java integraiton wrappers done?
<headius>
we used to guarantee they would say alive as long as the object did but it was a massive memory and throughput hit
<headius>
every call across the boundary had to do a complex map lookup
<chrisseaton>
I'm not sure
<chrisseaton>
It isn't used for anything serious yet I don't think
<headius>
ok
<headius>
if only we'd gotten interface injection at JVM level
<headius>
we'd both be a lot better off
<chrisseaton>
Doesn't the proxy thing accomplish that?
<headius>
well yeah, at a huge cost
<headius>
either you're burning cycles maintaining a cache of those proxies or you're burning cycles allocating and collecting htem
<headius>
in our experience maintaining the cache was worse
<headius>
hmm, a pool might be useful though
<headius>
oh, what am I saying, that would never work
<headius>
we'd have to know when the pooled object stopped being referenced by something in Ruby
<headius>
anyway, thanks...I'll have a look at DynamicObject and how you're using it
bbrowning_away has quit [Quit: Leaving]
<headius>
my pattern would probably be to have a few types of DynamicObject, one for Array, one for Hash, etc
prasunanand has quit [Ping timeout: 260 seconds]
rcvalle has quit [Quit: rcvalle]
<chrisseaton>
There's a new GraalVM on OTN btw
<GitHub192>
[jruby] chrisseaton pushed 2 new commits to master: https://git.io/voYIB
<GitHub192>
jruby/master 15d4bfc Chris Seaton: [Truffle] Don't invalidate modules when loading core nodes.
<GitHub192>
jruby/master 37dcc3b Chris Seaton: [Truffle] Parallelise loading core nodes.
<GitHub184>
[jruby] chrisseaton pushed 1 new commit to master: https://git.io/voYt0
<GitHub184>
jruby/master cd7ac37 Chris Seaton: [Truffle] Tweak some CI job names.
brauliobo_ has quit [Ping timeout: 276 seconds]
yfeldblum has quit [Remote host closed the connection]
<GitHub55>
[jruby] SquirrelGrip opened pull request #3958: Windows check should come first as the O_NONBLOCK does work under win… (master...master) https://git.io/voYOS
yfeldblum has joined #jruby
tjohnson has quit [Quit: Connection closed for inactivity]
johnsonch_afk is now known as johnsonch
subbu|away is now known as subbu
johnsonch is now known as johnsonch_afk
yfeldblum has quit [Remote host closed the connection]
etehtsea has joined #jruby
thedarkone2 has quit [Quit: thedarkone2]
pawnbox has joined #jruby
pawnbox has quit [Remote host closed the connection]
bruceadams has quit [Ping timeout: 250 seconds]
Scorchin has quit [Ping timeout: 250 seconds]
deepak has quit [Ping timeout: 250 seconds]
ekroon has quit [Ping timeout: 250 seconds]
talevy has quit [Ping timeout: 250 seconds]
zph_ has quit [Ping timeout: 250 seconds]
knowtheory has quit [Ping timeout: 260 seconds]
flavorjones has quit [Ping timeout: 260 seconds]
guilleiguaran__ has quit [Ping timeout: 260 seconds]
fidothe has quit [Ping timeout: 260 seconds]
mjc_ has quit [Ping timeout: 260 seconds]
lopex has quit [Ping timeout: 260 seconds]
pawnbox has joined #jruby
andrewvc has quit [Ping timeout: 272 seconds]
amdprophet has quit [Ping timeout: 272 seconds]
deathy has quit [Ping timeout: 260 seconds]
chrisseaton has quit [Ping timeout: 260 seconds]
electrical has quit [Ping timeout: 260 seconds]
knowtheory has joined #jruby
zph_ has joined #jruby
deathy has joined #jruby
talevy has joined #jruby
mjc_ has joined #jruby
deepak_ has joined #jruby
electrical has joined #jruby
ekroon has joined #jruby
guilleiguaran__ has joined #jruby
SynrG has quit [Ping timeout: 276 seconds]
chrisseaton has joined #jruby
amdprophet has joined #jruby
Scorchin has joined #jruby
bruceadams has joined #jruby
flavorjones has joined #jruby
fidothe has joined #jruby
lopex has joined #jruby
andrewvc has joined #jruby
etehtsea has quit [Quit: Computer has gone to sleep.]
etehtsea has joined #jruby
etehtsea has quit [Client Quit]
etehtsea has joined #jruby
knu has quit [Read error: Connection reset by peer]
pitr-ch has joined #jruby
knu has joined #jruby
lopex has quit [Ping timeout: 260 seconds]
lopex has joined #jruby
fidothe has quit [Ping timeout: 250 seconds]
flavorjones has quit [Ping timeout: 250 seconds]
skade has joined #jruby
flavorjones has joined #jruby
fidothe has joined #jruby
etehtsea has quit [Quit: Computer has gone to sleep.]
<GitHub59>
[jruby] perlun opened issue #3959: Intermittent NoMethodError in rspec https://git.io/voYEJ
etehtsea has joined #jruby
<GitHub147>
[jruby] kares force-pushed test-jossl-0.9.17 from 409109e to d77d2df: https://git.io/voYuf
<GitHub147>
jruby/test-jossl-0.9.17 c456a7b kares: let's test an upgrade to jruby-openssl 0.9.16
<GitHub147>
jruby/test-jossl-0.9.17 d77d2df kares: test out jruby-openssl 0.9.17 from staging
brauliobo_ has quit [Quit: Konversation terminated!]
norc has quit [Ping timeout: 264 seconds]
kith has joined #jruby
kith has quit [Changing host]
kith has joined #jruby
<GitHub124>
[jruby] monkstone opened pull request #3960: Fix Range#eql? that checks that start and end of range are same numeric type (master...master) https://git.io/voONH
shellac has joined #jruby
skade has quit [Quit: Computer has gone to sleep.]
digitalextremist has quit [Remote host closed the connection]
e_dub has joined #jruby
adgtl has quit [Disconnected by services]
subbu is now known as subbu|afk
adgtl has joined #jruby
norc_ has quit [Ping timeout: 264 seconds]
bbrowning has joined #jruby
rcvalle has joined #jruby
subbu|afk is now known as subbu
donV has joined #jruby
shellac has quit [Quit: Computer has gone to sleep.]