ur5us has quit [Ping timeout: 244 seconds]
ur5us has joined #jruby
ur5us has quit [Ping timeout: 260 seconds]
snickers has joined #jruby
ur5us has joined #jruby
snickers_ has joined #jruby
snickers has quit [Ping timeout: 246 seconds]
snickers_ has quit [Ping timeout: 246 seconds]
olleolleolle has quit [Ping timeout: 256 seconds]
olleolleolle has joined #jruby
ur5us has quit [Ping timeout: 244 seconds]
snickers has joined #jruby
nirvdrum has joined #jruby
snickers has quit [Ping timeout: 256 seconds]
nirvdrum has quit [Ping timeout: 258 seconds]
nirvdrum has joined #jruby
lailah023[m] has joined #jruby
<headius[m]> enebo: I did an experiment to pre-allocate a single IRReturnJump and IRBreakJump per thread but it's pretty hard to see any benefit
<headius[m]> I can push it as a PR but dunno if it's worth bothering
ur5us has joined #jruby
<lopex> numbers ?
<headius[m]> not very exciting ones!
<lopex> ones nonetheless
<headius[m]> it may be a gain but the overhead of actually dispatching and unrolling the block makes it hard to see any improvement
<lopex> all on the IR ?
<headius[m]> well we currently unroll the stack using a traceless RuntimeException subtype, for non-local breaks and returns
<headius[m]> because they carry a value, we construct a new one every time
<headius[m]> this is the same whether in interpreter or bytecode
<lopex> bleh reading backlog about your complains about final fields
<lopex> pitty
<headius[m]> hard to strike a balance between immutable and zero-allocation
<chrisseaton[m]> Yeah that's a big tension people don't talk about
<lopex> there's immutable and referentially transparent though
<chrisseaton[m]> And immutable gives you escape analysis until it works and then it gives you an avalanche of allocations
<lopex> well
<headius[m]> yes
<lopex> j.l.String is not immutable
<lopex> how does that help ?
<headius[m]> this is why we generally prefer zero-alloc even if it means more care is required to deal with mutability
<headius[m]> but we're working on a runtime, so we live by different rules
<lopex> one mutable field spoils the whole thing right ?
<lopex> or is that observable immutability ?
<chrisseaton[m]> It's also about identity
morozzzko[m] has joined #jruby
<headius[m]> morozzzko: we always recommend you file an issue if something seems wrong, but questions are fine here
<headius[m]> addTags is the one that you can't find?
<morozzzko[m]> Yes, it's the one
<morozzzko[m]> well, any tag-related methods don't seem to exist in the model.
<morozzzko[m]> It does seem a bit wrong, so I'll leave a trail via issues / documentations when I get a bit more information
<headius[m]> where does addTags come from?
<headius[m]> looking at structurizr core I don't see it on the Model class
<headius[m]> but I am not familiar with this library
nirvdrum has quit [Ping timeout: 264 seconds]
<morozzzko[m]> oh, well, it's in the reproduce.sh. It's in the ancestry path. It's defined at com.structurizr.model.ModelItem
<headius[m]> ah ok
<morozzzko[m]> When I run `javap` and inspect ModelItem, it seems like none of those methods are available via JRuby, which seems a bit off
<headius[m]> Model does not extend ModelItem
<headius[m]> get_model returns a ModelItem then?
<headius[m]> it seems to return a Model, not a ModelItem
<headius[m]> oh sorry I got my lines mixed
<headius[m]> ok so it has ModelItem in ancestry
<headius[m]> what's the error message from that? Just a NoMethodError?
<headius[m]> it does seem like it should be there
<headius[m]> it's varargs, but that should be ok
<headius[m]> ohh
<headius[m]> it's not a public class
<headius[m]> you couldn't call this from Java either
<headius[m]> ModelItem only has package visibility
<headius[m]> so we don't bind its methods in Ruby
<headius[m]> we have thought about binding the method but making it raise a more descriptive error, but it messes with method lookup a little bit
<headius[m]> what version of JRuby? This may be a case we fixed... there was a recent change to make methods visible that should be visible from a package-visibility class
<morozzzko[m]> Oh I see. I can call the method when I write the same code but with Kotlin, and it was weird that I can't do that in Ruby
<morozzzko[m]> That's a good start, thank you!
<morozzzko[m]> > jruby 9.2.11.1 (2.5.7) 2020-03-25 b1f55b1a40 OpenJDK 64-Bit Server VM 25.192-b12 on 1.8.0_192-b12 +jit [darwin-x86_64]
<headius[m]> like recent as in last week, 9.2.12
<headius[m]> yeah try 9.2.12 and see if that's better
<headius[m]> so annoying that github issues view doesn't let you see closed milestones anymore
<headius[m]> I do not understand that change
<headius[m]> hmm
<morozzzko[m]> Oh my. Well, I'm using asdf and they don't have the 9.2.12 yet, so I'll improvise. It'll take longer, but I'll try. Thank you!
<headius[m]> yeah I'm trying to find whether we fixed this particular case
<headius[m]> I think this might still be broken
<headius[m]> I'm going to say go ahead and open an issue
<headius[m]> you have a neat reproduction so that helps
<headius[m]> aha
<morozzzko[m]> Yup, still broken
<morozzzko[m]> > jruby 9.2.12.0 (2.5.7) 2020-07-01 db01a49ba6 OpenJDK 64-Bit Server VM 25.192-b12 on 1.8.0_192-b12 +jit [darwin-x86_64]
<headius[m]> there's an attached PR that was not resolved in time for 9.2.12
<morozzzko[m]> Alright, thank you! I'm going to go ahead and add more detail to the issue then
<headius[m]> drat
<headius[m]> it's more complicated than I had hoped so this is still an issue
<headius[m]> there's a workaround that should be ok I think
<headius[m]> one moment
<headius[m]> yeah this works
<headius[m]> you'll need it for any public method on a non-public class you want to access, but it works
<headius[m]> script runs fine then
<headius[m]> etc
<headius[m]> I will add that workaround to the original issue
<morozzzko[m]> That's amazing. Thank you!
<morozzzko[m]> I'll add all the context to the issue then
<headius[m]> ok after you add your context I will add this example specific to your case
<headius[m]> looks good, thank you
<headius[m]> seems like this fell under the radar so I've marked it for 9.3, our next release (soon hopefully)
<headius[m]> it might have been too invasive for an x.y.z release anyway
<morozzzko[m]> Thank you! It was pretty interesting. I'm extremely happy now. Loving my time with jruby now
<morozzzko[m]> ❤️
<headius[m]> that's great, hopefully you won't stumble over too many issues
<headius[m]> if you do, you know where to find us 😀
<headius[m]> kares:
<headius[m]> oops
<headius[m]> kares: if you have any thoughts on that PR we should discuss it... I'm still unsure about the best way to do this
den_d has quit [Ping timeout: 240 seconds]
<headius[m]> fidothe: I had not provided a workaround before but one is there now
lopex has quit [Ping timeout: 272 seconds]
Liothen has quit [Ping timeout: 260 seconds]
<headius[m]> fidothe: for context: https://github.com/jruby/jruby/issues/6197
Iambchop has quit [Ping timeout: 246 seconds]
fidothe has quit [Ping timeout: 260 seconds]