01:08
ur5us has quit [Ping timeout: 244 seconds]
01:41
ur5us has joined #jruby
05:27
ur5us has quit [Ping timeout: 260 seconds]
07:30
snickers has joined #jruby
08:20
ur5us has joined #jruby
08:25
snickers_ has joined #jruby
08:26
snickers has quit [Ping timeout: 246 seconds]
09:13
snickers_ has quit [Ping timeout: 246 seconds]
09:24
olleolleolle has quit [Ping timeout: 256 seconds]
09:24
olleolleolle has joined #jruby
11:01
ur5us has quit [Ping timeout: 244 seconds]
11:17
snickers has joined #jruby
12:36
nirvdrum has joined #jruby
13:11
snickers has quit [Ping timeout: 256 seconds]
16:44
nirvdrum has quit [Ping timeout: 258 seconds]
17:45
nirvdrum has joined #jruby
19:11
lailah023[m] has joined #jruby
19:17
<
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
19:17
<
headius[m] >
I can push it as a PR but dunno if it's worth bothering
20:59
ur5us has joined #jruby
21:49
<
headius[m] >
not very exciting ones!
21:49
<
lopex >
ones nonetheless
21:49
<
headius[m] >
it may be a gain but the overhead of actually dispatching and unrolling the block makes it hard to see any improvement
21:50
<
lopex >
all on the IR ?
21:50
<
headius[m] >
well we currently unroll the stack using a traceless RuntimeException subtype, for non-local breaks and returns
21:50
<
headius[m] >
because they carry a value, we construct a new one every time
21:51
<
headius[m] >
this is the same whether in interpreter or bytecode
21:55
<
lopex >
bleh reading backlog about your complains about final fields
21:55
<
headius[m] >
hard to strike a balance between immutable and zero-allocation
21:56
<
chrisseaton[m] >
Yeah that's a big tension people don't talk about
21:56
<
lopex >
there's immutable and referentially transparent though
21:56
<
chrisseaton[m] >
And immutable gives you escape analysis until it works and then it gives you an avalanche of allocations
21:56
<
lopex >
j.l.String is not immutable
21:56
<
lopex >
how does that help ?
21:56
<
headius[m] >
this is why we generally prefer zero-alloc even if it means more care is required to deal with mutability
21:57
<
headius[m] >
but we're working on a runtime, so we live by different rules
21:57
<
lopex >
one mutable field spoils the whole thing right ?
21:57
<
lopex >
or is that observable immutability ?
21:59
<
chrisseaton[m] >
It's also about identity
22:06
morozzzko[m] has joined #jruby
22:12
<
headius[m] >
morozzzko: we always recommend you file an issue if something seems wrong, but questions are fine here
22:13
<
headius[m] >
addTags is the one that you can't find?
22:13
<
morozzzko[m] >
Yes, it's the one
22:14
<
morozzzko[m] >
well, any tag-related methods don't seem to exist in the model.
22:14
<
morozzzko[m] >
It does seem a bit wrong, so I'll leave a trail via issues / documentations when I get a bit more information
22:15
<
headius[m] >
where does addTags come from?
22:15
<
headius[m] >
looking at structurizr core I don't see it on the Model class
22:15
<
headius[m] >
but I am not familiar with this library
22:15
nirvdrum has quit [Ping timeout: 264 seconds]
22:16
<
morozzzko[m] >
oh, well, it's in the reproduce.sh. It's in the ancestry path. It's defined at com.structurizr.model.ModelItem
22:16
<
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
22:16
<
headius[m] >
Model does not extend ModelItem
22:17
<
headius[m] >
get_model returns a ModelItem then?
22:17
<
headius[m] >
it seems to return a Model, not a ModelItem
22:18
<
headius[m] >
oh sorry I got my lines mixed
22:18
<
headius[m] >
ok so it has ModelItem in ancestry
22:18
<
headius[m] >
what's the error message from that? Just a NoMethodError?
22:19
<
headius[m] >
it does seem like it should be there
22:19
<
headius[m] >
it's varargs, but that should be ok
22:19
<
headius[m] >
it's not a public class
22:19
<
headius[m] >
you couldn't call this from Java either
22:20
<
headius[m] >
ModelItem only has package visibility
22:20
<
headius[m] >
so we don't bind its methods in Ruby
22:21
<
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
22:22
<
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
22:22
<
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
22:22
<
morozzzko[m] >
That's a good start, thank you!
22:22
<
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]
22:22
<
headius[m] >
like recent as in last week, 9.2.12
22:22
<
headius[m] >
yeah try 9.2.12 and see if that's better
22:23
<
headius[m] >
so annoying that github issues view doesn't let you see closed milestones anymore
22:24
<
headius[m] >
I do not understand that change
22:25
<
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!
22:25
<
headius[m] >
yeah I'm trying to find whether we fixed this particular case
22:26
<
headius[m] >
I think this might still be broken
22:28
<
headius[m] >
I'm going to say go ahead and open an issue
22:28
<
headius[m] >
you have a neat reproduction so that helps
22:30
<
morozzzko[m] >
Yup, still broken
22:30
<
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]
22:30
<
headius[m] >
there's an attached PR that was not resolved in time for 9.2.12
22:30
<
morozzzko[m] >
Alright, thank you! I'm going to go ahead and add more detail to the issue then
22:31
<
headius[m] >
it's more complicated than I had hoped so this is still an issue
22:31
<
headius[m] >
there's a workaround that should be ok I think
22:32
<
headius[m] >
one moment
22:35
<
headius[m] >
yeah this works
22:36
<
headius[m] >
you'll need it for any public method on a non-public class you want to access, but it works
22:37
<
headius[m] >
script runs fine then
22:37
<
headius[m] >
I will add that workaround to the original issue
22:37
<
morozzzko[m] >
That's amazing. Thank you!
22:37
<
morozzzko[m] >
I'll add all the context to the issue then
22:39
<
headius[m] >
ok after you add your context I will add this example specific to your case
22:45
<
headius[m] >
looks good, thank you
22:45
<
headius[m] >
seems like this fell under the radar so I've marked it for 9.3, our next release (soon hopefully)
22:47
<
headius[m] >
it might have been too invasive for an x.y.z release anyway
22:48
<
morozzzko[m] >
Thank you! It was pretty interesting. I'm extremely happy now. Loving my time with jruby now
22:48
<
headius[m] >
that's great, hopefully you won't stumble over too many issues
22:48
<
headius[m] >
if you do, you know where to find us 😀
22:49
<
headius[m] >
kares:
22:49
<
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
22:50
den_d has quit [Ping timeout: 240 seconds]
22:50
<
headius[m] >
fidothe: I had not provided a workaround before but one is there now
22:50
lopex has quit [Ping timeout: 272 seconds]
22:50
Liothen has quit [Ping timeout: 260 seconds]
22:52
Iambchop has quit [Ping timeout: 246 seconds]
22:52
fidothe has quit [Ping timeout: 260 seconds]